用Matlab对单目相机参数的标定步骤(保姆级教程)

   前言   

    在图像测量及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。
  在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定。相机参数的标定是非常关键的环节,其标定结果的精度将直接影响相机工作产生结果的准确性。本文详细介绍了利用Matlab中的单目相机标定工具来对单目相机的标定过程。

第一步:准备棋盘格并打印在A4纸上

      在相机标定之前,需要进行图像采集,采集对象是棋盘格,要打印在一张A4纸上。我采用了边长为25mm大小的棋盘格。

3d38dc08a4834837acc4c6a6b9c74d4b.png

第二步:用相机采集棋盘格照片

      首先将打印好的棋盘格照片贴在平整的白墙上,再将相机连接到电脑,打开相机,点击切换相机按钮,调出外接相机,对准棋盘格采集照片(50张左右),并保存到文件夹中。

942371ca06c84c55b7ea0280bcf53c47.jpeg

92bd4a1767d04f53a89af06fce18b84f.png

第三步:打开Matlab中的单目相机标定工具

      双击打开Matlab,再点击左上角的“APP”。

43dd63b875ca4b16b3f65f0074ee0066.png

      再点开下拉箭头找到“Camera Calibrator”并打开。

6c57f403f8774812bfa984192b6d9a57.png

ae69fdbb384f4340afcbbad678328964.png

第四步:导入拍摄的所有照片

3900aedfaf1046a68fef31fc3ea6504e.png

      选择存放照片的文件夹,全选导入。

47b63d36b61243f3832ce65dceab7852.png

      选择棋盘格小格宽度(根据你实际打印的来,我的是25mm)。

bf9ad01abc77471ca0cdaf2e8219b358.png

5468f2e39efe4b30898fd3c8be680a12.png

第五步:开始标定

      点击“Calibrate”,开始标定。

7d14858c44fb4b9899fe52c253bf5635.png

第六步:剔除误差比较大的照片

      我这里就删除重投影误差值在0.5以上的几张图片。

重投影误差树状图解析:(Reprojection Error)

纵轴(Mean Error in Pixels):
表示重投影误差的平均值,单位为像素。
误差越小,说明标定结果越精确。
横轴(Images)
表示用于标定的每一张图像编号。
蓝色柱状条:
每个柱状条表示一张标定图像的重投影误差(均值)。
重投影误差是指图像上实际检测到的角点位置与根据标定参数重新投影得到的角点位置之间的差距。
数值越小,说明该图像对于标定的误差越小,标定的精度越高。
虚线(Overall Mean Error):
图中的虚线表示总体平均重投影误差,标记为 0.39 pixels。虚线的位置表示所有图像的重投影误差的平均值。这是一个评估标定总体精度的重要指标。
图中关键点分析
大多数图像的误差集中在 0.2 到 0.5 像素范围内:这说明标定过程中,大多数图像的重投影误差较小,标定效果较为理想。
误差大可能产生的原因:角点检测受干扰、图像拍摄角度问题、光照条件变化,或棋盘格在该图像中存在畸变等。

第七步:导出数据

      点击绿色对号“Export Camera Parameters”进行导出。

      然后选择默认,点击确定。

第八步:返回工作区查看数据

      双击“Camera Params”,查看数据。

      具体参数如下图所示:

    以上就是在Matlab中标定单目相机的步骤,后续还会补充完善,若有错误的地方,请在评论区留言斧正。

猜你喜欢

转载自blog.csdn.net/m0_74115845/article/details/143783690
今日推荐