相机标定精度研究

张建贺实验设计

1 外参重复性精度测试:

(同内参,不同外参特征点,9选择4,组合)

1 外参几乎没有什么重复性误差??? 只要4对都正确,则刚性匹配基本正确

解释:激光点云到相机 转换本身的刚性匹配,而相机坐标系到图像坐标系是非刚性匹配。

(不同内参,同特征点外参)

猜测结论:
1 内参重复性误差大的原因
内参的求解是非线性求解,标定时图像采样姿态分布不同,会导致覆盖不到的图像区域匹配误差大的情况。

2 点云投影图像局部不准,且主要出现在图像的边缘,是因为内参fxy cxy,k1,k2,p1,p2,而不是外参R,t,
解释: 因为畸变大矫正插值后出现横向拉伸,原因是内参是PnP重投影误差最小化求解的局部最优解

2 内参重复性精度测试:(多组照片,相差结果如何)

有人做过,利用不同棋盘格(大小,格子数量,)结果对比 fx,cx,k1,p1
在这里插入图片描述
实验设定:

每组测试,拍摄几十张图像,然后从中随机选择N幅图像用于标定。随机标定100次。标定使用MATLAB的工具包。将标定得到的参数,显示在四张图中(没显示k3参数)。图中每个点,代表某次参数的标定结果。不同形状的点代表不同的组。
opencv 内参返回fx,fy,cx,cy
D的排序
(k1,k2,p1,p2,k3)
在式(5.11)描述的纠正模型中,对于畸变较小的图像中心区域,畸变纠正主要是 k1
起作用。而对于畸变较大的边缘区域主要是 k2 起作用。

fy(494±10)
fx(492±10)
cx(387±7)
cy(282±7)
k1(-0.33±0.03)
k2(0.2±0.8)
p1(-0.5±3.5)
p2(1.5±1.5)

在这里插入图片描述
在这里插入图片描述

标定方法描述

相机固定,移动标定板

1 内外参标定重复性误差对比试验

主要是fx,fy,ux,uy的变化比较大,R,t的值比较稳定。应该是在单目标定那一步就出现了不稳定情况。

1 张正友棋盘格小孔成像模型 相机内参标定重复性精度测试

opencv内参标定沿袭了张正友方法,分4步骤:计算单应性矩阵,计算内参初值,外参初值,LM优化。

1 同一个组相片计算内参重复性误差几乎为0,且与同一个棋盘格不管设置边长1cm或10cm结果不变

好解释,因为
opencv内参标定沿袭了张正友方法,分4步骤:计算单应性矩阵,计算内参初值,外参初值,LM优化。
同一组相片角点数据来源相同,收敛结果相同

2 多组照片 分别计算内参外 K和d的重复性误差较大,为什么?

从计算角度来解释其中的原因

1.计算的内外参数的初值不同,又因为标定中的非线性优化,收敛到局部的极小值,但跟全局的极小值接近。
2.标定获得数据不稳定,首先可能采集图像的时候,不同的姿态下的图像不够多,或者图像的姿态分布的空间不够大,得到一个有偏的初值。
3·标定板的大小不合适,这个影响也很大,我的理解是这样的,因为计算homograph的时候内外参数耦合在一起,内外参数是依赖外参的单位正交性计算得出,一个不合适的标定板的大小产生过小或者过大的平面点,容易导致homography的数值不稳定。感觉实验中B的标定板是比较合适的,因此结果比较准确。

从成像角度解释

先给结论:这是由于感光器噪音引起的。

相机的感光器本身就是一个传感器,传感器的作用是将各种外界信号转化为电信号,这个转化过程存在许多噪音。

对于太便宜的相机,所得图像质量太差,导致标定精度低的情况,有一些工程解决方法:标定板姿态变化时的倾斜角度不要太多,尽量正对标定板。标定板太倾斜时,角点提取受光照的影响也会增大。2. 将opencv的cv::moment改成cv::FitEllipse,后者是通过角点轮廓拟合得到圆心的,相对稳定。

从成像模型

1.首先是相机模型,一般针孔相机模型是含有畸变的,包括径向畸变和切向畸变,但是标定算法一般只考虑低阶项,做了近似。之前尝试过用MEI和kannala-brandt模型去标定鱼眼相机,得到的重投影误差也是很接近的,但是模型的参数是不一样的;也尝试用SCARAMUZZA模型,但是标定的效果反而并不好,初步分析是因为参数太多出现过拟合。

2.标定板,常用的标定算法(OpenCV, ROS等)都会假设标定板上面的角点是共面的,但是实际的情况并不是如此,这个和材料的精度是有关系的。从材料上来说,标定板有铝基板,浮法玻璃板等,平整程度从0.01毫米到1mm;从打印材料来说,纸面的打印材料对成像的像素精度也是有很大的影响的;从尺寸上来说,标定板的尺寸从40cm到2米不等,对于汽车的相机的标定通常使用长宽都在1米以上的标定板。

3.角点提取算法及优化算法。角点提取算法和后端的优化算法也会带来系统误差,这个可以通过更多的测量数据来减小,即在不同角度采集更多的数据进行标定;如果有需要的话,也可以跟标定板打光,保证整个标定板光照的一致性,减小环境光对角点提取的影响。

