Review on Optical Flow Research
Overview
What is Optical Flow?
? ? ? ?光流(optic flow)是什么呢?名字很專業(yè),感覺(jué)很陌生,但本質(zhì)上,我們是最熟悉不過(guò)的了。因?yàn)檫@種視覺(jué)現(xiàn)象我們每天都在經(jīng)歷。從本質(zhì)上說(shuō),光流就是你在這個(gè)運(yùn)動(dòng)著的世界里感覺(jué)到的明顯的視覺(jué)運(yùn)動(dòng)(呵呵,相對(duì)論,沒(méi)有絕對(duì)的靜止,也沒(méi)有絕對(duì)的運(yùn)動(dòng))。例如,當(dāng)你坐在火車上,然后往窗外看。你可以看到樹(shù)、地面、建筑等等,他們都在往后退。這個(gè)運(yùn)動(dòng)就是光流。而且,我們都會(huì)發(fā)現(xiàn),他們的運(yùn)動(dòng)速度居然不一樣?這就給我們提供了一個(gè)挺有意思的信息:通過(guò)不同目標(biāo)的運(yùn)動(dòng)速度判斷它們與我們的距離。一些比較遠(yuǎn)的目標(biāo),例如云、山,它們移動(dòng)很慢,感覺(jué)就像靜止一樣。但一些離得比較近的物體,例如建筑和樹(shù),就比較快的往后退,然后離我們的距離越近,它們往后退的速度越快。一些非常近的物體,例如路面的標(biāo)記啊,草地啊等等,快到好像在我們耳旁發(fā)出嗖嗖的聲音。
? ? ? ?光流除了提供遠(yuǎn)近外,還可以提供角度信息。與咱們的眼睛正對(duì)著的方向成90度方向運(yùn)動(dòng)的物體速度要比其他角度的快,當(dāng)小到0度的時(shí)候,也就是物體朝著我們的方向直接撞過(guò)來(lái),我們就是感受不到它的運(yùn)動(dòng)(光流)了,看起來(lái)好像是靜止的。當(dāng)它離我們?cè)浇?#xff0c;就越來(lái)越大(當(dāng)然了,我們平時(shí)看到感覺(jué)還是有速度的,因?yàn)槲矬w較大,它的邊緣還是和我們?nèi)搜劬哂写笥?的角度的)。
- 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加速光流法
? ? 光流的計(jì)算較為耗時(shí),以往我們能夠?qū)崟r(shí)應(yīng)用的光流基本都是稀疏光流(如Lucas Kanade光流法,可用于物體跟蹤等。其基本思想是提取一些好的特征點(diǎn) GoodFeaturestoTrack,對(duì)這些特征點(diǎn)利用鄰域光流一致性的假設(shè)進(jìn)行計(jì)算)。而稠密光流(Dense flow)則只是一種理論上的東西。
? ?這樣的尷尬局面被GPU完全打破了!由于稠密光流是對(duì)每一個(gè)點(diǎn)均計(jì)算光流,而且每個(gè)點(diǎn)的計(jì)算工作基本是相同的,這樣的特點(diǎn)極易寫成并行程序。opencv3.0 實(shí)現(xiàn)的Dense flow 總共有5個(gè),分別是: Brox,fastBM,LK,Farn以及TV-L1。下一篇文章會(huì)詳細(xì)介紹這些光流法的基本原理,這一篇本著先看工程效果的態(tài)度測(cè)試一下這些光流
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
- Berthold K.P. Horn and Brian G. Rhunck. Determining Optical Flow. 1981.
- G. Farneback , “Two-frame Motion Estimation based on Polynomial Expansion”, 13th Scandinavian Conference, SCIA 2003 Halmstad, Sweden, June 29 – July 2, 2003.
- T. Brox, A. Bruhn, N. Papenberg, and J.Weickert. High accuracy optical flow estimation based on a theory for warping. In?European Conference on Computer Vision?(ECCV), pages 25–36, 2004.?
- A. Bruhn, J.Weickert and C. Schn¨orr. Lucas/Kanade meets Horn/Schunk: combining local and global optical flow methods.?International Journal of Computer Vision?(IJCV), 61(3):211–231, 2005.
- C. Zach, T. Pock, H. Bischof. A duality based approach for realtime tv-l1 optical flow?(2007)
- Javier Sánchez Pérez, Enric Meinhardt-Llopis, and Gabriele Facciolo,?TV-L1 Optical Flow Estimation,?Image Processing On Line,3?(2013), pp.?137–150.?https://doi.org/10.5201/ipol.2013.26
- http://www.cs.toronto.edu/~fleet/research/Papers/flowChapter05.pdf
- A Database and Evaluation Methodology for Optical Flow (http://vision.middlebury.edu/flow/floweval-ijcv2011.pdf)
Selected Post & Repo
- Particle Video
- http://docs.opencv.org/3.2.0/d7/d8b/tutorial_py_lucas_kanade.html
- 光流Optical Flow介紹與OpenCV實(shí)現(xiàn)
- OPENCV3.0 GPU加速光流法(1)
- http://vision.middlebury.edu/flow/
Source Code
- http://cs.brown.edu/~black/code.html
- https://github.com/scienceopen/barron-optflow
- Optical Flow Matlab/C++ Code
- Github:?Comparisons between available optical flow implementations.
轉(zhuǎn)載于:https://www.cnblogs.com/casperwin/p/6376534.html
總結(jié)
以上是生活随笔為你收集整理的Review on Optical Flow Research的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 把一个函数作为参数传入到函数中
- 下一篇: Docker Inspect