摄像机标定02

标定物
OpenCV所使用的标定物是一个用不同黑白方块构成的平面格子,通常称为"棋盘"(即使它没有8个方块,甚至每个方向的方块个数不相等)
棋盘
原理上,任何合适的表征物体都可以用作标定物体,而实际上都选用诸如棋盘这样的规则模式。文献中一些标定方法是基于三维物体的(如有标记点的盒子),但是平面棋盘模式更容易处理,因为精确的三维标定物体难以制作(存储和发布)。因此OpenCV不是使用基于3D构造物体的视场, 而是使用平面物体(如棋盘)的多个视场。我们使用黑白方块交替排列的模式,这保证在测量上任何的一边都没有偏移。而且,格线角点也让亚像素定位函数的使用更为自然。

现在开始讨论平面物体能够做些什么。当通过针孔和透镜时,平面上的点集是经过透视变换的。该变换的各种参数将被存储到3*3单应性矩阵中
单应性
在计算机视觉中,平面的单应性被定义为从一个平面到另一个平面的投影映射。因此一个二维平面上的点映射到摄像机成像仪上的映射就是平面单应性的例子。如果对于点Q到成像仪上的点q的映射使用齐次坐标,这种映射可以用矩阵相乘的方式表示


H有两部分,用于定位观察的物体平面的物理变换和使用摄像机内参数矩阵的投影。

OpenCV使用上述公式来计算单应性矩阵,它使用同一个物体的多个图像来计算每个视场的旋转和平移,同时也计算摄像机的内参数(对所有视场不变)。旋转和平移分别用三个角度和三个偏移量定义,因此对于每个视场,有6个未知量。这没有问题,因为一个已知平面物体(如棋盘)能够提供8个方程,即映射一个正方形到四边形可以用四个点来表示。每个新的图像帧为计算新的6个未知量提供8个方程,因此,若给定足够图像,我们能够计算出来未知参数的任何值。
    通过下面的简单方程,单应性矩阵H把原图像平面上的点集位置与目标图像平面(通常为成像仪平面)上的点集位置联系起来:


摄像机标定
最后我们为摄像机内参数和畸变参数进行摄像机标定。下面,我们首先使用cvCalibrateCamera2()来计算这些值,并且利用这些模型对来自标定摄像机的图像畸变进行矫正。首先讨论需要多少棋盘视场图像来求解内参数和畸变。
棋盘角点个数和参数个数
首先回顾我们的未知因素,即标定过程求解究竟需要多少参数?在opencv里,我们有四个内参数(fx,fy,Cx,Cy)和5个畸变参数---三个径向(k1,k2,k3)和两个切向(p1,p2)。内参数直接与棋盘所在空间的3D几何相关,而畸变参数则与点集如何畸变的2D集合相关。因此,我们分别处理两大类参数。为求解5个畸变参数(为了增加鲁棒性自然也可以有更多参数),需要已知模式的三个角点所产生的6组信息是所有需要解决的5个畸变参数。因此,在内参数计算中,可以利用一个棋盘视场,接下来考虑外参数。对外参数,我们需要知道棋盘的位置。对棋盘的6个不同视场图像,需要三个旋转参数和三个平移参数。总而言之,在每个视场中,我们必须计算4个内参数和6个外参数。


尽管有很多求解摄像机参数的方法,OpenCV选择那些能够很好工作于平面物体的方法。OpenCV中使用的求解焦距和偏移的算法是基于张正由的方法,但求解畸变参数则是另外的方法
(457学习OpenCV)

标定函数:
一旦我们有多个图像的角点,就可以调用函数cvCalibrateCamera2(),此函数具体来说,我们会得到摄像机内参数矩阵、畸变系数、旋转向量和平移向量, 前两个构成摄像机的内参数,后两个构成了物体(如棋盘)位置和方向的摄像机外参数。畸变参数(k1,k2,p1,p2和k3)来自于我们前面遇到的径向和切向畸变方程。他们有助于校正这些畸变。摄像机内参数矩阵也许是最有用的结果,因为它可以将3D坐标转换为2D图像坐标。我们也可以使用摄像机矩阵来做相反的操作,但这种时候,我们只能得到与图像点对应的三维世界中的一条线。
cvCalibrateCamera2()函数中变量intrinsic_matrix和distortion_coeffs构成了摄像机的内参数,摄像机矩阵总是3*3的,而畸变系数总是5个。所以distortion_coeffs变量是一个指向5*1矩阵的指针(记录顺序是k1,k2,p1,p2,k3)。上面两个变量概括的是摄像机的内参数信息,接下来的两个变量将概括外参数信息。也就是, 他们说明与在每幅图像中相对于摄像机来说的标定物体(即棋盘)的位置。物体位置由旋转和平移表征。旋转rotation_vectors由M个三元素向量列为M*3的矩阵(M即为图像个数)。 需要小心的是,这些向量不是我们前面所讨论的3*3旋转矩阵,而是代表棋盘围绕摄像机坐标系统下三维空间的坐标轴的旋转,其中每个向量的长度表示逆时针旋转的角度。每个旋转向量可以通过调用cvRodrigues2()转换为3*3的旋转矩阵。平移translation_vectors则简单排列为第二个M*3矩阵,同样是在摄像机坐标系下。摄像机坐标系的单位以棋盘方块单位为准,即如果棋盘方块边长为1英寸,那么单位就是英寸。

只计算外参数
某些情况下我们得到了摄像机的内参数,因此只需要计算观察物体的位置。这种场景与一般的摄像机标定明显不同,但是也是一项值得完成的有用工作。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值