标签:
IT/科技科学 |
http://www.cnblogs.com/images/cnblogs_com/leezjs/motion.jpg
动作捕捉算法
作者:Andrew Kirillov
一个捕捉视频流中动作的算法:
介绍
捕捉联系视频流中的动作有很多种算法。每种算法都是基于将视频流中当前一帧与前一帧(被看作背景)比较。在本篇文章中,将讨论一些最常用的动作捕捉方法 。
在描述这个算法的时候,我将用到一个图像处理类库 Image Processing Lab in C#. 这是我以前写的。所以,如果你看过那篇文章,那将会有很大的帮助。
本程序支持下面的视频格式:
- AVI
文件 (用到windows视频,所以要用到interop库); - 通过网络照相机不断更新的JPEG图像;
- 通过网络照相机传输的MJPEG (motion JPEG)流 ;
- MMS流- Microsoft Media Services;
- 本机视频捕捉系统(USB照相机、摄像头或其它设备).;
算法
在所有的动作捕捉算法中,最常用的是将当前帧与前一帧比较。当你在视频压缩中只需要记录变化,而不是完整的一帧的时候相当的有用,
但他不是动作捕捉的最好方法。所以,接下去我将详细讲述令一个方法。
假设我有一张原始的24 bpp RGB的图像叫做当前帧(图像)
,一个降色调的复制版本(当前帧的)和一个前一帧的降色调复制版本 Difference和Threshold 方法过滤。
http://www.cnblogs.com/Images/OutliningIndicators/None.gifDifference
http://www.cnblogs.com/Images/OutliningIndicators/None.gifIFilter
http://www.cnblogs.com/Images/OutliningIndicators/None.gif//
http://www.cnblogs.com/Images/OutliningIndicators/None.gifdifferenceFilter.OverlayImage
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
http://www.cnblogs.com/Images/OutliningIndicators/None.gifBitmap
http://www.cnblogs.com/Images/OutliningIndicators/None.gifBitmap
在这个步骤中,我们可以得到一张图片,当前帧与背景帧中不同的地方,都已经被着成白色。现在,已经可以数出两张图上不同像素点的数目。当这个数目大于一个事先定义好的数字时,我们便可以标注为一个动作事件。
但是,大多数相机照出的照片,都有杂点,所以很有可能在没有任何动作的时候,程序会认为有新的动作发生了。要去处照片上随即的杂点(random
noisy pixels), Erosion
filter。
http://www.cnblogs.com/Images/OutliningIndicators/None.gifIFilter
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
http://www.cnblogs.com/Images/OutliningIndicators/None.gifBitmap
一个最简单的动作捕捉器已经搞好了,如果需要的话我们可以让有动作的区域高亮显示。
http://www.cnblogs.com/Images/OutliningIndicators/None.gifIFilter
http://www.cnblogs.com/Images/OutliningIndicators/None.gifBitmap
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
http://www.cnblogs.com/Images/OutliningIndicators/None.gifMerge
http://www.cnblogs.com/Images/OutliningIndicators/None.gifmergeFilter.OverlayImage
http://www.cnblogs.com/Images/OutliningIndicators/None.gifBitmap
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
http://www.cnblogs.com/Images/OutliningIndicators/None.gifReplaceChannel
http://www.cnblogs.com/Images/OutliningIndicators/None.gifreplaceChannel.ChannelImage
http://www.cnblogs.com/Images/OutliningIndicators/None.gifBitmap
下面便是结果:
http://www.cnblogs.com/images/cnblogs_com/leezjs/1.jpg

加载中…