总的来说,相机的内参标定需要选中合适的模型,模型太复杂会导致过拟合,模型太简单,不容易描述相机的真实内参;其次标定的材料都尽量选则比较好的,如果有需要,也可以采用打光等手段;系统误差,只能通过大量的数据多次测量来消除。

从采集图像的差异来看

如果标定板只占据图像的一小部分,比如说没有覆盖左上部分,如果这样的图像比较多,则可能导致最优化落入局部最优,最终的重投影误差可能不大,但是两组这样的图像的标定结果可能差很大。

以我的经验,我认为,想提高相机标定的精度和稳定性(同一相机的标定结果方差较小) 的最好方法是,用足够大的标定板,可以覆盖整个图像,并且控制点的数量较多,标定板位姿越多越好。

内参标定结论

1 背光板
2 大尺寸
3 多格子
4 多姿态,且位置拍摄数量均匀
5 提高特征检测精度

1 用高精度透明标定板配合背光源,相机用小光圈,短曝光时间,并严格安装于三脚架上使用,减少环境光与抖动的影响,提升拍摄得到的标定板角点特征的锐度;
2 采用合理的多角度拍摄,并且尽量让标定图片出现在相机画幅的各个位置,避免相同姿态下的大量拍摄;3 采用精度更高鲁棒性更好的特征检测算法,提升特征检测的精度。
https://www.bilibili.com/video/BV1eE411c7kr/?vd_source=f65e306d0af6803beb4c44df1a43e7af
作者:沈毅君
链接:https://www.zhihu.com/question/312986053/answer/2330621055
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Matlab标定工具箱是一组用于相机标定的函数和工具,它包括一个GUI,可以帮助用户进行标定的工作。Matlab标定工具箱的源代码可以帮助用户了解标定算法的实现和掌握标定过程。 Matlab标定工具箱的源代码是基于Matlab编写的,并且开放源代码,用户可以随时下载、查看和修改。该工具箱提供了多种标定算法,包括传统的张正友标定方法和基于极线的标定方法。用户可以根据自己的需要选择合适的标定算法。同时,该工具箱也提供了多种标定板类型,如棋盘格、圆心网格和椭圆标定板等等,使得用户能够在不同场景下进行标定。 在使用Matlab标定工具箱进行标定时,用户只需要输入标定板的图片和相应的参数,即可完成相机标定过程。Matlab标定工具箱可以输出相机内参和畸变参数等信息,这些信息对于后续的计算机视觉应用非常有用。 总之,Matlab标定工具箱的源代码为用户提供了理解和掌握标定算法的途径,并且可以根据用户的需求进行定制和扩展。 ### 回答2: MATLAB标定工具箱是一种用于摄像头标定的工具箱,它可以帮助用户确定摄像头的内部参数和外部参数,以实现精确的图像测量和计算。标定工具箱的源代码主要包括标定算法所需的数学模型和计算方法。在MATLAB中,用户可以使用这些代码来创建定制化的标定算法,以满足不同的标定需求。 标定工具箱的源代码主要分为以下几个部分:相机模型、特征提取、标定方法和误差评估。相机模型是标定算法的核心部分,通过建立摄像头投影图像和实际场景之间的数学映射关系,从而确定摄像头的内部参数(如主点位置、畸变系数等)和外部参数(如相机姿态、位置等)。特征提取部分则通过图像处理技术提取出具有一定特征的场景点,如角点、面点等,从而在标定过程中作为参考点来计算摄像头参数。标定方法部分包括多种算法,如张氏标定法、Tsai标定法、Ding标定法等,用户根据实际需求选择合适的算法进行标定。误差评估部分用于评估标定结果的精度,一般采用重投影误差、误差矩阵等方法进行评估。 总之,MATLAB标定工具箱的源代码为用户提供了一种快速、方便、高效的摄像头标定方法,并通过定制化的算法和误差评估,为用户提供了更加精确的标定结果。 ### 回答3: Matlab标定工具箱是一个用于摄像头标定的工具箱,它提供了一组函数,可以实现摄像头内参数和外参数的标定。这个工具箱的源代码可以用于自定义的需求,比如改变标定算法、增加标定参数等等。 标定工具箱的源代码包含了很多文件,包括主函数文件、图像处理函数文件、参数计算函数文件等等。其中最核心的部分是相机内参和外参计算的程序,它们在标定工具箱里被称为“标定模型”。 相机内参计算是通过对特定的标定板进行采样,定位出标定板上的角点,并计算出每个角点在像素坐标系中的具体坐标来实现的。相机外参计算则是通过对不同的摄像头姿态下的标定板进行拍照,然后测量标定板的3D坐标系下的标志点坐标,以及在不同姿态下的对应像素坐标,最终计算得到相机的外参数。 标定工具箱源代码的主要优点是可以充分利用Matlab强大的计算能力,帮助用户快速实现标定。同时,开放源代码也方便用户进一步扩展工具箱的功能,满足更多应用需求。 总的来说,Matlab标定工具箱源代码是一个强大、灵活的标定工具,对标定研究和实际应用都有较高的价值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值