學習筆記 | Review on Optical Flow Research


Overview

What is Optical Flow?

       光流(optic flow)是什么呢?名字很專業,感覺很陌生,但本質上,我們是最熟悉不過的了。因為這種視覺現象我們每天都在經歷。從本質上說,光流就是你在這個運動着的世界里感覺到的明顯的視覺運動(呵呵,相對論,沒有絕對的靜止,也沒有絕對的運動)。例如,當你坐在火車上,然后往窗外看。你可以看到樹、地面、建築等等,他們都在往后退。這個運動就是光流。而且,我們都會發現,他們的運動速度居然不一樣?這就給我們提供了一個挺有意思的信息:通過不同目標的運動速度判斷它們與我們的距離。一些比較遠的目標,例如雲、山,它們移動很慢,感覺就像靜止一樣。但一些離得比較近的物體,例如建築和樹,就比較快的往后退,然后離我們的距離越近,它們往后退的速度越快。一些非常近的物體,例如路面的標記啊,草地啊等等,快到好像在我們耳旁發出嗖嗖的聲音。

       光流除了提供遠近外,還可以提供角度信息。與咱們的眼睛正對着的方向成90度方向運動的物體速度要比其他角度的快,當小到0度的時候,也就是物體朝着我們的方向直接撞過來,我們就是感受不到它的運動(光流)了,看起來好像是靜止的。當它離我們越近,就越來越大(當然了,我們平時看到感覺還是有速度的,因為物體較大,它的邊緣還是和我們人眼具有大於0的角度的)。

  • Given a set of points in an image, find those same points in another image.
  • Or, given point [ux, uy]T in image I1 find the point [ux + δx, uy + δy]T in image I2 that minimizes ε:
  • Tracking points (“features”) across multiple images is a fundamental operation in many computer vision applications:
    • To find an object from one image in another.
    • To determine how an object/camera moved.
    • To resolve depth from a single camera. …or stereo.

GPU加速光流法

    光流的計算較為耗時,以往我們能夠實時應用的光流基本都是稀疏光流(如Lucas Kanade光流法,可用於物體跟蹤等。其基本思想是提取一些好的特征點 GoodFeaturestoTrack,對這些特征點利用鄰域光流一致性的假設進行計算)。而稠密光流(Dense flow)則只是一種理論上的東西。

   這樣的尷尬局面被GPU完全打破了!由於稠密光流是對每一個點均計算光流,而且每個點的計算工作基本是相同的,這樣的特點極易寫成並行程序。opencv3.0 實現的Dense flow 總共有5個,分別是: Brox,fastBM,LK,Farn以及TV-L1。下一篇文章會詳細介紹這些光流法的基本原理,這一篇本着先看工程效果的態度測試一下這些光流

Dense/sparse optical flow (with simple block matching, pyramidal LucasKanade, Brox, Farnebac, TV-L1) gpu::FastOpticalFlowBM(), ::PyrLKOpticalFlow, ::BroxOpticalFlow(), ::FarnebackOpticalFlow(), ::OpticalFlowDual_TVL1_GPU(), ::interpolateFrames()

Cuda Accelarated Optical Flow

OpenCV 3 LINK: http://docs.opencv.org/3.1.0/d7/d3f/group__cudaoptflow.html

Selected Paper

Selected Post & Repo

Source Code


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM