立體視覺中,怎樣提取左、右圖像中特定的特徵點進行立體匹配?如下圖中抓手上的幾個標識點,在匹配時如何只提取這幾個標識點進行匹配

極線校正後的照片
形態學約束之後的結果

中心提取

三維掃描結果(標誌點為紅色標記)
通過標誌點把兩次雙目拍照的點雲拼接到一起

希望對你有幫助。


1. 用角點檢測方法把左右圖像特徵點提取;如 HARRIS,Harris and M. Stephens (1988).「A combined corner and edge detector」

2. 根據立體視覺標定結果計算外極線,對於左圖像上任一特徵點,在右圖像上利用極線約束進行搜索匹配。如果不想自己寫,OpenCV有現成的類。

參考:極線約束(epipolar constraint)

三維空間中一點p,投影到兩個不同的平面I1、I2,投影點分別為p1,p2。

p、p1、p2在三維空間內構成一個平面S。

S與面I1的交線L1過p1點,稱之為對應於p2的極線。同理S與I2的交線稱之為對應於p1

的極線(對應於左邊圖像點的極線在右邊圖像上,右邊與之相同)。如圖:

所謂極線約束就是說同一個點在兩幅圖像上的映射,已知左圖映射點p1,那麼右圖映射點p2一

定在相對於p1的極線上,這樣可以減少待匹配的點數量。


這種預設標誌點建議用模板匹配,應該會比較好提取,右邊那個看不全,可能你模板得就著可見性最差的那個選,或者用一大一小兩個模板綜合來看,這是連續大量圖像的做法。這種貼標誌點的辦法多年前就被用來做三維測量了,可以參考的東西應該不少,標誌點應該是不用旋轉角度都一樣,或者你換一種方形標誌點來做(黑色方形、中間是個白色圓點,這種標誌點在三維測量裡面用得比較多)會規避掉旋轉角度的問題。想來應該用不到上SIFT、SURF這種旋轉、尺度不變性的特徵提取匹配演算法(如果你有這兩種演算法的現成代碼應該也能用,但是有點兒高射炮打蚊子的感覺)。

如果你就一對兒兩幅圖,偷懶的辦法是載入圖像依次單擊滑鼠把幾個點的大概位置點出來,程序根據滑鼠位置取ROI來檢測特徵點。MATLAB的相機標定工具箱有類似的做法可以參考

標誌點都提取出之後就是極線匹配那一套了,有答案說得很清楚。


題主說的立體匹配的意思是指算視差嗎?

如果是手工控制可以指定坐標的吧,代碼寫死或者滑鼠點擊的方式(可以參考網路上一些滑鼠事件的程序)

自動化批量處理,可以先提特徵,匹配,再用匹配上的特徵點直接計算視差,這樣找到的點不一定是你要的那幾個點。

還有如果你題目描述中給的帶黑白圈的這張圖就是你原始數據的話,可以找找有沒有具有旋轉不變性模板匹配的方法,幫你在圖中搜出這幾個黑白圈的位置,再考慮匹配的問題。


我覺得兩個思路吧,一個是兩個相機中的標誌點分別提取,再一個個對應過去,一個是再提取過程中用兩幅圖像互為參考,不斷縮小提取範圍,提高精度,兩個都可以各有優劣。至於具體在圖像中用什麼特徵,我覺得模板匹配就可以啊,這個比較簡單,其他的也可以用顏色特徵,顯著性,二維直方圖。。估計最好用的還是模板和顏色特徵。啊,深度學習也可以,估計效果會不錯
假設雙目相機已經標定(參考極線約束理論)。分析了下這個圖片,個人覺得第一步是對兩幅圖提取特徵點(可以採用角點檢測,然後根據點周圍顏色、梯度特徵等篩選出圖中所示的特徵點);接下來就是在極線範圍內搜索,對特徵點進行匹配,計算視差;最後根據相機內參數計算每個特徵點的距離。
推薦閱讀:
相關文章