相機內參 VIO標定(一)針孔相機模型

2021-10-14 22:25:06 字數 1541 閱讀 6708

相機可以簡單地理解為鏡頭和感光sensor的組合, 鏡頭將環境光匯聚到感光晶元. 感光晶元將環境光轉換成數碼訊號形成影象, 也就是俗稱的**.

鏡頭不一樣, 匯聚的環境光也不一樣, 最直觀的區別就是相機看到的範圍, 俗稱視場角(field of vision, fov). 相機根據鏡頭fov大小的不同可以分為全向相機(omni directional), 廣角/魚眼相機(fisheye)和普通相機. 普通鏡頭fov通常在90度以下. 廣角相機fov通常大於90度, 全向相機fov通常會大於180度.

針孔相機模型:

對於3d空間中乙個點,其投影到影象平面上的畫素點座標計算過程為:

如果考慮相機畸變,則成像過程需要增加一項,其計算過程為:

注意多了個去畸變的過程,其中

為徑向畸變係數(radial distortion coefficients),

是切向畸變係數(tangential distortion coefficients),

為薄稜鏡畸變係數(thin prism distortion coefficients),一般opencv中畸變係數的順序是

。如果畸變係數是4個,則

為0, 如果畸變係數為5個,則不考慮後面的薄稜鏡畸變和高階徑向畸變。

注意:畸變係數與影象解析度無關,因為畸變處理過程是在normalize平面,如將影象解析度從640x480轉到320x240,畸變係數不變,但焦距光心需要同比例縮放。

影象去畸變的思路是:對於目標影象(無畸變)上的每個畫素點,轉換到normalize平面,再進行畸變並投影到源影象(帶畸變), 獲取原圖對應位置的畫素值作為目標影象該點的畫素值。

這裡容易有乙個誤解,以為去畸變是對畸變影象進行畸變逆變換得到無畸變影象,實際不是的,畸變模型太複雜了,很難求逆變換,所以是將無畸變影象進行畸變變換到原影象去獲得對應畫素值。

影象去畸變流程如下:

目標影象上畫素點

投影到目標相機的normalize平面

。轉到源相機座標系

轉到源相機normalize平面

normalize平面上進行畸變變換

轉到源相機影象平面

注意:源相機和目標相機使用的內參矩陣不一定是一樣的。如果是呼叫opencv的undistort()函式,cameramatrix是源相機的內參矩陣,newcameramatrix是目標相機的內參矩陣,如果不設定newcameramatrix,則預設與源相機內參一樣,即去畸變後,相機的內參矩陣不變。

結論:影象解析度縮放比例k, 相機焦距光心等比例縮放k, 畸變係數不變。

證明:影象縮放k倍後,影象平面所有的畫素點座標變為:

而影象畸變是發生在normalize平面,不管影象解析度如何改變,normalize平面(只取決於焦距光心)是不變的,所以畸變係數不變。

相機內參 相機標定(張正友標定演算法)解讀與實戰一

世界座標系 相機座標系 歸一化平面座標系 像平面座標系 畫素座標系。關於相機模型的文章太多了,要搞清楚,首先要弄清楚這5個座標系,以及他們之間的轉換關係。我這裡開始由世界座標系一步一步推導到畫素座標系進行講解。針孔相機模型 世界座標系到相機座標系 實際上是兩個三維座標系之間的轉換關係,屬於剛體變換,...

相機內參外參

參考資料 說內參矩陣之前,還得再引入畫素座標系的概念。上述影象點的表示是長度單位,不是畫素,由於我們拿到的影象是以畫素來衡量的,因此還需要將影象座標系轉化為畫素座標系。在此直接給出結論 於是之前的相機矩陣又得新增一項 上述推導中有乙個假設前提,就是相機的感光元件是正方形的,感光元件的安裝也是通過光軸...

urdf中相機內參

multicamera name stereo camera 30.0 update rate left 1.3962634 horizontal fov 800 width 800 height r8g8b8 format image 0.02 near 300 far clip gaussian...