为了更好的理解标定,首先应熟悉各个坐标系。(坐标系图均取自百度百科)
图像坐标系和像素坐标系都是在像平面上的坐标系。
但是像素坐标系的单位是pixel
,而图像坐标系的单位是mm
因此,从像素坐标系到图像坐标系主要是对图像实际尺寸的转化,从矩阵角度来看就是做了一次仿射变换
图像坐标系到相机坐标系主要是基于小孔成像原理,以相机的光心(小孔)作为原点,X轴为水平方向,Y轴为竖直方向,Z轴垂直与像平面。
世界坐标系通常取:拍摄的第一张图像时相机的光心(小孔)作为原点,X轴为水平方向,Y轴为竖直方向,Z轴指向本次拍摄时相机所观察的方向。
世界坐标系和相机坐标系类似,但世界坐标系是固定的,相机坐标系会随着相机位置的改变而改变,因此他们两个之间通常用一个旋转矩阵加一个平移矩阵就可以表示了。
首先应明确,相机标定是为了描述相机的二维成像到三维空间的映射关系(像素坐标系到世界坐标系)。
而手眼标定描述的是相机坐标系、Base坐标系、机器手坐标系、工具坐标系之前的关系。因此一般是先进行相机标定,再将结果用于手眼标定。
F、K、Sx、Sy、Cx、Cy
六个参数来表示;也可以精简为s、fx、fy、u0、v0
五个参数。F
代表的是相机的焦距、K
表示的是相机的畸变系数、Sx、Sy
表示像元的大小(像元是指像素映射到三维空间的大小,即以像素表示几米)、Cx、Cy
表示图像的中心。fx指像距,即 fx = F / dx
,这里F
代表的是焦距;dx
代表的是x方向
一个像素对应的实际物理长度是多少(一个像素对应多少米)u0、v0
是指图像中心像素坐标在像素坐标系下的位置。(理论上来说应当是分辨率的一半)s
表示畸变系数综上,可以将变换总结如下:
像素坐标系 >> 图像坐标系
图像坐标系 >> 相机坐标系
故,直接从 像素坐标系 >> 相机坐标系
可以表示为:
因此,将内参矩阵K
可以总结为:
无畸变
有畸变
Tx、Ty、Tz、Rx、Ry、Rz
其中Tx、Ty、Tz
表示沿x、y、z轴的平移分量
;Rx、Ry、Rz
表示沿x、y、z轴的旋转分量
。
因此外参矩阵由Tx、Ty、Tz
组成的平移矩阵T
和由Rx、Ry、Rz
组成的旋转矩阵R
表示。
综上,从 像素坐标系 >> 世界坐标系
可以直接表示为:
传统标定、自校准标定和基于主动视觉的标定
传统方法
优点在于可以使用任何相机型号,校准精度高,所以当应用程序需要高精度时,常常使用这类方法。缺点在于需要标定物且算法复杂。自标定法
优点是只利用内参,不需要固定相机位置,其灵活性高且可以在线标定。但缺点也很明显,其精度不高,鲁棒性也差。基于主动视觉标定的方法
是将相机固定在一个可控平台,控制相机在该平台的可控范围内拍摄多张图片,进而获得内、外参。该方法的研究重点是相机模型参数的线性解,而最大限度地减少相机移动限制。 如果没有张式标定:
https://blog.csdn.net/qq_40369926/article/details/89251296
手眼标定:
https://blog.csdn.net/weixin_41074793/article/details/89477476
由此可知,剩下的几次在不同位姿拍摄的标定图像主要是用来调整内参的。(而不是外参)