目錄
1.測速/測距應用介紹
2.光流演算法
以下摘自 光流測速和視覺里程計
兩種已經比較成熟的視覺感知系統:光流測速模組和視覺里程計。
光流測速模組顧名思義,只能測速度。通常乙個光流測速模組由乙個相機、乙個慣性測量元件、乙個超聲波模組構成,它的主要原理是計算機視覺技術中於2023年被發展出來的「光流追蹤」演算法。
「光流」的概念最早在2023年代由心理學家和生物學家提出,指的是乙個觀察者和他在觀察的事物發生相對運動時,這些事物在他眼前成的像會產生「運動的模式」,人腦利用這種「運動的模式」能夠更靈敏地感知周圍什麼東西在動。比如下圖中,讀者一看就可以直觀理解「光流」的意義。後來計算機科學家布魯斯-盧卡斯和金出武雄在2023年發明了lucas-kanade演算法,通過演算法計算出連續拍攝的上的光流,並證明了光流可以反解出相對運動的速度。雖然三十多年來,lucas-kanade演算法始終被公認為最好的「光流追蹤」演算法,但是它有比較大的侷限性,它包含很多假設,比如假設連續的平均亮度相同,比如假設中的物體只發生平面運動等等。另外,光流演算法算出的速度是沒有尺度的,因為相機影象的單位是畫素,所以光流演算法只能給出「你現在的速度是10個畫素每秒」,但是沒法算出10個畫素是1厘公尺還是1公尺。恢復尺度的方式是增加乙個超聲波模組測量平面運動離相機的距離,這樣就能夠把畫素運動轉換成真實的運動。最後,如果要讓光流測速模組在晃來晃去的多旋翼飛行器上也能使用,通過慣性測量元件找出影象所代表的平面也是必不可少的,這一點需要在演算法上進行兩種感測器很好的配合。
光流演算法原理上只可以測三維速度,不能直接測量三維位置。我們同樣可以通過把光流測速模組測出的三維速度積分獲得三維位置,但是就像慣性測量元件積分會發散一樣,光流測速模組積分得到的位置也會發散。好在它不會天馬行空地失去控制,和組合導航技術中除了gps之外的感測器妥善融合之後,它可以做到懸停時測量的位置不發散。因此可以說光流測速模組只在有限的條件下能夠替代gps。
光流測速模組已經形成了非常標準的解決方案。大疆悟以及精靈3上都裝載了自主研發的光流測速模組,另外著名的開源飛控產品pixhawk中包含了乙個叫做px4flow的光流測速模組,並且開源了所有的**和硬體方案。所以光流測速模組目前已經廣泛出現在了各大廠商的多旋翼飛行器產品上。視覺里程計相比光流測速模組,增加了直接測量位置的能力,所以才叫「里程計」。視覺里程計比光流測速模組能力更強,效能更好。
讀者可能會問,為什麼聽起來視覺里程計和光流測速模組參與的感測器數量差不多(光流測速模組甚至還多乙個超聲波模組),但是視覺里程計能力反而更強呢。這裡的原因不在於感測器硬體,而在軟體演算法上。前面已經說到光流追蹤演算法有很多簡化的假設,只能測量平面運動,增加其他感測器硬體一定程度上是為了把那些為了計算方便而簡化掉的因素重新彌補起來。
而視覺里程計算法則複雜得多,它不僅要通過影象反推出視野中物體的平面運動,還要反推出這些物體的三維位置,並且基於這些物體的三維位置做很多次的優化計算,演算法複雜度成倍於光流測速模組。有些視覺里程計的演算法甚至包含完整的光流追蹤的演算法,但是僅僅把計算光流作為預處理影象的步驟。
視覺里程計能夠直接測量位置,測量值也比較準確,不會像光流測速模組那樣發散。通常比較優秀的視覺里程計飛100公尺之後只會積累十幾厘公尺到幾十厘公尺的誤差,這個測量水平比起飛彈上幾百萬的慣性測量元件還是差了不少,但是考慮到視覺里程計的**極其低廉,對比起來它的價效比非常高。
視覺里程計有幾個不同層次的難度,最簡單的是兩個相機構成的雙目立體視覺系統加慣性測量元件,最難的是乙個相機構成的單目視覺系統加慣性測量元件。如果視覺里程計和光流測速模組硬體一致,那麼這裡的視覺里程計採用的是單目視覺系統。目前,雙目立體視覺系統加慣性測量元件實現自身狀態觀測已經是比較完善的技術,而單目視覺系統則是活躍的研究方向,世界上做這個研究方向較好的大學有美國的賓夕法尼亞大學、瑞士的蘇黎世聯邦理工學院、英國的牛津大學、我國的香港科技大學和其他一些歐美院校。
光流演算法是怎樣的?為何要結合pyrmid?
為什麼要用金字塔?因為lk演算法的約束條件即:小速度,亮度不變以及區域一致性都是較強的假設,並不很容易得到滿足。如當物體運動速度較快時,假設不成立,那麼後續的假設就會有較大的偏差,使得最終求出的光流值有較大的誤差。構建影象金字塔可以解決大運動目標跟蹤,也可以一定程度上解決孔徑問題(相同大小的視窗能覆蓋大尺度上盡量多的角點,而這些角點無法在原始上被覆蓋)。
考慮物體的運動速度較大時,演算法會出現較大的誤差。那麼就希望能減少影象中物體的運動速度。乙個直觀的方法就是,縮小影象的尺寸。假設當影象為400×400時,物體速度為[16 16],那麼影象縮小為200×200時,速度變為[8,8]。縮小為100*100時,速度減少到[4,4]。所以光流可以通過生成 原影象的金字塔影象,逐層求解,不斷精確來求得。簡單來說上層金字塔(低解析度)中的乙個畫素可以代表下層的兩個。
————————————————
lucas–kanade光流演算法
以下參考可以看到光流追蹤效果
運動目標檢測(3)—光流法
視覺里程計學習
大四要做畢業設計了,因為保送去了外校,決定畢業 跟研究生導師做。研究生導師是做gps導航的,想發展視覺導航方向,就想讓我做視覺里程計,嘗試把視覺定位研究一下。基本沒有計算機視覺的基礎的我,就這樣子誤打誤撞進了計算機這個深坑。後來發現了清華博士高翔寫的閒半居士部落格,在這裡有了乙個簡單的入門。他這裡還...
里程計 推算定位與視覺里程計
以下內容翻譯自wiki百科。里程計是一種利用從移動感測器獲得的資料來估計物體位置隨時間的變化而改變的方法。該方法被用在許多種機械人系統 輪式或者腿式 上面,來估計,而不是確定這些機械人相對於初始位置移動的距離。這種方法對由速度對時間積分來求得位置的估計時所產生的誤差十分敏感。快速 精確的資料採集,裝...
里程計 推算定位與視覺里程計
以下內容翻譯自wiki百科。里程計是一種利用從移動感測器獲得的資料來估計物體位置隨時間的變化而改變的方法。該方法被用在許多種機械人系統 輪式或者腿式 上面,來估計,而不是確定這些機械人相對於初始位置移動的距離。這種方法對由速度對時間積分來求得位置的估計時所產生的誤差十分敏感。快速 精確的資料採集,裝...