光流在計算機視覺中,指的是計算兩張連續的影像中每個像素點的位移,所得到的密集運動場,稱為光流。而光流又分為 Global Optical flow 以及 Local optical flow,前者如 Horn-Schunck 光流法,後者如 Lucas Kanade 光流法;本篇提及的光流法:RLOF: Robust Local Optical Flow 主要以 Lucas Kanade 為架構,改變一些計算光流方式,希望得到更好的結果。
在 Lucas Kanade 的假設有兩項:亮度恆定不變以及光流平滑變化。然而這兩個條件多半難以成立,因此 RLOF 針對兩項做改善。
將原本的最小平方法改成使用 Hampel estimator。 原本最小平方法對於異常值的懲罰較低,所以若分佈不是高斯分佈,就容易出錯,如圖一的b、c、d。所以論文將最小平方法改成使用 Hampel estimator ,使得模型更加 Robust,較不容易受到異常值影響。
圖一:(a) 殘差分佈符合計算結果(b)涉及兩個不同運動的分佈和計算結果(c)受到陰影變化影響(d)不同的運動使得部分pixel被遮蔽。
新增 Linear illumination model。 陰影、移動光源、天氣變化等等都會影響到光線照明,所以將原本的亮度不變做了修正:
其中 m,c為x點上的光照參數,而d該物體的位移量。多考慮點上原有的光線參數,可以降低計算誤差,如圖二。
圖二:左圖為沒有 Linear illumination model的結果,右邊為有 Linear illumination model的結果。在最底部的圖中,越紅代表誤差大,越藍代表誤差小。可以發現後者的誤差較小。
Global motion estimation(GME) 因應大位移的運動,RLOF也採用 coarse to fine 的金字塔處理,但因為一直往下迭代會導致誤差傳遞,所以作者將原本的 initial guess 從 0 開始,改為使用全局的運動估計當作 initial guess。計算全局的運動估計的方法為 eight-parameter perspective model,先透過觀察相機自身移動造成的位移,再進一步用RLOF計算更精細的光流,如圖三。
圖三:左圖為GME結果,右圖為GME+RLOF結果
本篇主要參考該作者的兩篇論文,”Robust Local Optical Flow for Feature Tracking.” 和 ”Robust local optical flow: Long-range motions and varying illuminations.” 由於筆者也仍在學習階段,其他置於其他篇的未提及之技術和本文沒有詳列的數學細節可以參考該研究的論文[3],opencv上亦能用看看此算法計算光流。