無人機光流定位系列——(一)原理剖析
這次參加深圳的高交會,在qualcomm展區看到了多款mini無人機,大家稍微細心一點就可以發現這些無人機都使用了一種叫光流定位的技術,很多人可能都還不明白光流定位是個什麼東西,是如何進行定位的,今天就帶大家一起來了解一下光流定位的原理。
在無人機上光流定位通常是藉助於無人機底部的一個攝像頭採集影象資料,然後採用光流演算法計算兩幀影象的位移,進而實現對無人機的定位,這種定位手段配合GPS可以在室外實現對無人機的精準控制,並且在市內沒有GPS訊號的時候,也可以實現對無人機的高精度的定位,實現更加平穩的控制。
在光流理論中,前提是下面兩個假設成立:
1)攝像頭採集到的兩幀影象之間的畫素灰度不變;
2)相鄰的兩幀畫素具有相對運動;
根據第一個假設,如果兩幀的灰度值不變,那麼有以下關係成立:
其中 I(x,y,t)表示在時間dt後移動到第二幀影象(x+dx,y+dy)的位置,採用泰勒級數對兩邊進行展開,消去相同的項,就可以得到如下方程:
其中:
以上就是光流方程,其中fx和fy表示影象的梯度,ft表示時間梯度,但是上述方法是無法得到(u,v),因為一個等式無法求解兩個未知數,為了解決這個問題,我們可以採用經典的lucas-Kanade方法來進行求解。
在lucas-Kanade方法中,我們需要用到我們第二個假設了,即在目標點的鄰域內所有的點都具有相似的運動,這就是lucas-kanade方法的核心,基於該假設,其利用一個3X3鄰域中的9個點具有相同運動得到9個光流方程,然後採用最小二乘進行擬合求解,最終得到(u,v)如下:
以上就是光流法計算畫素點的移動速度的方法,在使用的時候,我們只需要對影象中的一些點去跟蹤,採用上面的方法就可以計算得到光流向量,根據得到的光流向量,就可以進一步優化無人機的姿態控制,實現更加準確的控制。後期我們將在該理論的基礎上,結合dragonboard 410c和opencv影象處理庫,進一步介紹如何在dragonboard 410c上用opencv來實現光流跟蹤。