halcon的雙目立體匹配及應用概述

2021-06-18 01:01:48 字數 2331 閱讀 2851

對要求大測量範圍和較高測量精度的場合,採用基於雙攝像機的雙目立體視覺系統比較合適;對測量範圍要求比較小,對視覺系統體積和質量要求嚴格,需要高速度實時測量物件,基於光學成像的單攝像機雙目立體視覺系統便成為最佳選擇。

基於雙攝像機的雙目立體視覺系統必須安裝在乙個穩定的平台上,在進行雙目視覺系統標定以及應用該系統進行測量時,要確保攝像機的內參(比如焦距)和兩個攝像機相對位置關係不能夠發生變化,如果任何一項發生變化,則需要重新對雙目立體視覺系統進行標定。

⊿z=z*⊿d/f*b

⊿z表示測量得出的被測點與立體視覺系統之間距離的精度,z指被測點與立體視覺系統的絕對距離,f指攝像機的焦距,b表示雙目立體視覺系統的基線距,⊿d表示被測點視差精度。

如果b和z之間的比值過大,立體影象對之間的交迭區域將非常小,這樣就不能夠得到足夠的物體表面資訊。b/z可以取的最大值取決於物體的表面特徵。一般情況下,如果物體高度變化不明顯,b/z可以取的大一些;如果物體表面高度變化明顯,則b/z的值要小一些。無論在任何情況下,要確保立體影象對之間的交迭區域足夠大並且兩個攝像機應該大約對齊,也就是說每個攝像機繞光軸旋轉的角度不能太大。

2.2 雙目立體視覺系統標定

為了進行視覺系統的標定,需要得到空間點的三維座標以及該點在左右兩幅影象中座標的對應關係,另外還需要給定兩個攝像機的初始引數。拍攝標定板影象時,要保證標定板在左右兩個攝像機中都能夠完整成像。

如果使用halcon標準標定板,首先可以通過函式find_caltab()在標定板影象中分離出標定板區域,然後利用find_marks_and_pose()運算元,該運算元通過亞象素閾值、亞象素邊緣提取、圓心確定等一系列操作計算標定板上每個點的影象座標以及標定板與攝像機之間大約的位置關係,即攝像機的外參初始值。其中使用find_caltab()分離標定板區域運算時間大約為5ms,find_marks_and_pose()計算標定板上49個標誌點的座標大約需要時間為40ms,計算座標精度為亞象素級,如某標誌點在左攝像機影象座標系中座標為(198.612619165, 344.142354438),右攝像機影象座標系中相應點座標為(212.140195587, 226.377754012)。 如果使用自定義的標定板,可以使用halcon中的影象濾波、亞象素邊緣及線提取、亞象素輪廓處理等基本函式開發演算法求取標誌點的座標並估算攝像機的外參初始值。

獲得標誌點相應的座標以及攝像機的起始引數後,通過呼叫函式binocular_calibration()來確定兩個攝像機的內引數、外引數以及兩個攝像機之間的相對位置關係。通過539個標誌點座標的對應關係計算出攝像機各個引數需要的時間為1.6094s,計算誤差約為0.02個象素。

2.3 校正立體影象對

為了能夠更精確地進行匹配,提高運算的效率,在獲得攝像機的內外引數後首先對立體影象對進行校正。校正的過程其實就是將影象投影到乙個公共的影象平面上,這個公共的影象平面方向由雙目立體視覺系統基線與原始兩個影象平面交線的叉集確定。

校正後的影象可以看作是乙個虛擬的立體視覺系統(圖5)採集的影象對。這個視覺系統中攝像機的光心與實際攝像機一致,只是通過繞光心的旋轉使光軸平行,並且視覺系統中兩個攝像機的焦距相同。這個虛擬的立體視覺系統就是雙目立體視覺原理中提到的最簡單的平視雙目視覺模型。

halcon中將標定過程中獲得的攝像機的內參以及兩個攝像機相對位置關係作為引數傳遞給函式gen_binocular_rectification_map(),再將獲得的兩個影象的對映圖傳遞給函式map_ image(),即可得到校正後的兩幅影象,並可獲得校正後虛擬立體視覺系統中兩個攝像機的內參和外參。其中函式gen_binocular_rectification_map()耗時約為0.3488s,map_image()耗時約為0.0050s。

2.4 獲得影象中三維資訊

為了得到影象中某點的三維資訊,需要在另一幅影象中找到該點的對應點座標。因此想獲得物體的深度資訊,首先需要對校正後的立體影象對進行匹配。由於經過校正後,兩幅影象中的對應點在影象的同一行中,因此在匹配時只需要在相應的行中尋找匹配點。為了得到更佳的匹配結果,如果被測物體表面沒有明顯的特徵資訊,則需要測量時在物體表面增加特徵點。另外要避免被測物體上重複圖案在同一行中。

將校正後的影象以及虛擬立體視覺系統中的攝像機內外引數傳遞給binocular_disparity(), 這時可以設定匹配窗大小、相似度計算方式等引數,在匹配中使用影象金字塔提高匹配速度,並且可以自我檢測匹配結果的正確性。函式返回乙個視差圖 (物體表面三維資訊的表示)和乙個匹配分值圖(表示匹配結果的準確程度),函式的執行時間約為0.6051s。

函式binocular_distance()與binocular_disparity()類似,只不過返回乙個深度圖(物體表面在第乙個攝像機座標系中的深度資訊)和乙個匹配分值圖。圖6~圖9顯示了halcon中利用雙目立體視覺測量電路板三維資訊的過程。

halcon中另外還有很多關於立體視覺的函式,可以獲得影象中某點的三維座標,另外可以校正傾斜對高度測量的影響等。

雙目立體匹配

公式 其中資料項描述了匹配程度,平滑項體現了定義場景的約束,c是匹配代價 或稱penalty p是不同兩畫素p和q視差的函式,一般稱之為平滑項 考慮到能量優化問題在一維空間的複雜度是多項式級的,因此一些研究試圖做一些近似來降低演算法的複雜度。例如,半全域性演算法 sgm 就利用了這一特性將二維問題簡...

雙目立體匹配回顧筆記

1.基於視窗的全域性演算法視窗設定問題 匹配是假設表面前向平行的,而事實上與此會違背,另外在不連續的區域背景部分是無法對準的,因此視窗太大不利於匹配的準確性,另外視窗太小的話對於若紋理和重複紋理區域引入更多的outlier,試驗中比較難把握乙個最優值 根據影象區域的性質動態選擇視窗大小是乙個可以考慮...

雙目立體匹配演算法漫談

雙目立體匹配演算法是計算機視覺中比較經典的問題。有大量經典的雙目立體匹配演算法。本文簡要介紹一下雙目立體匹配的常用基本流程,也可以說是套路。第一次寫這麼長的博文,我想到 寫 更詳細內容的可見文章a taxonomy and evaluation of dense two frame stereo c...