1. 程式人生 > >(單/雙目)影象標定全流程(C++/Opencv實現)---原理篇

(單/雙目)影象標定全流程(C++/Opencv實現)---原理篇

最近在做影象標定工作,現對標定相關工作做個總結,以便後續檢視。
相關程式碼參考:
想要學習目標標定,首先要了解,相機模型中的四個平面座標系,以及他們之間的轉化關係。
理論如下:
(1)影象畫素座標系(u, v)
以畫素為單位,是以影象的左上方為原點的影象座標系;
(2)影象物理座標系(也叫像平面座標系)(x, y)
以mm為單位,用物理單位表示影象畫素位置,定義座標系O-XY,原點O定義在相機與影象平面交點;
(3)相機座標系(攝影機座標系) (Xc, Yc, Zc)
以mm為單位,以相機的光心作為原點,Zc軸與光軸重合,並垂直於成像平面,且取攝影方向為正方向,Xc、Yc軸與影象物理座標系的x, y軸平行,且OcO為攝像機的焦距f;
(4)世界座標系 (Xw, Yw, Zw)


根據具體情況而定,該座標系描述環境中任何物體的位置,滿足右手法則;

座標轉化

u = x d x + u

0 v = y d y
+ v 0 u = \frac{x} {{dx}} + {u_0}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} v = \frac{y} {{dy}} + {v_0}
latex加矩陣的公式實在過於繁瑣,遂直接截圖了
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
其中,內參矩陣
在這裡插入圖片描述
外參矩陣
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
攝像機座標與世界座標系之間的轉換(剛體變換和平移)。
在這裡插入圖片描述
R為分別繞XYZ軸旋轉的效果總和
在這裡插入圖片描述
在這裡插入圖片描述
其由三個方向的 控制,故有三個自由度。T是指兩個座標系原點的XYZ座標分量,即平移向量

單目標定:

基本思路:求得每個標定板對應的單應矩陣,再聯合優化所有標定板資料得到相機內參矩陣,再得到每個標定板對應的外參。
相機標定的目的就是建立攝像機影象畫素位置與場景點位置之間的關係,即世界座標系與影象座標系之間的關係。方法就是根據攝像機模型,由已知特徵點的影象座標求解攝像機的模型引數,從而可以從影象出發恢復出空間點三維座標,即三維重建。所以要求解的引數包括4個內參數和5個畸變引數,對於外引數,即旋轉矩陣的三個旋轉引數R和平移向量的三個引數T。

雙目立體標定:

雙目攝像機標定和單目攝像機標定最主要的區別就是雙目攝像機需要標定出左右攝像機座標系之間的相對關係。
雙目攝像機需要標定的引數:攝像機內參數矩陣,畸變係數矩陣,本徵矩陣,基礎矩陣,旋轉矩陣以及平移矩陣。
雙目視覺中兩個攝像頭之間的相對位置關係,即兩個座標系之間的相對位置關係,可以通過兩個矩陣來描述:旋轉矩陣R和平移矩陣T。
我們用旋轉矩陣R和平移矩陣T來描述左右兩個攝像機座標系的相對關係,具體為:將左攝像機下的座標轉換到右攝像機下的座標。
假設空間中有一點P,其在世界座標系下的座標為Pw,其在左右攝像機座標系下的座標可以表示為
在這裡插入圖片描述
Rl,Tl為左攝像頭經過單目標定得到的相對標定物的旋轉矩陣和平移向量,Rr,Tr為右攝像頭經過單目標定得到的相對標定物的旋轉矩陣和平移向量。
左右相機分別進行單目標定,就可以分別得到Rl,Tl,Rr,Tr,帶入上式就可以求出左右相機之間的旋轉矩陣R和平移T。求得的R和T就是立體標定要得到的結果。
亞畫素定位:通常影象被離散化成畫素形式,每個畫素對應一個整數座標位置,而為了達到精確性,需要精確到浮點座標位置,因此涉及到亞畫素定位問題。亞畫素定位就是計算特徵所在影象中的真實位置,而真實位置有時候並不在畫素所在整數座標位置上,而是在畫素的內部。即存在於兩個實際畫素之間的畫素,被稱為“亞畫素”。