Thanks Mark W. Spong for his great work of Robot Modelling and Control.
相机外部参数与内部参数
相机坐标系与像素坐标系
为简化公式,用以相机为中心的坐标系来表示物体坐标是十分有效的。因此,定义相机坐标系如下:包含检测阵列的平面定义为图像平面;轴线
xc
和
yc
组成图像平面的坐标基,轴线
zc
垂直于图像平面且与光轴对准,即它穿过镜头的焦点;相机坐标系的原点位于图像平面后距离为一个焦距
λ
的位置;该店被称为投影中心 (center of projection);光轴与图像平面的交点被称为主点(principal point)。
图像平面中的任何一点都将具有坐标
(u,v,λ)
,我们用
(u,v)
来指代图像平面坐标(image plane coordinate)。令
P
表示相对于相机参考系坐标为
(x,y,z)
的一个点,令
p
表示
P
在图像平面内的投影,其坐标为
(u,v,λ)
。在针孔模型假设下:
k⎛⎝⎜xyz⎞⎠⎟=⎛⎝⎜uvλ⎞⎠⎟
即:
u=λxz,v=λyz
这些被称为
透视投影方程(perspective projection)。
图像是一个离散的灰度值阵列,我们使用
(r,c)
来表示一个像素的行索引和列索引。下面我们确定平面坐标
(u,v)
和像素坐标
(r,c)
之间的关系。像素坐标系的原点通常被取在图像的边角处,使用
(or,oc)
来表示包含主点的像素的像素坐标。一般情况下感测元件不具有单位尺寸也未必是正方形。使用
sx
和
sy
来分别表示一个像素在水平和垂直两个方向上的尺度。由于我们通常将相机投影中心放在图像后方,像素阵列的水平和垂直轴线与相机坐标系的水平和垂直轴线方向往往相反。基于以上描述,我们得到:
−usx=(r−or),−vsy=(c−oc)
这种关系仅是一种近似,由于像素坐标是整数,现实中可以四舍五入。
外部参数
下面我们推导如何让某一点
P
的坐标
(x,y,z)
与其在图像中的像素坐标
(r,c)
联系起来,这叫做相机的标定。在典型的机器人应用中,任务往往是相对于世界坐标系进行表达的,如果知道了相机坐标系相对于世界坐标系的位置和姿态,我们有:
xw=Rwcxc+Owc
或者说:
xc=Rcw(xw−Owc)
方便起见,我们定义:
R=Rcw,T=−RcwOwc
那么
xc=Rxw+T
其中
R
和
T
一起被称为相机的
外部参数(extrinsic camera paramter)。
内部参数
从世界坐标系到像素坐标系可以通过以下公式得到:
r=−λsxxz+or,c=−λsyyz+oc
也就是说,一旦知道了
λ,sx,or,sy,oc
的取值,我们就可以由
(x,y,z)
确定
(r,c)
,其中
(x,y,z)
是相对于相机参考系的。事实上,如果知道以下比率:
fx=λsx,fy=λsy
就可以不需要
λ,sx,sy
。 参数
fx,or,fy,oc
被称为相机的
内部参数(intrinsic camera parameter),对于一个相机,这些参数是常数。
图像中物体的位置和方向
下面我们介绍如何根据图像得到被操作物体的位置和方向。
图像矩
图像矩是定义在图像上的函数,用来描述图像中物体的形状大小等信息,对于图像中的第
k
个物体, 其
i,j
矩记作
mij(k)
,定义如下:
mij(k)=∑r,cricjIk(r,c)
其中
Ik
是
指示函数(indicator function)定义如下:
Ik(r,c)={1像素 (r,c) 包含在区域 k 内0其它情况
那么,可以看出,
m00
等于物体中像素的数目。图像矩的阶被定义为
i+j
。
质心和中心矩
计算一个物体的质心时,一阶矩十分有用:
m10(k)=∑r,crIk(r,c),m01(k)=∑r,ccIk(r,c)
物体的位置由
质心(centroid)定义。一个物体的质心为坐标等于
(r¯,c¯)
的点,并满足以下条件:如果一个物体的所有质量集中在点
(r¯,c¯)
处,其一阶矩保持不变。因此,我们有:
∑r,cr¯iIi(r,c)=∑r,crIi(r,c)⇒r¯i=∑r,crIi(r,c)∑r,cIi(r,c)=m10(i)m00(i)
∑r,cc¯iIi(r,c)=∑r,ccIi(r,c)⇒c¯i=∑r,ccIi(r,c)∑r,cIi(r,c)=m01(i)m00(i)
我们可以相对于物体的质心来计算图像矩,通过这种方式,我们可以得到某些不随物体平移而变化的特征。这些图像矩被称为
中心矩。第
k
个物体的
i,j
阶中心矩定义如下:
Cij(k)=∑r,c(r−r¯k)i(c−c¯k)jIk(r,c)
物体的方向
我们将图像中某个物体的方向定义为穿过该物体轴线的方向,此时使得物体关于轴线的二阶矩最小。这个轴线是最小惯量轴线的二维等价。对于图像中一条给定的直线,物体关于该线的二阶矩定义如下:
L=∑r,cd2(r,c)I(rj
Ik
(
r
,
c
)
物体的方向
我们将图像中某个物体的方向定义为穿过该物体轴线的方向,此时使得物体关于轴线的二阶矩最小。这个轴线是最小惯量轴线的二维等价。对于图像中一条给定的直线,物体关于该线的二阶矩定义如下:
L=∑r,cd2(r,c)I(r,c)
其中
d(r,c)
是坐标为
(r,c)
的像素距离该直线的最小距离。尽可能减小
λ
才能够使我们找到