文章目录
说明
一、相机模型
1、针孔模型
2、畸变
(1)径向畸变
1)桶形畸变
2)枕形畸变
(2)切向畸变
(3)畸变小结
二、各坐标系之间的转换
1、各坐标系的定义
2、各坐标系之间的相互转换模型
整体公式
(1)世界坐标系-->相机坐标系
(2)相机坐标系-->归一化坐标系
(3)归一化坐标系-->像素坐标系
三、相机需要标定的参数
四、参考资料
说明
这篇博文介绍了描述相机的经典模型——针孔模型,以及镜头引起的畸变模型;以此给出了相机内参和外参的定义,进而介绍了三维重建中很总要的坐标系转换,为后面的重建奠定基础。写这篇博文可太费劲了!又要画图又要手打公式(还是用LaTeX语法 😅)
一、相机模型
相机成像,即将三维世界中的坐标点(单位: m m m)映射到二维图像平面(单位: p i x e l pixel pixel)。这个过程可以用一个几何模型进行描述,其中最简单且有效的是针孔模型。同时,由于透镜的存在和相机制作工艺造成的误差会使得相机的成像产生畸变。
1、针孔模型
图一是针孔成像模型的几何模型,相机坐标系为 O − x − y − z O-x-y-z O−x−y−z,设现实中的一点 P P P的坐标为 [ X , Y , Z ] T [X,Y,Z]^{T} [X,Y,Z]T,经过小孔O投影到相机物理成像平面 P ′ P^{'} P′点,其坐标为 [ X ′ , Y ′ , f ] T [X^{'},Y^{'},f]^{T} [X′,Y′,f]T, f f f为相机焦距,根据相似三角形原理可以得到 Z f = − X X ′ = − Y Y ′ \frac{Z}{f} =-\frac{X}{X^ {'}} = -\frac{Y}{Y ^{'}} fZ=−X′X=−Y′Y,其中负号表示倒像。
实际成像平面就应该是倒向,但是一般的数码相机呈现的图片都是正向的,这是因为数码相机 呈现的图像是经过翻转的。
那么我们也可以简化模型,将成像平面前移 2 f 2f 2f,如图十所示这样就可以去掉负号得到: Z f = X X ′ = Y Y ′ \frac{Z}{f} =\frac{X}{X^ {'}} = \frac{Y}{Y^ {'}} fZ=X′X=Y′Y
整理得: X ′ = f X Z , Y ′ = f Y Z X^{'}=f\frac{X}{Z},Y^{'}=f\frac{Y}{Z} X′=fZX,Y′=fZY
图一
图二在二维坐标系下解释了针孔模型的过程,其中归一化成像平面是指距离原点 O O O的距离为单位1的坐标。设 P s P_{s} Ps为 P P P点在归一化成像平面上的投影点,其坐标为 [ X s , Y s , 1 ] T [X_{s},Y_{s},1]^{T} [Xs,Ys,1]T,有: Z 1 = X X s = Y Y s \frac{Z}{1} =\frac{X}{X_{s}}=\frac{Y}{Y_{s}} 1Z=XsX=YsY
整理得: X s = X Z , Y s = Y Z X_{s}=\frac{X}{Z},Y_{s}=\frac{Y}{Z} Xs=ZX,Ys=ZY
图二
我们知道,相机拍摄的数字图像在计算机中都是以二维矩阵储存的,它的坐标以像素为单位,而且坐标原点一般在图像的左上角,而实际物理图像的坐标原点在图像中心,坐标单位为米。其关系如图三所示, O p i x e l − u − v O_{pixel}-u-v Opixel−u−v为像素坐标系, O i m a g e − x i m a g e − y i m a g e O_{image}-x_{image}-y_{image} Oimage−ximage−yimage为图像坐标系。
假设 x x x轴方向有 1 ( m ) = α ( p i x e l ) 1(m)=\alpha(pixel) 1(m)=α(pixel), y y y轴方向有 1 ( m ) = β ( p i x e l ) 1(m)=\beta(pixel) 1(m)=β(pixel)那么 P ′ P^{'} P′点的像素坐标 ( u , v ) (u,v) (u,v)有下面的关系:
{ u = α X ′ = α f X Z , v = β X ′ = β f Y Z . \begin{cases} u=\alpha X^{'}=\alpha f\frac{X}{Z},\\v=\beta X^{'}=\beta f\frac{Y}{Z}.\end{cases} {
u=αX′=αfZX,v=βX′=βfZY.令 { f x = α f , f y = β f . \begin{cases} f_{x}=\alpha f,\\f_{y}=\beta f.\end{cases} {
fx=αf,fy=βf.则写成矩阵形式有: [ u v 1 ] = [ f x 0 c x 0 f y c y 0 0 1 ] 1 Z [ X Y Z ] \begin{bmatrix} u\\v\\ 1\\ \end{bmatrix}=\begin{bmatrix} f_{x} & 0 &c_{x}\\0 & f_{y} &c_{y}\\ 0&0&1\\\end{bmatrix} \frac{1}{Z}\begin{bmatrix} X\\Y\\ Z\\ \end{bmatrix} ⎣⎡uv1⎦⎤=⎣⎡fx000fy0cxcy1⎦⎤Z1⎣⎡XYZ⎦⎤
其中 1 Z [ X Y Z ] = [ X s Y s 1 ] = P s \frac{1}{Z}\begin{bmatrix}X\\Y\\ Z\\\end{bmatrix}=\begin{bmatrix}X_{s} \\ Y_{s} \\ 1 \end{bmatrix}=P_{s} Z1⎣⎡XYZ⎦⎤=