巴拉巴

 找回密码
 立即注册

站内搜索

搜索
热搜: 活动 交友 discuz
查看: 93|回复: 0

限定opencv内参标定优化搜索范围

[复制链接]

3

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2022-12-7 18:44:11 | 显示全部楼层 |阅读模式
在使用opencv的内参标定函数时,如果直接将objpoints和imgpoints放进去计算,有时候会得到很离谱的数值,其原因是算法没有限制搜索范围导致其在错误的地方收敛了。这个时候则需要在flags参数中添加CV2.CALIB_USE_INTRINSIC_GUESS,并填入合适的内参矩阵与畸变向量参数。重新配置好参数后算法就会在填入的参数附近收敛,最终得到合理的结果。
以下结果自上而下分别为:内参矩阵,畸变向量,平均重投影误差

没有加入模板参数的结果
加入模板参数后的结果 如果没有相似摄像头的内参作为输入,可以简单的将默认数值作为输入。设图像的高为h,宽为w,一般情况下默认光心为画面中心,即cx为w/2,cy为h/2。焦距fx与fy均为w或h(我一般取较大的值)。畸变向量方面默认没有畸变,即全部为0。将此作为输入也能运算出较为合理的数值。但是通过实验发现输入的光心或焦距与实际相差超过200个像素就会有概率造成很大的差别,这个办法在有些时候并不能保证一定标定出最优解,所以这里还是推荐用一个标定好的相近的数值作为输入。
标定过程中一般会先把重投影误差较大的若干张图片筛除,然后将剩下的图片重新标定获得更加准确的结果,而在opencv中这个过程则会涉及到重复调用calibrateCamera函数的情况。这里有一个比较隐晦的坑,就是参数中的内参矩阵和畸变向量既是输入也是输出。这意味着如果使用一个声明好的变量保存内参并输入到函数中,运算结束后这个变量自身也会改变,而在最终运算前并不希望这个模板值发生改变,所以作为输入时必须要加copy保证原来的模板值不会被修改。

来源:http://www.yidianzixun.com/article/0kkf9cBe
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 返回顶部