1、双目相机标定原理及流程
双目相机标定是将双目相机系统的内外参数计算出来,从而实现双目视觉中的立体测量和深度感知。标定的目的是确定各个摄像头的内部参数(如焦距、主点、畸变等)和外部参数(如相机位置、朝向等),以便将双目相机捕获的图像转换为三维空间坐标。
双目相机标定的流程如下:
-
准备标定板:使用一个已知的平面标定板,其中包含一些已知的特征点,如网格点或棋盘格,用于计算相机的内部参数。
-
拍摄图像:在不同的位置和角度下,使用双目相机对标定板进行拍摄,同时确保标定板的特征点能够被双目相机同时看到。
-
提取特征点:在拍摄的图像中,使用特定的图像处理算法(如角点检测算法)提取出标定板上的特征点。
-
标定内部参数:通过对标定板上的特征点进行分析,计算出相机的内部参数(如焦距、主点、畸变等)。
-
标定外部参数:利用双目相机拍摄的多幅图像,通过特定的三维重建算法计算相机的外部参数(如相机位置、朝向等)。
-
优化参数:通过优化算法,对计算出的内外参数进行调整,以提高标定的精度和稳定性。
最终的标定结果包括每个摄像头的内部参数和外部参数,这些参数可以用于双目视觉中的立体匹配和三维重建。
2、实验准备
1)棋盘格
棋盘格简介:
棋盘格是一种特定设计的方格图案,通常由黑色和白色交替的正方形组成,这些正方形按照固定的规律排列。棋盘格通常用于机器视觉和计算机视觉中的图像标定和姿态估计。在图像处理中,棋盘格的特定结构和规则排列使其成为一种常用的标定工具。
在双目相机标定中,棋盘格用作标定板,摄像机拍摄棋盘格图案时能够从图像中获取到棋盘格上的特征点,这些特征点可以用于计算相机的内部参数(如焦距、主点、畸变等)和外部参数(如相机位置、朝向等)。
棋盘格简单、易识别,其规则的排列和特征点的明显性使其成为图像处理和计算机视觉中常用的标定工具。
棋盘格规格:20mm*20mm棋盘格,角点7*11
A4纸打印棋盘格(链接PDF文件)
2)双目相机采集棋盘格图像
双目相机简介
双目相机是一种由两个摄像头组成的相机系统,它们通常被放置在一定的距离之间,模拟人类双眼的视觉系统。通过同时拍摄同一场景的两幅图像,双目相机可以实现立体成像,从而让计算机能够进行深度感知、立体视觉和三维重建。
双目相机的工作原理是利用每个摄像头捕捉到的图像之间的视差(即同一点在两个图像中的像素位置差异),根据视差信息计算目标物体的深度信息。在双目成像中,两个摄像头之间的距离(基线长度)越大,捕捉到的视差范围也会增大,从而可以获得更精确的深度信息。
双目相机在机器视觉、智能驾驶、机器人技术、医疗影像等领域有着广泛的应用。它可以提供更加准确的环境信息,帮助计算机进行空间感知、障碍物检测、跟踪和导航等任务。另外,双目相机也被广泛用于计算机视觉中的立体匹配、景深测量、虚拟现实和增强现实等领域。
双目相机采集图像展示:
左侧为彩色相机采集图像/右侧为红外相机采集图像
3、实验过程
实验简介
在MATLAB中进行双目相机标定通常会使用相机标定工具箱(Camera Calibration Toolbox),可以方便的进行内外参数的标定。下面是在MATLAB中使用相机标定工具箱进行双目相机标定的原理和流程:
-
安装标定工具箱:首先需要安装MATLAB相机标定工具箱,你可以从MathWorks官网下载安装。
-
数据采集:准备一组双目相机的图像数据,包括对准的标定板(如棋盘格)的多幅图像。确保拍摄时两个摄像头能够同时看到标定板。
-
特征点提取:使用相机标定工具箱中的函数,提取出标定板上的特征点。
-
标定内部参数:利用提取出的特征点数据,使用标定工具箱的函数计算出双目相机的内部参数,例如焦距、主点坐标、畸变系数等。
-
标定外部参数:通过提供的图像数据和已知的标定板参数,计算双目相机的外部参数,例如相机位置、朝向等。
-
结果优化:对计算出的内外参数进行优化,以提高标定的精度和稳定性。
-
输出结果:最后输出标定结果,内部参数和外部参数将被保存在MATLAB中供后续使用。
总之,使用MATLAB中的相机标定工具箱可以比较方便地进行双目相机的标定工作,得到双目相机的内部参数和外部参数,为后续的双目视觉应用提供基础支持。
1)APP
点击app
点击下拉
点击双目相机标定模块
2)数据导入
点击添加图片
棋盘格边长参数
左右相机视图导入文件夹
3)角点识别
角点识别过程
角点识别结果
4)畸变参数设置
径向畸变和切向畸变参数设置
5)标定
点击标定按钮
6)标定结果
初始结果
粗大误差剔除(1/2/3/4为出大误差),鼠标右键删除
剔除后效果
4、实验结果
结果简介
双目相机标定的结果通常包括以下内容:
-
内部参数:
- 标定矩阵(Intrinsic Matrix):包括主点坐标、焦距等信息,描述了相机的内部几何特性。
- 畸变系数:描述了镜头畸变(径向畸变和切向畸变)的参数,用于纠正图像畸变。
- 透镜畸变纠正参数(在某些情况下):描述了透镜的畸变情况,用于在后期处理中纠正透镜畸变。
-
外部参数:
- 外部旋转矩阵:描述相机坐标系与世界坐标系之间的旋转关系。
- 外部平移向量:描述相机坐标系相对于世界坐标系的平移关系。
-
重投影误差:即标定结果在实际图像上的投影误差,通过重投影误差可以评估标定的准确性。
-
立体匹配算法参数(在某些情况下):一些双目相机标定工具箱也会提供立体匹配算法的参数,例如视差范围、最小视差等。
-
标定板的尺寸和特征点提取参数:包括标定板的尺寸或特征点的提取方法,有助于在实际使用中保持标定的准确性。
这些标定结果可以帮助后续双目视觉应用中进行立体匹配、三维重建、深度估计等任务。通过正确的标定,可以提高双目相机的测量精度和稳定性,进而提升整个双目视觉系统的性能。
1)视图效果
2)数据分析
5、实验资源
1)棋盘格
https://download.csdn.net/download/XU157303764/89354653
2)双目相机标定图像数据
https://download.csdn.net/download/XU157303764/89354868
3)标定结果数据
https://download.csdn.net/download/XU157303764/89354866
6、总结
在MATLAB中进行双目相机标定实验的总结如下:
-
数据采集:首先需要准备一组双目相机的图像数据,确保图像中包含对准标定板(如棋盘格)的多幅图像。
-
安装标定工具箱:安装MATLAB相机标定工具箱,这样可以方便地使用其中的函数进行双目相机的内外参数标定。
-
特征点提取:使用相机标定工具箱的函数提取标定板上的特征点,常用的特征点提取方法包括角点检测、直线检测等。
-
标定内部参数:利用特征点数据计算双目相机的内部参数,如标定矩阵和畸变系数,从而纠正图像的畸变。
-
标定外部参数:根据已知的标定板参数和图像数据,计算双目相机的外部参数,包括外部旋转矩阵和外部平移向量。
-
结果分析:对标定结果进行分析和评估,如计算重投影误差,并根据误差值调整标定参数以提高标定的准确性。
-
保存结果:最后将标定得到的内外参数保存起来,以备后续使用。可以将结果保存为MATLAB格式文件,以便在其他MATLAB程序中调用。
-
实验总结:总结实验过程中遇到的问题和解决方法,比如标定板的放置方式、图像采集的参数设置等。
通过以上步骤,可以在MATLAB中完成双目相机的标定工作,并得到双目相机的内部参数和外部参数,为后续的双目视觉应用提供基础支持。标定的准确性和稳定性对于后续的立体匹配、三维重建等任务至关重要,因此在实验过程中需要尽可能确保数据的准确性和完整性。