Horn–Schunck光流算法[1]是一種全局方法估算光流場。
參考博文:https://blog.csdn.net/hhyh612/article/details/79216021
假設條件:
HS算法除了需要滿足LK光流前兩個假設之外,增加了一個假設條件:
場景中屬於同一物體的像素形成光流場向量應當十分平滑,只有在物體邊界的地方才會出現光流的突變,但這只占圖像的一小部分,總體上來看圖像的光流場應當是平滑的。
數學原理推導:
仍然是兩幀圖像I(x, y, t), 和I(x+δx, y+δy, z+δz, t+δt )。要求他們之間的光流場V(u, v):
首先定義一個能量函數, 如下:
這個能量函數的前半部分是灰度變化因子,如下:
后半部分是平滑因子,如下:
理想的光流場,應該使這兩項的值最小:即灰度變化小(亮度恆定)並且速度變化小(小運動)。
這是一個泛函的極值問題,可以用歐拉-拉格朗日方程求解。對應上式的是雙變量雙函數一階導數的歐拉-拉格朗日方程組
其中上式中:
求導, 得到下式:
上式中Δ是拉普拉斯算子操作:
實際計算中可以用下面的式子代替拉普拉斯操作:
拉普拉斯操作替換后化簡為下式:
這是一個線性方程組,但是首先要求取u,v的均值,然而u, v的均值也是未知的,因此可以繼續化簡上式,分別消去u和v,得到下面的迭代公式:
有了迭代公式后,u, v均值的初始值為0,計算出u, v值,然后依次迭代。直到滿足如下條件,退出迭代,得到光流u, v值:
其中:
源碼及效果:
源碼鏈接:https://blog.csdn.net/xiaoyufei117122/article/details/53693627
效果如下:
[1] B.K.P. Horn and B.G. Schunck, “Determining optical flow.” 1981