相机标定的理解及原理(二)

  • 来源:光虎

世界平面测量与校正

 

与观察和检查平面(平坦)表面或放置在此类表面(例如传送带)上的物体有关的视觉系统可以利用Adaptive Vision Studio的图像到世界平面转换机制,该机制可以:


从原始图像上的位置计算现实世界的坐标。例如,这对于与外部设备(例如工业机器人)的互操作性至关重要。假设在图像上检测到对象,并且需要将其位置传输到机器人。检测到的对象位置以图像坐标给出,但是机器人在现实世界中使用不同的坐标系进行操作,需要一个由世界平面定义的通用坐标系。


将图像校正到世界平面上。当使用原始图像进行图像分析不可行时(由于高度的镜头和/或透视失真),这是必需的。对校正图像执行的分析结果也可以转换为由世界平面坐标系定义的真实坐标。另一个用例是将所有摄像机的图像校正到公共世界平面上的多摄像机系统校正,从而在这些校正后的图像之间提供简单且定义明确的关系,从而可以轻松叠加或拼接。


下图显示了图像坐标系。图像坐标以像素表示,原点(0,0)对应于图像的左上角。X轴从图像的左边缘开始,并向右边缘。Y轴从图像的顶部开始向图像的底部开始。所有图像像素都具有非负坐标。


 


图像坐标中的方向和像素位置


这个世界平面是一个特殊的平面,在真实的三维世界中定义。它可以任意放置在相机上,有一个定义的原点和XY轴。


下面的图像显示了世界平面。第一幅图像呈现原始图像,这是由一个尚未安装在感兴趣物体上方的相机拍摄的。第二个图像显示的是世界平面,它已与物体所在的表面对齐。这允许从原始图像上的像素位置计算世界坐标,或者进行图像校正,如下一幅图像所示。

 



不完全定位的相机捕获的感兴趣对象

 

世界平面坐标系叠加在原始图像上


    图像到世界平面坐标的计算      


图像校正,在世界坐标下,将从点(0,0)到(5,5)的区域裁剪

 

如何实现相机标定?

 

使用针孔相机模型


滤波器通过有效地最小化RMS投影误差(图像上观察到的网格点之间的平均平方距离的平方根),从一组平面校准网格中估计摄像机的固有参数-焦距,主点位置和畸变系数,使用估计的参数(即网格姿态和相机参数)将关联的网格坐标投影到图像平面上。




如果至少一个校准网格不垂直于相机的光轴,则可以通过滤镜计算焦距。或者,可以通过inFocalLength将焦距设置为固定值。inFocalLength以像素为单位测量,可以通过传感器和镜头参数计算得出:

  



其中f_pix焦距测量为像素,f_镜头焦距测量为毫米,pp-传感器像素间距测量为每像素毫米,d-摄像机结合或/和图像缩小因子。


InFocalLength也可以从视角获得,对于水平情况,适用以下公式:

 




其中f_pix焦距以像素为单位,w-图像宽度,α-水平视角


支持一些失真模型类型。最简单的部门支持大多数用例,即使校准数据稀疏也具有可预测的行为。高阶模型可能更准确,但是它们需要更大的高质量校准点数据集,通常需要在低于0.1 pix的整个图像量级上实现高水平的位置精度。当然,这只是经验法则,因为每个镜头都不同,并且有例外。


失真模型类型与OpenCV兼容,并使用标准化图像坐标用方程表示:

 


分部失真模型


 




多项式失真模型

 



多项式--薄棱镜畸变模型



其中,x’和y’不失真,x”和y”是失真的归一化图像坐标。


相机模型可直接用于获取未失真的图像(该图像将由具有相同基本参数的相机拍摄,但不存在镜头失真),但是在大多数情况下,相机校准只是某些条件的先决条件其他操作。例如,当使用照相机检查平面(或放置在该表面上的物体)时,需要照相机模型来执行世界平面校准

  



一组用于基本校准的栅格图像

 



使用OUT ReprojectionErrorSegments用于识别图像点及其网格坐标的不良关联。

InImageGrids-两分交换


校准网格的提取


相机校准和图像到世界平面的转换计算均使用具有网格索引的图像点阵列形式的提取的校准网格,即带注释的点。


网格的实际坐标是2D,因为平面网格上任何点的相对坐标都是0。


Adaptive Vision Studio为几种标准网格格式提供了提取过滤器(例如DetectCalibrationGrid_Chessboard和DetectCalibrationGrid Circles)。


获得高精度结果的最重要因素是提取的校准点的精度和准确性。校准网格应尽可能平坦且坚硬(纸板不是合适的支撑材料,厚玻璃是完美的选择)。拍摄校准图像时,请注意适当的条件:通过适当的相机和栅格安装座最大程度地减少运动模糊,防止来自校准表面的反射(最好使用漫射照明)。使用自定义校准网格时,请确保点提取器可以达到亚像素精度。验证真实网格坐标的测量结果是否准确。另外,使用棋盘格校准格时,请确保整个校准格在图像中可见。否则,将不会检测到它,因为检测算法需要在棋盘周围有几个像素宽的空白区域。请注意列数和行数,因为提供误导性数据可能会使算法无法正常工作或根本无法工作。


使用圆点标定板的图片示例:

 



使用棋盘标定版的图片示例,只需要拍摄标定板的图片,并通过ImageObjectsToWorldPlane:Points过滤器模块,输入棋盘格的尺寸以及棋盘格所对应的像素,即可实现相机标定以及畸变校正。






再输入棋盘格每个方形格的实际尺寸,即可实现世界坐标转换图像坐标。




【来源:光虎视觉内部培训资料】