简介
Horn–Schunck光流算法用一种全局方法估计图像的稠密光流场(即对图像中的每个像素计算光流)
算法基于两个假设
- 灰度不变假设
物体上同一个点在图像中的灰度是不变的,即使物体发生了运动。(这个假设在稳定光照的情况可以满足,但是对于存在高光反射的图像是不成立的) - 光流场平滑假设
场景中属于同一物体的像素形成光流场向量应当十分平滑,只有在物体边界的地方才会出现光流的突变,但这只占图像的一小部分。总体来看图像的光流场应当是平滑的。
算法构造了一个能量函数,求光流场的问题转化为求能量函数的最小值。
数学模型
给定图像序列 I(x,y,t) I ( x , y , t ) ,求光流场 V→(x,y) V → ( x , y ) ,等价于求光流的两个分量 u(x,y) u ( x , y ) 和 v(x,y) v ( x , y )
定义能量函数
E(u,v)=∬[(Ixu+Iyv+It)2+α2(∥∇u∥2+∥∇v∥2)]dxdy E ( u , v ) = ∬ [ ( I x u + I y v + I t ) 2 + α 2 ( ‖ ∇ u ‖ 2 + ‖ ∇ v ‖ 2 ) ] d x d y
其中 Ix,Iy,It I x , I y , I t 分别是图像对 x,y,t x , y , t 的导数
(Ixu+Iyv+It)2 ( I x u + I y v + I t ) 2 是灰度变化因子( Ixu+Iyv=−It