相机校准是一种通过校正镜头畸变或以世界单位测量物体尺寸来提高相机拍摄图像质量的技术。在诸如机器视觉测量实际物体尺寸、机器人导航和3D场景重建等应用中,校准相机是必不可少的组件。
摄像机校准包括确定摄像机的特性:内在参数和外在参数。内部参数定义相机的内部特性,例如镜头焦距、光学中心和镜头畸变系数。了解这些参数可以提高图像质量,纠正镜头畸变,并将真实距离映射到像素。外部参数定义了相机相对于固定物体在空间中的位置,这些参数对于立体校准和运动结构至关重要。在本视频中,您将看到使用MATLAB进行摄像机校准是多么容易,包括鱼眼镜头和立体视觉。
计算机视觉工具箱提供MATLAB函数和用于执行相机校准的交互式应用程序。Camera Calibrator应用程序是一个简单的交互式界面,可以完成校准工作流程。
首先,添加棋盘格校准图案的校准图像。之所以使用棋盘,是因为棋盘的规则图案使其易于自动检测。建议使用10到20张图像以获得准确的校准结果。
接下来,以世界单位输入方格的大小,例如毫米、厘米或英寸。这是查找世界单位和图像像素之间的映射的必要步骤。然后,该应用程序会自动检测所提供图像中的棋盘格校准模式。
然后,您可以通过放大检查结果来检查棋盘检测器的准确性。这有助于查找不正确的检测并删除不良图像。在“选项”下,还可以指定计算的径向畸变系数的数量。当光线在透镜边缘附近的弯曲程度大于在光学中心的弯曲程度时,就会发生径向畸变。通常,两个系数就足够了,但对于严重失真,如广角镜头,可能需要三个系数。您还可以启用切向畸变的估计。当镜头和相机传感器不平行时,会发生这种失真。
现在,按下“校准”按钮以求解相机参数。校准完成后,您可以通过可视化重新投影错误来评估校准结果。重投影错误
是校准误差的全局度量,是图像中检测到的点与使用刚刚计算的相机参数重新投影到图像上的点之间的差异。这有助于识别不良图像,您可以删除这些图像并重新校准以获得更好的结果。
您还可以可视化外部参数,以查看从哪个角度拍摄校准图像。这有助于确定何时没有从足够的角度捕获校准图像,并且可能需要更多图像来改进校准结果。
现在我们已经了解了标准相机的校准流程,让我们看看鱼眼或广角镜头的校准流程。
与标准相机镜头不同,这些相机使用一系列复杂的镜头来放大相机的视野,使其能够拍摄宽全景或半球形图像。然而,镜头通过扭曲图像中的透视线来实现这种极宽的视角。计算机视觉工具箱校准算法使用Scaramuzza提出的鱼眼摄像机模型,其中固有参数解释了极端变形和拉伸。
在应用程序中,选择Camera Model选项作为“Fisheye”。在Options下,您现在可以选择启用传感器和图像平面之间的对齐估计。运行校准后,可以查看已补偿镜头畸变的未失真图像。镜头畸变是一个常见问题,它会导致直线出现弯曲。了解了相机的固有参数后,我们可以应用一个消除镜头畸变的非失真例程,现在您可以看到,看起来弯曲的边缘现在已经被拉直了。校正镜头畸变在计算机视觉应用中非常有用,例如将图像拼接在一起形成全景图,该全景图要求图像不失真才能正常工作。
下面是计算机视觉工具箱中的一个示例,它显示了如何测量右侧图像中显示的几个便士的直径。
最后,让我们看一下使用MATLAB进行立体相机校准的工作流程。立体视觉是通过比较同一场景的两个或多个视图从相机图像中恢复深度的过程。此计算的输出对于设计3D点云很有用,其中每个3D点对应于其中一个图像中的一个像素。MATLAB中的立体相机校准器应用程序允许您估计立体相机对中每个相机的几何参数。您还可以估计摄影机对之间的平移和旋转。在应用程序中,分别加载两个摄像头的校准检查板图像,然后按照与之前相同的步骤执行校准并分析结果。
这里的重投影误差条形图显示了每张图像的平均重投影误差以及总平均误差。单击“视图”部分中的“显示校正”选项可显示立体校正的效果。如果校准准确,图像将不失真,并对齐行。
有关文档中立体视觉深度估计的详细示例,请参阅链接说明。
感谢您观看此视频,请访问mathworks.com了解有关相机校准的更多信息。