相机标定(Cameracalibration )
简单介绍
摄像机标定(Camera calibration)简单来说是从世界坐标系换到图像坐标系的过程。也就是求终于的投影矩阵 的过程,以下相关的部分主要參考UIUC 的计算机视觉的课件(⽹址)。基本的坐标系:
八年级英语语法
世界坐标系(world coordinate system)。相机坐标系(camera coordinate system);图像坐标系(image coordinate system);⼀般来说,标定的过程分为两个部分:
第⼀步是从世界坐标系转换为相机坐标系,这⼀步是三维点到三维点的转换。包含 , (相机外參)等參数;第⼆部是从相机坐标系转为图像坐标系。这⼀步是三维点到⼆维点的转换,包含 (相机内參)等參数;
相机坐标系 转换到 图像坐标系
坐标系介绍
如上图所看到的(图⽚来⾃UIUC 计算机视觉课件)。是⼀个⼩孔成像的模型,当中:
点表⽰camera centre ,即相机的中⼼点,也是相机坐标系的中⼼点; 轴表⽰principal axis ,即相机的主轴;
点所在的平⾯表⽰image plane ,即相机的像平⾯。也就是图⽚坐标系所在的⼆维平⾯。 点表⽰principal point 。即主点。主轴与像平⾯相交的点;
点到 点的距离。也就是右边图中的 表⽰focal length ,即相机的焦距;像平⾯上的 和 坐标轴是与相机坐标系上的 和 坐标轴互相平⾏的。
相机坐标系是以 。 。 (⼤写)三个轴组成的且原点在 点。度量值为⽶(m );像平⾯坐标系是以 ,(⼩写)两个轴组成的且原点在 点,度量值为⽶(m );
图像坐标系⼀般指图⽚相对坐标系,在这⾥能够觉得和像平⾯坐标系在⼀个平⾯上,只是原点是在图⽚的⾓上,并且度量值为像素的个数(pixel )。
相机 转换到 像平⾯
知道上⾯的简单知识后,假设知道相机坐标系中的⼀个点 (现实三维世界中的点)。在像平⾯坐标系相应的点是 ,要求求从相机坐标系转为像平⾯坐标系的转换,也就是从 点的通过⼀定的转换变为 点的。注意:(⼤写)是在相机坐标系。⽽(⼩写)是在像平⾯坐标系(还不是图像坐标系。原点不同。
)观察第⼆个图,⾮常简单的能够得到这个转换:
能够表⽰为矩阵计算为(在这⾥⽤的是齐次坐标的表⽰⽅式,关于齐次坐标⽂章最以下有介绍):
能够简写为( 就是所谓的投影矩阵,当然如今还不完整):
增加偏移量
通过上⾯,能够把相机坐标系转换到像平⾯坐标系,可是像平⾯坐标系和图像坐标系尽管在同⼀个平⾯上,可是原点并⾮同⼀个,⽽⽬标是
要转换到图像坐标系下。所以还须要⼀步操作。例如以下图:
高级口译如上图所看到的(图⽚来⾃UIUC 计算机视觉课件),当中主点 是像平⾯坐标系的原点,但在图像坐标系中的位置为,在这
P R t K C Z p p C p f x y X Y X Y Z C x y p X x X ()X,Y ,Z x ()x,y ()X,Y ,Z ()x,y x =fX/Z y =fY /Z ()↦()
X,
Y ,
Z fX/Z,
fY /Z ↦=⎛⎝
⎜⎜⎜X Y Z 1
⎞
⎠⎟
⎟⎟⎛⎝⎜fX fY Z ⎞⎠⎟⎡⎣⎢f f
1000⎤
⎦
⎥⎛⎝
⎜⎜⎜X Y Z 1⎞⎠
⎟⎟⎟P x =PX
p ()
,p x p y
⾥。图形坐标系的原点是图⽚的左下⾓,所以能够得到:
相当于在上⾯的基础上加了⼀个p 点坐标的偏移量,同⼀时候能够表⽰为矩阵计算为(在这⾥⽤的是齐次坐标的表⽰⽅式):
整理⼀下得:
所以最后能够得到 。也就是平时所说的相机内參(Intrinsic parameters ):
以及投影矩阵 (在这⾥能够觉得旋转矩阵 为单位矩阵 。平移矩阵 都为0,这也是为什么要拆成这样的⽅式),为:
像素坐标
前⾯也提到了在图像坐标系中⽤的不是现实⽣活中的m 来度量。⽽是⽤的 pixel 的个数,所以在上⾯
转换到图像坐标系中还有个问题。就是坐标的表⽰还是m ,并没有转换到像素坐标系统;在这⾥须要引⼊⼀个新概念就是:
anklet表⽰在⽔平⽅向1m 的长度包含的像素的个数; 表⽰在竖直⽅向1m 的长度包含的像素的个数;
可能有⼈奇怪为啥不是⼀个值,还须要分别指定 和 呀,这是由于通过上⾯能够得到⼀个像素点的⼤⼩(m 度量)为:
可是须要说明的是像素并不⼀定是⼀个正⽅形。有时候可能也是⼀个矩形。所以要分别指定。 所以能够把上⾯相机内參 变为更新为。转换公式把 替换就可以,其它不变:
⼀般来说。在使⽤相机内參K 计算坐标系转换时,提供的都是已经变换后的值;⽐如会提供 , ,, 四个值代表相机内參,事实上 就是这⾥的 ,同理 是 , 是 。 是 。
carry怎么读世界坐标系 转换到 图像坐标系
坐标系介绍
如上图所看到的(图⽚来⾃UIUC 计算机视觉课件)。从世界坐标系转换到相机坐标系是三维空间到三维空间的变换。⼀般来说须要⼀个平移操作和⼀个旋转操作就能够完毕这个转换。⽤公式表演⽰样
例如以下(能够理解为世界坐标系原点先平移到相机坐标系的位置然后在做⼀次坐标系旋转,使坐标轴对齐。):
表⽰旋转矩阵;
表⽰ 点在世界坐标系中的位置; 表⽰相机原点 在世界坐标系中的位置; 表⽰ 点在相机坐标系中的位置;()↦()
X,
Y ,
Z fX/Z +,p x fY /Z +p y ↦=⎛⎝
bureau⎜⎜⎜X Y Z 1
⎞
⎠⎟
⎟⎟⎛⎝⎜fX +Zp x fY +Zp y Z ⎞⎠⎟⎡⎣⎢f f
p x
p y 1000⎤⎦
⎥⎛⎝
⎜⎜⎜X Y Z 1⎞⎠
⎟⎟⎟=⎛⎝⎜fX +Zp x fY +Zp y Z
⎞⎠⎟⎡⎣⎢f f
p x p y 1⎤⎦⎥⎡⎣⎢111000⎤⎦⎥⎛⎝⎜⎜⎜X Y Z 1⎞⎠
⎟
⎟
⎟K K =⎡⎣
⎢label是什么意思
游戏开发培训学校
f
f
p x p y 1⎤⎦⎥P R I t P =K []
I
0m x m y m x m y ×1m x 1m y
K K K ==⎡⎣
⎢
m x m y
1⎤⎦⎥⎡⎣
⎢f f
p x p y 1⎤⎦
⎥⎡⎣⎢
αx αy
βx βy 1⎤
⎦
⎥f x f y c x c y K f x αx f y αy c x βx c y βy =R(−)X
˜cam
X
˜C ˜R X
˜X C
˜C X
˜cam X
世界 转换到 相机
依据上⾯的公式能够得到从⼀个三维点从世界坐标系转换到相机坐标的变换公式例如以下(也是⽤的齐次坐标的表⽰⽅式):
世界 转换到 图像
依据上⾯的讨论知道了如何从世界坐标系转换到相机坐标系(平移和旋转)以及从相机坐标系转换到图像坐标系(相机内參变换),所以带⼊上⾯的矩阵计算,能够得到:
这样就得到了终于的投影矩阵 :
当中:
在这⾥, ⼀般称为相机内參(intrinsic parameters ),描写叙述了相机的内部參数,包含焦距 、主点 的位置、以及像素与真实环境的⼤
⼩⽐例等。这个是固有属性,是提供好的。 和 称为相机外參(extrinsic parameters )。 在这⾥是旋转矩阵。能够转换为三维的旋转向量。分别表⽰绕。, 三个轴的旋转⾓度。 眼下就是⼀个平移向量,分别表⽰在,, 三个⽅向上的平移量。
畸变參数(distortion parameters )
在⼏何光学和阴极射线管(CRT)显⽰中。畸变(distortion ) 是对直线投影(rectilinear projection )的⼀种偏移。
简单来说直线投影是场景内的⼀条直线投影到图⽚上也保持为⼀条直线。那畸变简单来说就是⼀条直线投影到图⽚上不能保持为⼀条直线了。这是⼀种光学畸变(optical aberration )。可能由于摄像机镜头的原因,这⾥不讨论。有兴趣的能够查阅光学畸变的相关的资料。 畸变⼀般能够分为两⼤类,包含径向畸变和切向畸变。基本的⼀般径向畸变有时也会有轻微的切向畸变。
drilling径向畸变(Radial distortion )
径向畸变的效应有三种。⼀种是桶形畸变(barrel distortion ),还有⼀种是枕形畸变(pincushion distortion )。还有⼀种是两种的结合叫做胡⼦畸变(mustache distortion ),从图⽚中能够⾮常easy 看出差别。详细见下图(图⽚来⾃wikipedia ):径向畸变能够⽤例如以下公式修正:
切向畸变(tangential distortion )
切向畸变是由于透镜与成像平⾯不严格的平⾏,其能够⽤例如以下公式修正:
当中:
和 表⽰有畸变的坐标; 和 表⽰修复后的坐标;,。 表⽰径向畸变參数;, 表⽰切向畸变參数。
所以终于得到5个畸变參数:
相机标定
=()=[]()=[]X X cam X
˜
cam
1
R
−RC
daad˜1X ˜1R 0−RC
˜1
x =K []=K []X I
0X cam R −RC
˜P P =K []
R t t =−RC
˜K f p R t R x y z t x y z =(1+++)x corr x dis k 1r 2k 2r 4k 3r 6=(1+++)
y corr y dis k 1r 2k 2r 4k 3r 6=+[2xy +(+2)]x corr x dis p 1p 2r 2x 2=+[(+2)+2xy]
y corr y dis p 1r 2y 2p 2x dis y dis x corr y corr k 1k 2k 3p 1p 2D =()
,
k 1,k 2,p 1,
p 2k 3
那么能够利⽤这些来进⾏终于的任务相机标定。简单的过程能够描写叙述为通过标定板。例如以下图。
能够得到n 个相应的世界坐标三维点 和相应的图像坐标⼆维点 ,这些三维点到⼆维点的转换都能够通过上⾯提到的相机内參 。相机外參 和 ,以及畸变參数 经过⼀系列的矩阵变换得到。
如今就⽤这些相应关系来求解这些相机參数。最后就是⽤线性⽅法求解⽅程式。这⾥就不做讨论了。
那为什么要做相机标定呢?
每⼀个镜头的畸变程度各不同样,通过相机标定能够校正这样的镜头畸变。事实上能够觉得⽤这样的标定的⽅式来求解相机内參和畸变參数。相当于⼀种相机校准,然后这些參数就能够⽤于后⾯的求解。
⽐如求解新拍的两幅图⽚相对的 和 。求解这个外參⽤到就是标定得到的相机内參和畸变參数。
齐次坐标
就是将⼀个原本是n 维的向量⽤⼀个n+1维向量来表⽰。
很多图形应⽤涉及到⼏何变换。主要包含平移、旋转、缩放。
以矩阵表达式来计算这些变换时,平移是矩阵相加,旋转和缩放则是矩阵相乘,综合起来能够表⽰为
(注:由于习惯的原因,实际使⽤时⼀般使⽤变化矩阵左乘向量)( 旋转缩放矩阵, 为平移矩阵, 为原向量, 为变换后的向量)。引⼊齐次坐标的⽬的主要是合并矩阵运算中的乘法和加法,表⽰为 的形式。即它提供了⽤矩阵运算把⼆维、三维甚⾄⾼维空间中的⼀个点集从⼀个坐标系变换到还有⼀个坐标系的有效⽅法。和上⾯的计算过程是相应的。
sprayX i x i K R t D R t x =R ∗X +t R t X x x =P ∗X