Step1:模型 16个相机参数(内参、外参、畸变参数)
单目相机的标定摘要:单目相机的标定是从空间点及其对应的像素点,获得相机的位置信息和内部参数信息的过程。本文首先介绍了针孔相机模型,然后推导四个坐标轴变换的关系,引出R、T、K三个变换矩阵中包含相机的4个内参和6个外参。接着,论述了径向畸变和切向畸变下,相机的5个畸变内参。说明了如何从空间点及其对应的像素位置,获取相机的内参和外参,实现单目相机标定的理论方法。一、针孔相机模型相机中有四个坐标...
16个相机参数
摘要:本文首先介绍了针孔相机模型,然后推导四个坐标轴变换的关系,引出R、T、K、D中包含相机的5个内参,6个外参,5个畸变参数。相机的标定是从空间点及其对应的像素点,获得相机的位置信息和内部参数信息的过程,16个相机参数的总结为此提供了模型基础。
一、针孔相机模型
相机中有四个坐标系,分别为{world},{camera},{image},{pixel}
- {world}为世界坐标系,可以任意指定 x w x_w xw轴和 y w y_w yw轴
- {camera}为相机坐标系,原点位于小孔,z轴与光轴重合, x c x_c xc轴和 y c y_c yc轴平行投影面
- {image}为图像坐标系,原点位于光轴和投影面的交点, x p x_p xp轴和 y p y_p yp轴平行投影面
- {pixel}为像素坐标系,从小孔向投影面方向看,投影面的左上角为原点 O p O_p Op i _i i x _x x,uv轴和投影面两边重合
图片说明:{camera}:O
c
_c
c-x
c
_c
cy
c
_c
cz
c
_c
c,相机中心点Oc,焦距f。{picture}:O-xy,像平面π。主轴:从
O
c
O_c
Oc出发,垂直于像平面的射线 。主点:主轴与像平面的交点p。
二、四个坐标轴的变换关系
介绍如何从世界坐标轴,通过相机坐标轴和像面坐标轴,得到像素坐标轴的变换的过程,即 w o r l d : P w = ( x w , y w , z w ) T world:P_w=(x_w,y_w,z_w)^T world:Pw=(xw,yw,zw)T-----> c a m e r a : P c = ( x c , y c , z c ) T camera:P_c=(x_c,y_c,z_c)^T camera:Pc=(xc,yc,zc)T------> i m a g e : m = ( x p , y p , 1 ) T image:m=(x_p,y_p,1)^T image:m=(xp,yp,1)T-----> p i x e l : P i x = ( u , v , 1 ) T pixel:Pix=(u,v,1)^T pixel:Pix=(u,v,1)T
2.1 从{world}到{camera}
设某点在{world}中的坐标为
P
w
=
(
x
w
,
y
w
,
z
w
)
T
Pw=(x_w,y_w,z_w)^T
Pw=(xw,yw,zw)T,在{camera}中的坐标为
P
c
=
(
x
c
,
y
c
,
z
c
)
T
Pc=(x_c,y_c,z_c)^T
Pc=(xc,yc,zc)T。则
P
c
=
[
R
T
0
1
]
P
w
P_c=\begin{bmatrix}R&T\\ 0&1\end{bmatrix}P_w
Pc=[R0T1]Pw
其中,R为正交旋转矩阵,
R
=
[
r
11
r
12
r
13
r
21
r
22
r
23
r
31
r
32
r
33
]
R=\begin{bmatrix} r_{11} &r_{12}&r_{13}\\r_{21} &r_{22}&r_{23}\\ r_{31} &r_{32}&r_{33}\end{bmatrix}
R=⎣⎡r11r21r31r12r22r32r13r23r33⎦⎤
T为平移矩阵,
T
=
[
t
x
t
y
t
z
]
T
T=\begin{bmatrix}t_x&t_y&t_z\end{bmatrix}^T
T=[txtytz]T
2.2 从{camera}到{image}
设空间点
X
c
X_c
Xc在{camera}下:
P
c
=
(
x
c
,
y
c
,
z
c
,
1
)
T
P_c=(xc,yc,zc,1)^T
Pc=(xc,yc,zc,1)T,其像点m在{image}的齐次坐标为
m
=
(
x
p
,
y
p
,
1
)
T
m=(x_p,y_p,1)^T
m=(xp,yp,1)T。由图中相似三角形可得,
{
x
p
=
f
x
c
z
c
y
p
=
f
y
c
z
c
\left\{\begin{matrix} x_p=\frac{fx_c}{z_c} \\ \\ y_p=\frac{fy_c}{z_c}\end{matrix}\right.
⎩⎨⎧xp=zcfxcyp=zcfyc
写成矩阵表示为,
z
c
m
=
[
f
0
0
0
0
f
0
0
0
0
1
0
]
P
c
z_cm=\begin{bmatrix} f& 0& 0& 0 \\ 0& f& 0& 0 \\ 0& 0& 1& 0 \end{bmatrix}P_c
zcm=⎣⎡f000f0001000⎦⎤Pc
实际中,主点可能不在图像坐标系原点,若主点在图像坐标系中的坐标为
p
=
(
x
0
,
y
0
,
1
)
T
p=(x_0,y_0,1)^T
p=(x0,y0,1)T
则
z
c
m
=
[
f
x
f
y
1
]
=
[
f
0
x
0
0
0
f
y
0
0
0
0
1
0
]
P
c
z_cm=\begin{bmatrix}fx\\ fy\\ 1\end{bmatrix}=\begin{bmatrix} f& 0& x_0& 0 \\ 0& f& y_0& 0 \\ 0& 0& 1& 0 \end{bmatrix}P_c
zcm=⎣⎡fxfy1⎦⎤=⎣⎡f000f0x0y01000⎦⎤Pc
2.3 从{image}到{pixel}
假设一个像素的长和宽分别为dx,dy,设像素坐标
P
i
x
=
(
u
,
v
,
1
)
T
Pix=(u,v,1)^T
Pix=(u,v,1)T,则
[
u
v
1
]
=
[
1
/
d
x
0
0
0
1
/
d
y
0
0
0
1
]
[
x
p
y
p
1
]
\begin{bmatrix}u\\v\\1\end{bmatrix}=\begin{bmatrix}1/d_x&0&0\\0&1/d_y&0\\0&0&1\end{bmatrix}\begin{bmatrix}x_p\\y_p\\1\end{bmatrix}
⎣⎡uv1⎦⎤=⎣⎡1/dx0001/dy0001⎦⎤⎣⎡xpyp1⎦⎤
结合{camera}到{image}的变换,则{camera}到{pixel}的变换矩阵K为
K
=
[
1
/
d
x
0
0
0
1
/
d
y
0
0
0
1
]
[
f
0
x
0
0
f
y
0
0
0
1
]
=
[
f
x
0
u
0
0
f
y
v
0
0
0
1
]
K=\begin{bmatrix}1/d_x&0&0\\0&1/d_y&0\\0&0&1\end{bmatrix} \begin{bmatrix}f&0&x_0\\ 0& f& y_0 \\ 0& 0& 1\end{bmatrix} =\begin{bmatrix}f_x&0&u_0\\0&f_y&v_0\\0&0&1 \end{bmatrix}
K=⎣⎡1/dx0001/dy0001⎦⎤⎣⎡f000f0x0y01⎦⎤=⎣⎡fx000fy0u0v01⎦⎤
其中,
f
x
=
f
/
d
x
f_x=f/dx
fx=f/dx,
f
y
=
f
/
d
y
f_y=f/dy
fy=f/dy,称为相机在u轴和v轴方向上的尺度因子。
相机主点为
(
u
0
,
v
0
)
T
=
(
x
0
/
d
x
,
y
0
/
d
y
)
T
(u_0,v_0)^T=(x_0/dx,y_0/dy)^T
(u0,v0)T=(x0/dx,y0/dy)T
2.4 综合:从{world}到{pixel}
四个坐标系的变换过程:
w
o
r
l
d
:
P
w
=
(
x
w
,
y
w
,
z
w
)
T
world:P_w=(x_w,y_w,z_w)^T
world:Pw=(xw,yw,zw)T----->
c
a
m
e
r
a
:
P
c
=
(
x
c
,
y
c
,
z
c
)
T
camera:P_c=(x_c,y_c,z_c)^T
camera:Pc=(xc,yc,zc)T----->
i
m
a
g
e
:
m
=
(
x
p
,
y
p
,
1
)
T
image:m=(x_p,y_p,1)^T
image:m=(xp,yp,1)T----->
p
i
x
e
l
:
P
i
x
=
(
u
,
v
,
1
)
T
pixel:Pix=(u,v,1)^T
pixel:Pix=(u,v,1)T,
矩阵表示为:
z
c
[
u
v
1
]
=
K
⋅
[
R
T
0
1
]
[
x
w
y
w
z
w
1
]
z_c\begin{bmatrix}u\\ v\\ 1\end{bmatrix}=K·\begin{bmatrix} R&T \\0&1\end{bmatrix} \begin{bmatrix}x_w\\y_w\\z_w\\1\end{bmatrix}
zc⎣⎡uv1⎦⎤=K⋅[R0T1]⎣⎢⎢⎡xwywzw1⎦⎥⎥⎤
2.5 畸变参数
2.5.1 径向畸变
径向畸变(桶形畸变和枕形畸变)产生原因:光线在远离透镜中心的地方偏折更大。矫正公式:
x
c
o
r
r
e
c
t
e
d
=
x
(
1
+
k
1
r
2
+
k
2
r
4
+
k
3
r
6
)
x_{corrected}=x(1+k_1r^2+k_2r^4+k_3r^6)
xcorrected=x(1+k1r2+k2r4+k3r6)
y
c
o
r
r
e
c
t
e
d
=
y
(
1
+
k
1
r
2
+
k
2
r
4
+
k
3
r
6
)
y_{corrected}=y(1+k_1r^2+k_2r^4+k_3r^6)
ycorrected=y(1+k1r2+k2r4+k3r6)
2.5.2 切向畸变
切向畸变产生原因:透镜不完全平行于图像平面。矫正公式:
x
c
o
r
r
e
c
t
e
d
=
x
+
[
2
p
1
x
y
+
p
2
(
r
2
+
2
x
2
)
]
x_{corrected}=x+[2p_1xy+p_2(r^2+2x^2)]
xcorrected=x+[2p1xy+p2(r2+2x2)]
y
c
o
r
r
e
c
t
e
d
=
y
+
[
p
1
(
r
2
+
2
y
2
)
+
2
p
2
x
y
]
y_{corrected}=y+[p_1(r^2+2y^2)+2p_2xy]
ycorrected=y+[p1(r2+2y2)+2p2xy]
由此得到相机的5个畸变参数:
D
(
k
1
,
k
2
,
k
3
,
p
1
,
p
2
)
D(k_1,k_2,k_3,p_1,p_2)
D(k1,k2,k3,p1,p2)
2.6 小结
综上,16个单目相机的参数:
- 10个内部参数(只与相机有关):
- 5个内部矩阵参数K:
f
f
f,
d
x
dx
dx,
d
y
dy
dy,
u
0
u_0
u0,
v
0
v_0
v0
(也可视作4个参数 f x f_x fx, f y f_y fy, u 0 u_0 u0, v 0 v_0 v0) - 5个畸变参数D: k 1 , k 2 , k 3 , p 1 , p 2 k_1,k_2,k_3,p_1,p_2 k1,k2,k3,p1,p2
- 5个内部矩阵参数K:
f
f
f,
d
x
dx
dx,
d
y
dy
dy,
u
0
u_0
u0,
v
0
v_0
v0
- 6个外部参数(取决于相机在{world}的位置):
- 3个旋转参数R
- 3个平移参数T
推导:
1.【旋转矩阵】https://www.cnblogs.com/caster99/p/4703033.html
旋转矩阵是一个完美的矩阵——正交矩阵。它的行列式为1,且每个列向量都是单位向量且相互正交,它的逆等于它的转置。
2.【平移矩阵】http://frankorz.com/2017/09/24/matrix-transformation-2/ 平移矩阵,比较平移旋转及旋转平移,说明先旋转后平移的好处
3.【反射矩阵推导】https://www.cnblogs.com/wantnon/p/5630915.html
4.【相机畸变详细推导 】https://blog.csdn.net/waeceo/article/details/51024396
5.【6个参数 旋转平移下坐标变换】https://blog.csdn.net/xuelabizp/article/details/50314633
参考:
1.https://blog.csdn.net/xuelabizp/article/details/50314633
2.https://blog.csdn.net/u010128736/article/details/52850444
3.https://www.cnblogs.com/Jessica-jie/p/6596450.html?tdsourcetag=s_pctim_aiomsg
4.https://blog.csdn.net/yangdashi888/article/details/51356385
5.https://blog.csdn.net/a083614/article/details/78579163
6.https://blog.csdn.net/lql0716/article/details/71973318?locationNum=8&fps=1)
更多推荐
所有评论(0)