author@jason_ql(lql0716)
http://blog.csdn.net/lql0716
在圖像測量過程以及機器視覺應用中,為確定空間物體表面某點的三維幾何位置與其在圖像中對應點之間的相互關系,必須建立相機成像的幾何模型,這些幾何模型參數就是相機參數。在大多數條件下這些參數必須通過實驗與計算才能得到,這個求解參數的過程就稱之為相機標定(或攝像機標定)。無論是在圖像測量或者機器視覺應用中,相機參數的標定都是非常關鍵的環節,其標定結果的精度及算法的穩定性直接影響相機工作產生結果的准確性。因此,做好相機標定是做好后續工作的前提,提高標定精度是科研工作的重點所在。
常用術語
內參矩陣: Intrinsic Matrix
焦距: Focal Length
主點: Principal Point
徑向畸變: Radial Distortion
切向畸變: Tangential Distortion
旋轉矩陣: Rotation Matrices
平移向量: Translation Vectors
平均重投影誤差: Mean Reprojection Error
重投影誤差: Reprojection Errors
重投影點: Reprojected Points
1、坐標系的轉換
1.1 世界坐標系
世界坐標系(world coordinate)(xw,yw,zw)(xw,yw,zw),也稱為測量坐標系,是一個三維直角坐標系,以其為基准可以描述相機和待測物體的空間位置。世界坐標系的位置可以根據實際情況自由確定。
1.2 相機坐標系
相機坐標系(camera coordinate)(xc,yc,zc)(xc,yc,zc),也是一個三維直角坐標系,原點位於鏡頭光心處,x、y軸分別與相面的兩邊平行,z軸為鏡頭光軸,與像平面垂直。
1.3 世界坐標系轉換為相機坐標系
⎡⎣⎢⎢⎢xcyczc1⎤⎦⎥⎥⎥=[R0t1]⎡⎣⎢⎢⎢xwywzw1⎤⎦⎥⎥⎥
[xcyczc1]=[Rt01][xwywzw1]
其中RR為3*3的旋轉矩陣,tt為3*1的平移矢量,(xc,yc,zc,1)T(xc,yc,zc,1)T為相機坐標系的齊次坐標,(xw,yw,zw,1)T(xw,yw,zw,1)T為世界坐標系的齊次坐標。
1.4 像素坐標系、圖像坐標系
圖1:
像素坐標系(pixel coordinate)
如圖1,像素坐標系uovuov是一個二維直角坐標系,反映了相機CCD/CMOS芯片中像素的排列情況。原點oo位於圖像的左上角,uu軸、vv軸分別於像面的兩邊平行。像素坐標系中坐標軸的單位是像素(整數)。
像素坐標系不利於坐標變換,因此需要建立圖像坐標系XOYXOY,其坐標軸的單位通常為毫米(mm),原點是相機光軸與相面的交點(稱為主點),即圖像的中心點,XX軸、YY軸分別與uu軸、vv軸平行。故兩個坐標系實際是平移關系,即可以通過平移就可得到。
圖像坐標系轉換為像素坐標系
⎡⎣⎢uv1⎤⎦⎥=⎡⎣⎢1/dX0001/dY0u0v01⎤⎦⎥⎡⎣⎢XY1⎤⎦⎥
[uv1]=[1/dX0u001/dYv0001][XY1]
其中,dXdX、dYdY分別為像素在XX、YY軸方向上的物理尺寸,u0,v0u0,v0為主點(圖像原點)坐標。
1.5 針孔成像原理
圖2:
如圖,空間任意一點PP與其圖像點pp之間的關系,PP與相機光心oo的連線為oPoP,oPoP與像面的交點pp即為空間點PP在圖像平面上的投影。
該過程為透視投影,如下矩陣表示:
s⎡⎣⎢XY1⎤⎦⎥=⎡⎣⎢f000f0001000⎤⎦⎥⎡⎣⎢⎢⎢xyz1⎤⎦⎥⎥⎥
s[XY1]=[f0000f000010][xyz1]
其中,ss為比例因子(ss不為0),ff為有效焦距(光心到圖像平面的距離),(x,y,z,1)T(x,y,z,1)T是空間點PP在相機坐標系oxyzoxyz中的齊次坐標,(X,Y,1)T(X,Y,1)T是像點pp在圖像坐標系OXYOXY中的齊次坐標。
1.6 世界坐標系轉換為像素坐標系
s⎡⎣⎢uv1⎤⎦⎥=⎡⎣⎢1/dX0001/dY0u0v01⎤⎦⎥⎡⎣⎢f000f0001000⎤⎦⎥[R0t1]⎡⎣⎢⎢⎢xwywzw1⎤⎦⎥⎥⎥=⎡⎣⎢αx000αy0u0v01000⎤⎦⎥[R0t1]⎡⎣⎢⎢⎢xwywzw1⎤⎦⎥⎥⎥=M1M2Xw=MXw
s[uv1]=[1/dX0u001/dYv0001][f0000f000010][Rt01][xwywzw1]=[αx0u000αyv000010][Rt01][xwywzw1]=M1M2Xw=MXw
其中,αx=f/dXαx=f/dX、αy=f/dYαy=f/dY,稱為uu、vv軸的尺度因子,M1M1稱為相機的內部參數矩陣,M2M2稱為相機的外部參數矩陣,MM稱為投影矩陣。
2 相機內參與畸變參數
2.1 相機內參
參看1.6節所述
2.2 畸變參數
畸變參數(distortion parameters)
畸變(distortion)是對直線投影(rectilinear projection)的一種偏移。
簡單來說直線投影是場景內的一條直線投影到圖片上也保持為一條直線。
畸變簡單來說就是一條直線投影到圖片上不能保持為一條直線了,這是一種光學畸變(optical aberration),可能由於攝像機鏡頭的原因。
畸變一般可以分為:徑向畸變、切向畸變
1、徑向畸變來自於透鏡形狀
2、切向畸變來自於整個攝像機的組裝過程
畸變還有其他類型的畸變,但是沒有徑向畸變、切向畸變顯著
畸變圖示
徑向畸變
實際攝像機的透鏡總是在成像儀的邊緣產生顯著的畸變,這種現象來源於“筒形”或“魚眼”的影響。
如下圖,光線在原理透鏡中心的地方比靠近中心的地方更加彎曲。對於常用的普通透鏡來說,這種現象更加嚴重。筒形畸變在便宜的網絡攝像機中非常厲害,但在高端攝像機中不明顯,因為這些透鏡系統做了很多消除徑向畸變的工作。
對於徑向畸變,成像儀中心(光學中心)的畸變為0,隨着向邊緣移動,畸變越來越嚴重。
徑向畸變包括:枕形畸變、桶形畸變
切向畸變
切向畸變是由於透鏡制造上的缺陷使得透鏡本身與圖像平面不平行而產生的。
切向畸變可分為:薄透鏡畸變、離心畸變
切向畸變圖示:
2.2.1 opencv中的畸變模型
徑向畸變模型:
以下公式由泰勒展式得出,在opencv中K=1K=1,r2=x2+y2r2=x2+y2, (x,y)(x,y)為真實坐標(發生畸變),(x′,y′)(x′,y′)為理想坐標。
δxr=x(k1r2+k2r4+k3r6+K)
δxr=x(k1r2+k2r4+k3r6+K)
δyr=y(k1r2+k2r4+k3r6+K)
δyr=y(k1r2+k2r4+k3r6+K)
切向畸變模型:
δxd=2p1xy+p2(r2+2x2)+K
δxd=2p1xy+p2(r2+2x2)+K
δyd=2p1(r2+2y2)+2p2xy+K
δyd=2p1(r2+2y2)+2p2xy+K
理想坐標(x′,y′)(x′,y′)與真實坐標(x,y)(x,y):
x′=x+δxr+δxd
x′=x+δxr+δxd
y′=y+δyr+δyd
y′=y+δyr+δyd
也即:
[x′y′]=(1+k1r2+k2r4+k3r6)[xy]+[2p1xy+p2(r2+2x2)2p1(r2+2y2)+2p2xy]
[x′y′]=(1+k1r2+k2r4+k3r6)[xy]+[2p1xy+p2(r2+2x2)2p1(r2+2y2)+2p2xy]
實際計算過程中,如果考慮太多高階的畸變參數,會導致標定求解的不穩定。
2.2.2 張氏標定中的畸變模型
張正友的方法只考慮了徑向畸變,沒有考慮切向畸變
模型:
理想情況下(沒有畸變)圖片的像素坐標為:
(u,v)
(u,v)
真實的像素坐標為:
(u¯,v¯)
(u¯,v¯)
真實坐標與理想坐標的關系式(泰勒展開):
(x,y)(x,y) and (x¯,y¯)(x¯,y¯) are the ideal (distortion-free) and real (distorted) normalized image coordinates.
x¯=x+x[k1(x2+y2)+k2(x2+y2)2]
x¯=x+x[k1(x2+y2)+k2(x2+y2)2]
y¯=y+y[k1(x2+y2)+k2(x2+y2)2]
y¯=y+y[k1(x2+y2)+k2(x2+y2)2]
其中k1k1,k2k2是徑向畸變系數(coefficients of the radial distortion)。
像素坐標表示為:
u¯=u+(u−u0)[k1(x2+y2)+k2(x2+y2)2]
u¯=u+(u−u0)[k1(x2+y2)+k2(x2+y2)2]
v¯=v+(v−v0)[k1(x2+y2)+k2(x2+y2)2]
v¯=v+(v−v0)[k1(x2+y2)+k2(x2+y2)2]
即:
[(u−u0)(x2+y2)(v−v0)(x2+y2)(u−u0)(x2+y2)2(v−v0)(x2+y2)][k1k2]=[u¯−uv¯−v]
[(u−u0)(x2+y2)(u−u0)(x2+y2)2(v−v0)(x2+y2)(v−v0)(x2+y2)][k1k2]=[u¯−uv¯−v]
2.2.3 Tasi畸變模型
Tasi畸變模型同張氏畸變模型類似,也只考慮了徑向畸變
2.3 相機標定
相機標定步驟:
1、打印一張棋盤格,把它貼在一個平面上,作為標定物。
2、通過調整標定物或攝像機的方向,為標定物拍攝一些不同方向的照片。
3、從照片中提取棋盤格角點。
4、估算理想無畸變的情況下,五個內參和六個外參。
5、應用最小二乘法估算實際存在徑向畸變下的畸變系數。
6、極大似然法,優化估計,提升估計精度。
3 Matlab相機標定
打開matlab,找到“Camera Calibrator”並打開
在新窗口中選擇添加圖片“Add Images”
添加圖片之后,會有如下提示,設置棋盤格的實際大小之后,點擊ok
點擊“Calibrate”開始計算
點擊“Export Camera Parameters”,輸出到matlab命令窗口
導出的數據如下:
cameraParams =
cameraParameters (具有屬性):
Camera Intrinsics
IntrinsicMatrix: [3x3 double]
FocalLength: [510.6720 511.9534]
PrincipalPoint: [332.3800 238.4849]
Skew: 0
Lens Distortion
RadialDistortion: [0.0618 -0.4877]
TangentialDistortion: [0 0]
Camera Extrinsics
RotationMatrices: [3x3x50 double]
TranslationVectors: [50x3 double]
Accuracy of Estimation
MeanReprojectionError: 0.1923
ReprojectionErrors: [77x2x50 double]
ReprojectedPoints: [77x2x50 double]
Calibration Settings
NumPatterns: 50
WorldPoints: [77x2 double]
WorldUnits: 'mm'
EstimateSkew: 0
NumRadialDistortionCoefficients: 2
EstimateTangentialDistortion: 0
estimationErrors =
cameraCalibrationErrors (具有屬性):
IntrinsicsErrors: [1x1 intrinsicsEstimationErrors]
ExtrinsicsErrors: [1x1 extrinsicsEstimationErrors]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
在命令窗口輸入以下命令即可獲得內參矩陣和徑向畸變:
>> cameraParams.IntrinsicMatrix
ans =
510.6720 0 0
0 511.9534 0
332.3800 238.4849 1.0000
>> cameraParams.RadialDistortion
ans =
0.0618 -0.4877
1
2
3
4
5
6
7
8
9
10
11
12
13
參考資料
相關文章
機器學習、深度學習、計算機視覺、自然語言處理及應用案例——干貨分享(持續更新……)
旋轉矩陣、歐拉角、四元數理論及其轉換關系
基於生長的棋盤格角點檢測方法–(1)原理介紹
opencv角點檢測、棋盤格檢測、亞像素cvFindCornerSubPix()
相機標定(Camera calibration)
OpenCV相機標定和姿態更新
Camera Calibration and 3D Reconstruction
Camera Calibration
相機姿態估計(二)–單目POSIT算法
相機位姿估計1:根據四個特征點估計相機姿態
Head Pose Estimation using OpenCV and Dlib
opencv角點檢測、棋盤格檢測、亞像素cvFindCornerSubPix()
關於OpenCV的那些事——相機標定
計算機視覺-相機內參數和外參數
張正友相機標定算法 【2】
Python+OpenCV學習(17)—攝像機標定
相機標定Opencv實現以及標定流程&&標定結果評價&&圖像矯正流程解析(附標定程序和棋盤圖)
張正友相機標定Opencv實現以及標定流程&&標定結果評價&&圖像矯正流程解析(附標定程序和棋盤圖)
MATLAB–相機標定教程
《學習opencv》
張正友相機標定論文《A Flexible New Technique for Camera Calibration》
OpenCV相機標定
畸變模型
相機的那些事兒 - 概念、模型及標定
相機標定(二)之相機畸變模型
————————————————
版權聲明:本文為CSDN博主「jason_ql」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/lql0716/java/article/details/71973318
