單目測距算法
相似三角形
用相似三角形計算物體或者目標到相機的距離,將使用相似三角形來計算相機到一個已知的物體或者目標的距離。
假設有一個寬度為 W 的目標或者物體。然后將這個目標放在距離的相機為 D 的位置。用相機對物體進行拍照並且測量物體的像素寬度 P。
這樣就得出了相機焦距的公式:
F = (P x D) / W
舉個例子,假設在離相機距離 D = 24 英寸的地方放一張標准的 8.5 x 11 英寸的 A4 紙(橫着放;W = 11)並且拍下一張照片。測量出照片中 A4 紙的像素寬度為 P = 249 像素。因此的焦距 F 是:
F = (248px x 24in) / 11in = 543.45。
當繼續將的相機移動靠近或者離遠物體或者目標時,可以用相似三角形來計算出物體離相機的距離:
D’ = (W x F) / P。
例如,假設將相機移到距離目標 3 英尺(或者說 36 英寸)的地方並且拍下上述的 A4 紙。通過自動的圖形處理可以獲得圖片中 A4 紙的像素距離為 170 像素。將這個代入公式得:
D’ = (11in x 543.45) / 170 = 35 英寸或者約 36 英寸,合 3 英尺。
從以上可以看到,要想得到距離,就要知道攝像頭的焦距和目標物體的尺寸大小,這兩個已知條件根據公式:
D’ = (W x F) / P
得出目標到攝像機的距離D,其中P是指像素距離,W是A4紙的寬度,F是攝像機焦距。
相機標定
相機內參加上相機外參一共有至少8個參數,而我們要想消除相機的畸變,就要靠相機標定來求解這8個未知參數。
說完相機模型,又要說一下相機標定了,相機標定是為了求解上面這8個參數的,那求解出這8個參數可以干什么呢?可以進行軟件消除畸變,也就是在得知上面8個參數后,利用上面羅列的數學計算式,將每個偏移的像素點歸位。
標定需要用到一個叫標定板的東西,有很多種類,但常用的大概就是棋盤圖了, 棋盤要求精度需要很高,格子是正方形,買一張標定板很貴的,可以用word畫一張,只要做一個5列7行的表格,拉大到全頁,再設置每個格子的寬高來將它設為正方形再塗色就可以了。這張圖里有符號,但打印出來就沒有了,建議大家自己畫一張就OK了。
單目與雙目
在研究基於視覺的測距系統時,主要是研究單目視覺、雙目和多目視覺系統。雙目和多目系統中攝像機之間的協同性問題不好控制,單目視覺系統可以克服上述攝像機間的協同性問題。從生產成本上來看,單目視覺比雙目和多目系統更加節省成本。單目視覺測距具有結構簡單,運算速度快,成本低等優點。
測距實現
首先根據攝像機標定原理,獲得攝像機的內參矩陣;
然后,采集含有目標的單幀圖像,並識別出圖像中目標所在區域,計算出該區域像素坐標縱坐標最大值,及其對應的橫坐標的平均值,將得到的坐標作為觀測點;
最后,基於圖像像素點獲得觀測點在世界坐標系下的三維信息,根據觀測點在體坐標系下的三維信息計算觀測點的距離。
包括以下步驟:
步驟一、對單目攝像機進行標定,獲取攝像機的內參矩陣[fx,0,u0;0,fy,v0;0,0,1];
步驟二、通過已標定的單目攝像機拍攝含有目標的單幀圖像,並對獲得的圖像進行處理,提取目標區域,計算出該區域像素坐標縱坐標最大值,及其對應的橫坐標的平均值,將組合得到的坐標作為觀測點P;
步驟三、根據攝像機標定原理,由觀測點的像素坐標Pp(u,v)可以獲得觀測點在體坐標系下的三維坐標值Pb(xb,yb,zb),進而可以計算出觀測點的距離,具體方法如下所示:
1)由步驟一可以獲得攝像機的內參矩陣,由步驟二可以獲得觀測點的像素點,則其中λ表示觀測點處光線與攝像機光軸夾角,y表示觀測點在圖像坐標系下的縱坐標,y0表示攝像機光心在圖像坐標系的縱坐標,f表示攝像機焦距。
進一步化簡為到像素坐標系,其關系如下:
其中v表示觀測點在像素坐標系下的縱坐標,v0表示攝像機光心在像素坐標系的縱坐標,dy表示在y方向上每個像素的物理尺寸,fy表示y軸上的歸一化焦距;
2)在三角幾何關系中,O1P2距離表示如下:
O1O2為攝像機距離測距平面的高度,P1在攝像機光軸的投影點為P2,O1P2表示深度信息即表示觀測點在攝像機坐標系中點Pc(xc,yc,zc)中zc的值。
3)將像素坐標轉換到攝像機坐標下,像素坐標系與攝像機坐標系轉換關系。
將觀測點的像素坐標和上一步中獲得的觀測點在攝像機坐標系下的深度信息zc結合,即可求得觀測點在攝像機坐標系中的坐標Pc(xc,yc,zc);
計算攝像機坐標系到體坐標系的轉換公式,其中Rcb為攝像機坐標系到體坐標系的旋轉矩陣,Tcb為攝像機坐標系到體坐標系的平移矩陣。
4)計算觀測點的距離D。
附圖說明
基於單目視覺的目標測距方法的測距模型
具體實施方式
上圖中,xOy是圖像坐標系,Zc表示相機坐標系的Z軸及光軸,XbO2Yb表示體坐標系下Z=0平面(即測距平面),O1表示相機鏡頭,a,b兩條虛線表示視覺場范圍,θ表示相機俯仰角,H表示相機到測距平面的高度,P1點為觀測點,觀測點P1點在圖像平面成像點為P,在光軸上的投影點為P2,在X軸上的投影點為P3,P3點在圖像平面成像點為P0。
技術總結
基於單目視覺的目標測距方法
首先根據攝像機標定原理,獲得攝像機的內參矩陣;
然后,采集含有目標的單幀圖像,並識別出圖像中目標所在區域,計算出該區域像素坐標縱坐標最大值,及其對應的橫坐標的平均值,將組合得到的坐標作為觀測點;
最后,基於圖像像素點獲得觀測點在體坐標系下的三維信息,根據觀測點在體坐標系下的三維信息計算觀測點的距離。