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來計算稠密光流并且用孟塞爾顏色系統(tǒng)來顯示的結果圖中员串,不同顏色表示不同的運動方向菩掏,深淺就表示運動的快慢了”
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)坐標點,也就是背景矢量最集中的位置(圖中點的亮度越大代表該位置矢量的密度越大)募逞,如紅圈所示,紅圈外面的矢量就可以認為是運動目標了,如右圖所示馋评。