攝像頭測距

2022-02-04 10:06:15 字數 2581 閱讀 4744

深度檢測主要技術方法: 

1.雙目匹配(雙rgb攝像頭+可選的照明系統)

三角測量原理即目標點在左右兩幅檢視中成像的橫座標之間存在的差異(視差disparity),與目標點到成像平面的距離成反比例的關係:z = ft/d;得到深度資訊。 

雙目匹配採用三角測量原理完全基於影象處理技術,通過尋找兩個影象中的相同的特徵點得到匹配點,從而得到深度值。 

雙目測距中光源是環境光或者白光這種沒有經過編碼的光源,影象識別完全取決於被拍攝的物體本身的特徵點,因此匹配一直是雙目的乙個難點。 

匹配的精度和正確性很難保證,因此出現了結構光技術來解決匹配問題。 

技術點:立體匹配演算法,一般步驟:匹配代價計算,匹配代價疊加,視差獲取,視差細化(亞畫素級) 

優點: 給定的工作條件下,較好效果,硬體簡單。 

缺點: 雙目使用的是物體本身的特徵點,對表面顏色和紋理特徵不明顯的物體失效。 

因為結構光光源帶有很多特徵點或者編碼,因此提供了很多的匹配角點或者直接的碼字,可以很方便的進行特徵點的匹配。 

換句話說,不需要使用被攝物體本身的特徵點,因此能提供很好的匹配結果。

2.一般結構光(乙個rgb攝像頭+結構光投射器(紅外)+結構光深度感應器(cmos))

結構光測距的不同點在於對投射光源進行了編碼或者說特徵化。這樣拍攝的是被編碼的光源投影到物體上被物體表面的深度調製過的影象。 

結構光基本原理: 

通過投影乙個預先設計好的圖案作為參考影象(編碼光源),將結構光投射至物體表面,再使用攝像機接收該物體表面反射的結構光圖案,這樣,同樣獲得了兩幅影象, 

一幅是預先設計的參考影象,另外一幅是相機獲取的物體表面反射的結構光圖案,由於接收圖案必會因物體的立體型狀而發生變形,故可以通過該圖案在攝像機上的位置和形變程度來計算物體表面的空間資訊。普通的結構光方法仍然是部分採用了三角測距原理的深度計算。 

同樣是進行影象匹配,這種方法比雙目匹配好的地方在於,參考影象不是獲取的,而是經過專門設計的圖案,因此特徵點是已知的,而且更容易從測試影象中提取。 

結構光採用三角視差測距,基線(光源與鏡頭光心的距離)越長精度越高。 

技術點:提供什麼樣的輔助資訊來幫助快速而精確的對應點匹配是結構光編碼方法的衡量標準。 

優點: 成熟,經驗證,可量產 

缺點: 有限的**商,技術和**鏈門檻,陽光干擾敏感,多裝置之間存在嚴重干擾

3.light coding(雷射散斑光源)

與結構光不同,light coding的光源為「雷射散斑」,是雷射照射到粗糙物體或穿透毛玻璃後隨機形成的衍射斑點。這些散斑具有高度的隨機性,而且會隨著距離的不同而變換圖案。也就是說空間中任意兩處的散斑圖案都是不同的。只要在空間中打上這樣的光,整個空間都被做了標記,把乙個物體放進這個空間,只要看看物體上面的散斑圖案,就可以知道這個物體在什麼位置了。當然在這之前要把整個空間的散斑圖案都記錄下來,所以要先做一次光源標定。primesense公司的三維測量使用的就是雷射散斑技術。primesense將該技術稱為光源標定技術。光源標定技術在整個空間中每隔一段距離選取乙個參考平面,把參考平面上的散斑圖案儲存下來。

light coding不是通過空間幾何關係求解的,它的測量精度只和標定時取得參考面的密度有關,參考面越密測量越精確。不用為了提高精度而將基線拉寬。 

缺點: 雷射器發出的編碼光斑容易被太陽光淹沒掉

三角測距法

還記得文章開頭的那個小孔相機模型嗎?

三角測距法就是基於這個理想的,簡單的模型,進行的,在知道物體大小,透鏡焦距f,並測出影象中的物體長度後,就可以基於下面公式進行計算長度z了。

畫素塊測距法

這個方法是玩openmv時知道的,openmv封裝的單目測距演算法,就是將目標物件先在固定的距離(10cm)拍一張**,測出**中該物體的畫素面積。得到乙個比例係數k,然後將物體挪到任意位置,就可以根據畫素面積估算距離了。

不過這兩種方法肯定魯棒性都不咋樣。

5.相機標定

在上文,相機內參加上相機外參一共有至少8個引數,而我們要想消除相機的畸變,就要靠相機標定來求解這8個未知引數。

說完相機模型,又要說一下相機標定了,相機標定是為了求解上面這8個引數的,那求解出這8個引數可以幹什麼呢?可以進行軟體消除畸變,也就是在得知上面8個引數後,利用上面羅列的數學計算式,將每個偏移的畫素點歸位。

標定需要用到乙個叫標定板的東西,有很多種類,但常用的大概就是棋盤圖了,棋盤要求精度需要很高,格仔是正方形,買一張標定板很貴的,在csdn上下棋盤圖也要畫好多c幣,所以大家可以用word畫一張,很簡單的,只要做乙個5列7行的**,拉大到全頁,再設定每個格仔的寬高來將它設為正方形再塗色就可以了。這張圖里有符號,但列印出來就沒有了,建議大家自己畫一張就ok了。

雙攝像頭測距

開篇之前,首先要感謝maxwellsdemon和wobject,沒有和你們的討論,也就沒有此篇的成文。說到雙攝像頭測距,首先要複習一下測距原理,把learning opencv翻到416和418頁,可以看到下面兩幅圖 圖1.雙攝像頭模型俯檢視 圖2,雙攝像頭模型立體檢視 圖1解釋了雙攝像頭測距的原理...

攝像頭測距實現

普通攝像頭利用人臉識別技術與景深應用實現測距 今天看到有人問能不能用攝像頭來檢測距離,我剛開始覺得這幾乎是個不可能的事情,大家都知道這幾天都不讓出門,就窩在家裡想這個事。靈光一現,為什麼不將人臉識別與測距結合起來就可以實現了。具體演算法原理暫不公開 人臉識別可以使用opencv自帶的,也可以使用開源...

雙目攝像頭測距演算法

雙目攝像頭測距演算法 輸入輸出介面 input 3 攝像頭標定引數 中心位置 x,y 和5個畸變 係數 2徑向,2切向,1稜向 浮點型float 4 攝像頭初始化引數 攝像頭初始位置和三個座標方向 的旋轉角度,車輛寬度高度車速等等,浮點型float output 3 左右兩幀影象image vide...