什么是optical flow

1、optical flow (光流) 表示的是相邻两帧图像中每个像素的运动速度和运动方向。第t帧的时候A点的位置是(x1, y1),那么我们在第t+1帧的时候再找到A点(能在下一帧中找到A点,就需要用到计算光流的各种方法,在openCI中可以实现),假如它的位置是(x2,y2),那么我们就可以确定A点的运动了:(ux, vy) = (x2, y2) - (x1,y1)

然后将多个光流图进行累加,就能表示物体的运动轨迹,我自己是把它理解为像是在慢快门下拍车流形成的图(当然,我不知道这样理解是否正确)

2、关于光流图是否是灰度图像,查阅相关资料后我的结论是,光流图是灰度图像,可以将从光流图转换成彩色图进行显示。在一篇博客(http://bbs.elecfans.com/jishu_485979_1_1.html)中说,“光流场是图片中每个像素都有一个x方向和y方向的位移,所以在上面那些光流计算结束后得到的光流flow是个和原来图像大小相等的双通道图像”

(这是Two-Stream Convolutional Networks for Action Recognition in Videos论文中显示的x,y通道图像)

而在例如用openCI中的“calcOpticalFlowFarneback来计算稠密光流并且用孟塞尔颜色系统来显示的结果图中,不同颜色表示不同的运动方向,深浅就表示运动的快慢了”

3、光流法的大致流程如下(原文地址:http://www.cnblogs.com/easymind223/archive/2012/12/30/2839480.html):

 ①在一帧图像中选取大量的光流点(具体选取方法可以不同,如fast角点,随机选,等间隔选...)。

 ②计算所有光流点的运动矢量(常用方法有LK光流,HS光流等)。

 ③根据这些矢量和其它一些特征检测运动目标。

具体如下:1.首先在一帧图像内随机均匀选取k个点,并滤除那些邻域纹理太光滑的点,因为这些点不利于计算光流 2.计算这些点与上一帧图像的光流矢量,如上右图,此时已经可以看出背景运动的大概方向了 3.接下来的这一步方法因人而异了。2007年cvpr的一篇文章Detection and segmentation of moving objects in highly dynamic scenes的方法是把这些光流点的(x, y, dx, dy, Y, U, V)7个特征通过meanshift聚类来聚合到一起,最后形成运动目标轮廓。而我的方法很简单,只用到了(dx, dy)两个特征,如左图,首先把所有光流点投射到直角坐标,图中的坐标轴是(dx,dy), 然后通过meanshift找到密度最大的(dx, dy)坐标点,也就是背景矢量最集中的位置(图中点的亮度越大代表该位置矢量的密度越大),如红圈所示,红圈外面的矢量就可以认为是运动目标了,如右图所示。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • [TOC] 音视频&流媒体 是什么促使我要写这一篇音视频入门文章?那是因为和一妹子打赌码率的概念,结果输了;对一个...
    AllenWu阅读 4,917评论 1 24
  • 硬件编码相关知识(H264,H265) 阅读人群:研究硬件编码器应用于iOS开发中,从0研究关于硬件编解码,码流中...
    小东邪啊阅读 12,840评论 0 18
  • 好记性不如烂键盘,持续整理了一下视频里面一些基础的概念。 文件格式 封装格式 视频编解码方式H.26X 系列MPE...
    vedon_fu阅读 2,268评论 0 3
  • 在目前,无论在各个行只要和视频相关的,我们都可以看见H264相关的身影,H264作为目前使用最广泛的视频压缩标准,...
    DramaScript阅读 21,713评论 7 56
  • 三年前的大约这个时候,我守在电脑前,靠着运气和一栋楼的人抢着带宽。我记得那一集是在什么岛上。室内外的温差让窗户上蒙...
    兰溪人在纽约_阅读 570评论 0 1