简介
摄像机标定(Camera calibration)简单来讲是从世界坐标系换到图像坐标系的过程,也就是求最终的投影矩阵
基本的坐标系:html
- 世界坐标系(world coordinate system);
- 相机坐标系(camera coordinate system);
- 图像坐标系(image coordinate system);
通常来讲,标定的过程分为两个部分:spring
- 第一步是从世界坐标系转换为相机坐标系,这一步是三维点到三维点的转换,包括
R ,t (相机外参)等参数; - 第二部是从相机坐标系转为图像坐标系,这一步是三维点到二维点的转换,包括
K (相机内参)等参数;
相机坐标系 转换到 图像坐标系
坐标系介绍
如上图所示(图片来自UIUC计算机视觉课件),是一个小孔成像的模型,其中:atom
-
C 点表示camera centre
,即相机的中心点,也是相机坐标系的中心点; -
Z 轴表示principal axis
,即相机的主轴; -
p 点所在的平面表示image plane
,即相机的像平面,也就是图片坐标系所在的二维平面; -
p 点表示principal point
,即主点,主轴与像平面相交的点; -
C 点到p 点的距离,也就是右边图中的f 表示focal length
,即相机的焦距; - 像平面上的
x 和y 坐标轴是与相机坐标系上的X 和Y 坐标轴互相平行的; - 相机坐标系是以
X ,Y ,Z (大写)三个轴组成的且原点在C 点,度量值为米(m
); - 像平面坐标系是以
x ,y (小写)两个轴组成的且原点在p 点,度量值为米(m
); - 图像坐标系通常指图片相对坐标系,在这里能够认为和像平面坐标系在一个平面上,不过原点是在图片的角上,并且度量值为像素的个数(
pixel
);
相机 转换到 像平面
知道上面的简单知识后,若是知道相机坐标系中的一个点
spa
能够表示为矩阵计算为(在这里用的是齐次坐标的表示方式,关于齐次坐标文章最下面有介绍):
code
能够简写为(
orm
加入偏移量
经过上面,能够把相机坐标系转换到像平面坐标系,可是像平面坐标系和图像坐标系虽然在同一个平面上,可是原点并非同一个,而目标是要转换到图像坐标系下,因此还须要一步操做,以下图:htm
如上图所示(图片来自UIUC计算机视觉课件),其中主点
图片
至关于在上面的基础上加了一个p
点坐标的偏移量,同时能够表示为矩阵计算为(在这里用的是齐次坐标的表示方式):
ip
整理一下得:
因此最后能够获得
Intrinsic parameters
):
以及投影矩阵
像素坐标
前面也提到了在图像坐标系中用的不是现实生活中的m
来度量,而是用的 pixel
的个数,因此在上面转换到图像坐标系中还有个问题,就是坐标的表示仍是m
,并无转换到像素坐标系统;在这里须要引入一个新概念就是:
-
mx 表示在水平方向1m
的长度包含的像素的个数; -
my 表示在竖直方向1m
的长度包含的像素的个数;
可能有人奇怪为啥不是一个值,还须要分别指定
m
度量)为:
可是须要说明的是像素并不必定是一个正方形,有时候可能也是一个矩形,因此要分别指定。
因此能够把上面相机内参
通常来讲,在使用相机内参K
计算坐标系转换时,提供的都是已经变换后的值;例如会提供
世界坐标系 转换到 图像坐标系
坐标系介绍
如上图所示(图片来自UIUC计算机视觉课件),从世界坐标系转换到相机坐标系是三维空间到三维空间的变换,通常来讲须要一个平移操做和一个旋转操做就能够完成这个转换,用公式表示以下(能够理解为世界坐标系原点先平移到相机坐标系的位置而后在作一次坐标系旋转,使坐标轴对齐。):
-
R 表示旋转矩阵; -
X˜ 表示X 点在世界坐标系中的位置; -
C˜ 表示相机原点C 在世界坐标系中的位置; -
X˜cam 表示X 点在相机坐标系中的位置;
世界 转换到 相机
根据上面的公式能够获得从一个三维点从世界坐标系转换到相机坐标的变换公式以下(也是用的齐次坐标的表示方式):
世界 转换到 图像
根据上面的讨论知道了怎样从世界坐标系转换到相机坐标系(平移和旋转)以及从相机坐标系转换到图像坐标系(相机内参变换),因此带入上面的矩阵计算,能够获得:
这样就获得了最终的投影矩阵
其中:
在这里,
intrinsic parameters
),描述了相机的内部参数,包括焦距
extrinsic parameters
),
畸变参数(distortion parameters
)
在几何光学和阴极射线管(CRT)显示中,畸变(distortion
) 是对直线投影(rectilinear projection
)的一种偏移。简单来讲直线投影是场景内的一条直线投影到图片上也保持为一条直线。那畸变简单来讲就是一条直线投影到图片上不能保持为一条直线了,这是一种光学畸变(optical aberration
)。可能因为摄像机镜头的缘由,这里不讨论,有兴趣的能够查阅光学畸变的相关的资料。
畸变通常能够分为两大类,包括径向畸变和切向畸变。主要的通常径向畸变有时也会有轻微的切向畸变。
径向畸变(Radial distortion
)
径向畸变的效应有三种,一种是桶形畸变(barrel distortion
),另外一种是枕形畸变(pincushion distortion
),还有一种是两种的结合叫作胡子畸变(mustache distortion
),从图片中能够很容易看出区别,具体见下图(图片来自wikipedia
):
径向畸变能够用以下公式修正:
切向畸变(tangential distortion
)
切向畸变是因为透镜与成像平面不严格的平行,其能够用以下公式修正:
其中:
-
xdis 和ydis 表示有畸变的坐标; -
xcorr 和ycorr 表示修复后的坐标; -
k1 ,k2 ,k3 表示径向畸变参数; -
p1 ,p2 表示切向畸变参数;
因此最终获得5个畸变参数:
相机标定
那么能够利用这些来进行最终的任务相机标定,简单的过程能够描述为经过标定板,以下图,能够获得n个对应的世界坐标三维点
那为何要作相机标定呢?
每一个镜头的畸变程度各不相同,经过相机标定能够校订这种镜头畸变。其实能够认为用这种标定的方式来求解相机内参和畸变参数,至关于一种相机校准,而后这些参数就能够用于后面的求解。例如求解新拍的两幅图片相对的
齐次坐标
就是将一个本来是n维的向量用一个n+1维向量来表示。
许多图形应用涉及到几何变换,主要包括平移、旋转、缩放。以矩阵表达式来计算这些变换时,平移是矩阵相加,旋转和缩放则是矩阵相乘,综合起来能够表示为x=R∗X+t (注:由于习惯的缘由,实际使用时通常使用变化矩阵左乘向量)(R 旋转缩放矩阵,t 为平移矩阵,X 为原向量,x 为变换后的向量)。引入齐次坐标的目的主要是合并矩阵运算中的乘法和加法,表示为x=P∗X 的形式。即它提供了用矩阵运算把二维、三维甚至高维空间中的一个点集从一个坐标系变换到另外一个坐标系的有效方法。和上面的计算过程是对应的。
简介
摄像机标定(Camera calibration)简单来讲是从世界坐标系换到图像坐标系的过程,也就是求最终的投影矩阵
基本的坐标系:
- 世界坐标系(world coordinate system);
- 相机坐标系(camera coordinate system);
- 图像坐标系(image coordinate system);
通常来讲,标定的过程分为两个部分:
- 第一步是从世界坐标系转换为相机坐标系,这一步是三维点到三维点的转换,包括
R ,t (相机外参)等参数; - 第二部是从相机坐标系转为图像坐标系,这一步是三维点到二维点的转换,包括
K (相机内参)等参数;
相机坐标系 转换到 图像坐标系
坐标系介绍
如上图所示(图片来自UIUC计算机视觉课件),是一个小孔成像的模型,其中:
-
C 点表示camera centre
,即相机的中心点,也是相机坐标系的中心点; -
Z 轴表示principal axis
,即相机的主轴; -
p 点所在的平面表示image plane
,即相机的像平面,也就是图片坐标系所在的二维平面; -
p 点表示principal point
,即主点,主轴与像平面相交的点; -
C 点到p 点的距离,也就是右边图中的f 表示focal length
,即相机的焦距; - 像平面上的
x 和y 坐标轴是与相机坐标系上的X 和Y 坐标轴互相平行的; - 相机坐标系是以
X ,Y ,Z (大写)三个轴组成的且原点在C 点,度量值为米(m
); - 像平面坐标系是以
x ,y (小写)两个轴组成的且原点在p 点,度量值为米(m
); - 图像坐标系通常指图片相对坐标系,在这里能够认为和像平面坐标系在一个平面上,不过原点是在图片的角上,并且度量值为像素的个数(
pixel
);
相机 转换到 像平面
知道上面的简单知识后,若是知道相机坐标系中的一个点
能够表示为矩阵计算为(在这里用的是齐次坐标的表示方式,关于齐次坐标文章最下面有介绍):