一、相機內參矩陣幾階
相機內參矩陣是一個3×3的矩陣,也被稱為相機內參(intrinsic)矩陣。
二、相機內參數矩陣
相機內參矩陣包含了相機內部的所有參數,包括焦距、像素寬高、主點(也稱為光心)。它可以表示成如下形式:
kx 0 px 0 ky py 0 0 1
其中,kx和ky分別表示像素寬度和高度方向上的焦距,px和py表示主點在像素坐標系下的坐標。
三、相機內參矩陣含義
相機內參矩陣是描述相機內部參數的一種重要工具。相機內參矩陣中,各個元素含義如下:
- kx和ky:相機在相應方向上的內部焦距,表示相機成像的精度。
- px和py:表示相機成像的主點在像素坐標繫上的坐標,通常是圖像中心點。
- 1:表示相機的焦距單位為像素。
四、相機內參矩陣 焦距
相機內參矩陣中的焦距kx和ky,表示相機在水平和豎直方向的焦距大小。焦距越大,成像越清晰,圖像越大。焦距的單位是像素。
代碼示例:
float kx = internal_mat.at(0,0); // 獲取相機內參矩陣中的焦距kx float ky = internal_mat.at(1,1); // 獲取相機內參矩陣中的焦距ky
五、相機內參矩陣K
相機內參矩陣K也被稱為相機的內參矩陣。它包含了相機的各個內參,如焦距、主點坐標等。它的具體表示形式見上文中的相機內參矩陣。
代碼示例:
cv::Mat internal_mat; // 定義相機內參矩陣 ... cv::Mat K = cv::Mat::eye(3, 3, CV_64F); // 初始化相機的內參矩陣為單位矩陣 K.at(0, 0) = internal_mat.at(0, 0); // 將相機內參矩陣中的焦距賦值給K矩陣 K.at(1, 1) = internal_mat.at(1, 1); K.at(0, 2) = internal_mat.at(0, 2); // 將相機內參矩陣中的主點坐標賦值給K矩陣 K.at(1, 2) = internal_mat.at(1, 2);
六、相機內參矩陣k
相機內參矩陣中的畸變係數矩陣k是用來糾正圖像畸變的。它包含了5或8個參數,分別是k1、k2、p1、p2、k3和k4、k5、k6。其中,k3、k4、k5和k6是在5個參數的基礎上增加的四個參數。
畸變係數矩陣k的作用是糾正徑向畸變和切向畸變。徑向畸變是指圖像中物體越靠近邊緣,成像就會越發生變形,常見於魚眼鏡頭。切向畸變是指圖像中垂直於主光軸的位置上發生的變形。
代碼示例:
float k1 = dist_coeffs.at(0, 0); // 獲取相機內參矩陣中的畸變係數k1 float k2 = dist_coeffs.at(1, 0); // 獲取相機內參矩陣中的畸變係數k2 float p1 = dist_coeffs.at(2, 0); // 獲取相機內參矩陣中的畸變係數p1 float p2 = dist_coeffs.at(3, 0); // 獲取相機內參矩陣中的畸變係數p2 float k3 = dist_coeffs.at(4, 0); // 獲取相機內參矩陣中的畸變係數k3(如果是八個參數的話) float k4 = dist_coeffs.at(5, 0); // 獲取相機內參矩陣中的畸變係數k4(如果是八個參數的話) float k5 = dist_coeffs.at(6, 0); // 獲取相機內參矩陣中的畸變係數k5(如果是八個參數的話) float k6 = dist_coeffs.at(7, 0); // 獲取相機內參矩陣中的畸變係數k6(如果是八個參數的話)
七、相機內參矩陣的逆
相機內參矩陣的逆矩陣也非常重要,因為其可以用來將像素坐標系下的坐標轉換到相機坐標系下。
代碼示例:
cv::Mat K_inv = K.inv(); // 將相機內參矩陣K求逆
八、相機內參矩陣參數
相機內參矩陣包含了相機的各個內部參數。因此,很多計算機視覺應用中都需要用到它。比如,在三維重建和位姿估計中,需要用相機內參矩陣來計算相機的外參矩陣。
九、相機內參矩陣圖解
下圖展示了相機內參矩陣的幾何意義:
十、相機的內參有哪些選取
相機內部的參數包括焦距、像素寬高、主點等。它們都是通過相機校準的方法得到的,這些參數也被稱為相機的內參。相機的內部參數是固定的,一旦確定後不再改變。
在實際應用中,我們可以使用相機校準板、平面、三維物體等來獲取相機的內參,具體內容可以參考OpenCV的相關文檔。
原創文章,作者:YDIM,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/132849.html