光流
opencv真是给懒人的大礼啊.今天开始研究光流.看到网上很多帖子,理解的粗浅的很,却也是在用光流法.我觉得要想真正学好这个方法,还要从理论上,好好理解.
opencv上,实现了三种方法,bm,lk,hs.
以后记得研究一下骨架算法,没准就会用到.
4.8号补充
我没有严格推倒,只是把算法思想写下来。
光流不等于运动,光流是光强场的运动。由于图像序列已知,所以某点光强随时间的变化已知,即dI/dt。运动也造成了光强的变化,即dI/dx *u+dI/dy *v。而某点的照度是不变的,所以dI/dt=dI/dx *u+dI/dy *v。这就是Horn先生提出的光流基本约束。当然,可以从数学上完美的推出,但是我觉得这样更好理解,道理很简单。
这样,速度有了一个约束,还要一个。也简单,就是找同一目标的一些点,得到他们的共有的速度,就是了。HS方法用“相邻的点有相似的光流”,LK用“相邻的点有相同的光流”,本质思想一样,得到一个可以极小化的目标函数,求出最优的光流。
具体算法参考《机器视觉》——张广军
运用时有一个问题,就是当前的计算结果依赖于前面的数据。各种处理方法需要前十几帧到三、四帧不等。