手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

OpenCV:双目标定问题-内外参数,校正图像错误

时间:2024-10-12 11:34:00

1、以matlab标定结果为标准:一般标定方法有两种,分别是matlab标定和opencv标定;就准确度和稳定性来说,matlab标定优于opencv标定;但opencv标定较灵活,可以自己修改程序;常常采用matlab2016a,输入命令stereoCameraCalibrator,进行双目标定;将标定结果转置之后,输入到opencv中使用;则matlab标定结果如下:

OpenCV:双目标定问题-内外参数,校正图像错误
OpenCV:双目标定问题-内外参数,校正图像错误

2、将上述棋盘格图像经opencv官方标定程序,输入参数:argc = 6;arg箪滹埘麽v[0]="calibrator.exe";锾攒揉敫argv[1]="-w";argv[2]="8";argv[3]="-h";argv[4]="6";argv[5]="stereo_calib.xml";//图像序列square_size=28.0f;//棋盘格真实尺寸,单位mm之后,标定参数结果出错,校正图像错误,如图所示:

OpenCV:双目标定问题-内外参数,校正图像错误
OpenCV:双目标定问题-内外参数,校正图像错误

3、问题分析:先从输入量开始分析,主要输入量为:argv[1]=&孥恶膈茯quot;-w";argv[2]="8"稆糨孝汶; argv[3]="-h"; argv[4]="6"; argv[5]="stereo_calib.xml";//图像序列square_size=28.0f;//棋盘格真实尺寸,单位mm,其中,①"-w";"8";"-h";"6"为棋盘格内角点;如图所示:可见棋盘格内角点输入正确,排除此项;②square_size=28.0f;//棋盘格真实尺寸,单位mm,也正确;因此,只有图像序列中出现问题;

OpenCV:双目标定问题-内外参数,校正图像错误

4、图像角点分析:因matlab能正确得出相机参数,故图像本身不存在问题;问题或许在图像角点检测中,①双目标定的棋盘格是否都出禊耗髻编现在左右摄像机的视野?一定要保证棋盘格全部进入左右相机视野,这样才能正确建立两个相机的坐标关系。在opencv官方程序中,findChessboardCorners()返回值可判断角点是否检测完整;排除;②利用stereocalibration标定过程中,其中的flags的赋值也需要注意;只要设置好值,这个影响不大,个人觉得;③opencv棋盘格角点检测有两种顺序,逆时和瞬时;因此,这里就会出现问题—同一位置下的棋盘格,通过角点提取过程,左右相机标定的角点必须选择相同的的网格点和相同的原点(为了保证相同的模式参考系)。因此,确保相同的起源点(第一次点击)一直被选中是至关重要的。可以通过drawChessboardCorners将角点画出,判断左右图像对的角点顺序是否一致,如果不一致,则会导致标定参数不准确;【注】:在有的棋盘格图像对中,你觉得两幅图像没多少区别,但是在程序自动选取角点过程中,起源点在不同的地方,这样会给最后立体标定带来严重错误,焦距、R、T都将会发生很大偏差。

OpenCV:双目标定问题-内外参数,校正图像错误
OpenCV:双目标定问题-内外参数,校正图像错误

5、通过将上述图像序列中角点提取顺序不一致的图像删除,或者重新采集;再由opencv双目标定程序执行,得到结果,如下:

OpenCV:双目标定问题-内外参数,校正图像错误
OpenCV:双目标定问题-内外参数,校正图像错误

6、在opencv双目标定中,一般采用单目与双目结合的方法,这样可以提高相机标定的稳定性,有利于减小误差;

OpenCV:双目标定问题-内外参数,校正图像错误
© 手抄报圈