相機標定中個函式簡介(經典)

2021-08-20 12:04:05 字數 1410 閱讀 2351

問題:兩條平行線可以相交於一點

在歐氏幾何空間,同一平面的兩條平行線不能相交,這是我們都熟悉的一種場景。

然而,在透視空間裡面,兩條平行線可以相交,例如:火車軌道隨著我們的視線越來越窄,最後兩條平行線在無窮遠處交於一點。

歐氏空間(或者笛卡爾空間)描述2d/3d幾何非常適合,但是這種方法卻不適合處理透視空間的問題(實際上,歐氏幾何是透視幾何的乙個子集合),2維笛卡爾座標可以表示為(x,y)。

如果乙個點在無窮遠處,這個點的座標將會(∞,∞),在歐氏空間,這變得沒有意義。平行線在透視空間的無窮遠處交於一點,但是在歐氏空間卻不能,數學家發現了一種方式來解決這個問題。

方法:齊次座標

簡而言之,齊次座標就是用n+1維來代表n維座標

我們可以在乙個2d笛卡爾座標末尾加上乙個額外的變數w來形成2d齊次座標,因此,乙個點(x,y)在齊次座標裡面變成了(x,y,w),並且有

x = x/w

y = y/w

例如,笛卡爾座標系下(1,2)的齊次座標可以表示為(1,2,1),如果點(1,2)移動到無限遠處,在笛卡爾座標下它變為(∞,∞),然後它的齊次座標表示為(1,2,0),因為(1/0, 2/0) = (∞,∞),我們可以不用」∞"來表示乙個無窮遠處的點了,哈哈。

為什麼叫齊次座標?

我們把齊次座標轉化為笛卡爾座標的方法是前面n-1個座標分量分別除以最後乙個分量即可。

轉化齊次座標到笛卡爾座標的過程中,我們有乙個發現,例如:

你會發現(1, 2, 3), (2, 4, 6) 和(4, 8, 12)對應同乙個euclidean point (1/3, 2/3),任何標量的乘積,例如(1a, 2a, 3a) 對應 笛卡爾空間裡面的(1/3, 2/3) 。因此,這些點是「齊次的」,因為他們代表了笛卡爾座標系裡面的同乙個點。換句話說,齊次座標有規模不變性。

證明:兩條直線可以相交

考慮如下方程組:

我們知道在笛卡爾座標系裡面,該方程組無解,因為c ≠ d,如果c=d,兩條直線就相同了。

讓我們在透視空間裡面,用齊次座標x/w, y/w代替x ,y,

現在我們有乙個解(x, y, 0),兩條直線相交於(x, y, 0),這個點在無窮遠處。

小結:齊次座標在圖形學中是乙個非常基礎的概念,例如3d場景對映到2d場景的過程中

參考:

ros中相機標定

今天,由於apriltag的相機定位需要輸入相機內參,所以需要開始標定內參。事先準備 usb相機 通過usb口連線電腦 標定板 參考 安裝usb cam ros功能包保證相機通過usb連線後可以傳回影象資料 cd catkin ws src git clone 然後退回到工作空間,編譯 cd cat...

相機標定1 幾個函式

相機標定中的幾個函式 stereocalibrate double cv stereocalibrate inputarrayofarrays objectpoints,表示物點座標,由棋盤格生成的,z 0.inputarrayofarrays imagepoints1,相機1中的像點座標 inpu...

OpenCV3中相機標定介面

2 標定 3 矯正 將n維向量轉化為n 1維向量,最後一維新增1 void cv convertpointstohomogeneous cv inputarray src,cv outputarray dst 將n維向量轉化維n 1維向量,除以最後1維 void cv convertpointsfr...