高通机器视觉快速指南二

281 篇文章 30 订阅

3 校准

尽管设计用于演示可集成到系统中的 MV,但这些应用程序也可用于校准摄像机和立体设备。

3.1 一个良好的位置

虽然校准不需要已知目标(例如棋盘),但它确实需要具有良好纹理和光照条件的静止场景。 日光下的远景效果最佳,如下例所示。
在这里插入图片描述

Alt

像下面这样的室内场景也可以,但需要更加小心才能获得良好的效果。 确保场景具有足够的深度 (> 3 m)、纹理和良好的照明条件。
Alt

注意:请检查输入帧并确保没有可见的运动模糊。 否则校准结果不可靠。 校准算法可以容忍嘈杂或黑暗的图像,比模糊图像要好得多。

3.2 追踪相机

捕获数据
围绕所有 3 个轴旋转相机,同时最小化平移(横向运动)。运行以下命令:

rm -rf record_track
timeout -s SIGINT 30s mvCapture -o -t -d record_track

校准相机固有参数
运行以下命令:

mvCACPlayback -b eagle -s 100 record_track -o track_undistorted.avi

如果校准成功,输出将如下所示:

Tracking state = 0
Reprojection error=0.855193
Inlier ratio=0.989893
Distortion model error=0.588824
DG.input-size=640x480
DG.K=432.916797,0,331.528716,0,432.916797,226.316235,0,0,1
DG.distortion=0.018457,-0.032563,0.000050,-
0.000066,0.000000,0.000000,0.000000,0.000000
DG.distortion-model=10
DG.RBC=0.017096,-0.218179,0.975759,-0.999854,-0.004407,0.016533,0.000693,-
0.975899,-0.218222
DG.timing-offset-in-ms=-8.629679

它还将输出一个视频文件(track_undistorted.avi)。 确保未失真的视频看起来合理总是一个好主意。

输出失真模型可以通过 -m 标志指定。 默认模型是鱼眼模型(模型 10)。 对于 4、5 或 8 参数多项式模型,更改为模型 4、5 或 8。 校准内部使用鱼眼模型,最后转换为多项式模型。 失真模型误差测量转换误差。 如果错误很大,则会生成警告消息。 在这种情况下,请考虑使用高阶模型或鱼眼模型来减少转换误差。

注意:多项式模型在切向失真参数(第三和第四个参数)中始终为零,因为鱼眼模型只是径向失真。

它还将在 record_track/cacLeft.cal 中生成一个文件,其中包含几乎相同的信息:

<?xml version='1.0' encoding='UTF-8'?>
<Camera>
<Parameters>
<Intrinsics size="640 480" pp="331.528716 226.316235" fl =
"432.916797 432.916797" distModel = "10" dist = "0.018457 -0.032563
0.000050 -0.000066 0.000000 0.000000 0.000000 0.000000"/>
</Parameters>
</Camera>

注意:*.cal 文件中使用的失真模型始终是鱼眼模型,无论 -m 标志值如何。

注意:上面的例子是显示输出的格式。 示例中的校准参数值可能无法反映真实值。

存储校准
因为校准是特定于电路板的,而不是任何特定的数据序列,所以通常将最终校准文件移动到一个众所周知的位置(例如,/usr/share/mv/cal/)以供所有应用程序使用。

故障排除快速提示
mvCACPlayback需要相当长的时间才能完成,看最终结果调试非常耗时。 可以使用 -v 标志来显示逐帧信息,如下所示:

Processed frame 100
TS(-1); RE(inf); IR(0.00); PP(0.50,0.50); FR(0.60,0.60); D(0.00,0.00);
tGC(0.0); tRSS(0.0);
Processed frame 101
TS(-1); RE(1.02); IR(0.97); PP(0.33,0.50); FR(0.26,0.26); D(-0.14,0.28);
tGC(9.6); tRSS(0.3);
Processed frame 102
TS(-1); RE(0.82); IR(0.98); PP(0.50,0.45); FR(0.31,0.31); D(-0.14,0.34);
tGC(9.0); tRSS(0.7);
Processed frame 103
TS(-1); RE(0.71); IR(0.99); PP(0.50,0.50); FR(0.31,0.31); D(-0.05,0.08);
tGC(8.1); tRSS(1.2);
Processed frame 104
TS(-1); RE(0.66); IR(0.99); PP(0.49,0.50); FR(0.31,0.31); D(0.01,-0.02);
tGC(8.4); tRSS(1.2);
Processed frame 105
TS(-1); RE(0.63); IR(0.99); PP(0.49,0.50); FR(0.31,0.31); D(-0.03,0.02);
tGC(8.4); tRSS(1.2);
Processed frame 106
TS(1); RE(0.69); IR(0.99); PP(0.49,0.48); FR(0.31,0.31); D(-0.02,0.02);
tGC(9.2); tRSS(1.0);
Processed frame 107
TS(1); RE(0.76); IR(0.99); PP(0.49,0.49); FR(0.30,0.30); D(-0.00,0.00);
tGC(9.2); tRSS(0.9);
Processed frame 108
TS(1); RE(0.77); IR(0.99); PP(0.49,0.52); FR(0.31,0.31); D(-0.06,0.04);
tGC(8.5); tRSS(1.1);
Processed frame 109
TS(1); RE(1.04); IR(0.98); PP(0.49,0.51); FR(0.31,0.31); D(-0.03,0.02);
tGC(8.3); tRSS(1.3);
Processed frame 110
TS(1); RE(1.02); IR(0.98); PP(0.49,0.50); FR(0.30,0.30); D(-0.01,-0.01);
tGC(8.4); tRSS(1.2);
Processed frame 111
TS(1); RE(1.01); IR(0.98); PP(0.49,0.50); FR(0.30,0.30); D(-0.03,0.02);
tGC(8.3); tRSS(1.7);
Processed frame 112
TS(1); RE(0.97); IR(0.98); PP(0.49,0.49); FR(0.30,0.30); D(-0.01,0.01);
tGC(8.5); tRSS(1.4);
Processed frame 113
TS(1); RE(0.95); IR(0.98); PP(0.49,0.49); FR(0.30,0.30); D(-0.01,0.00);
tGC(8.5); tRSS(0.9);

TS:跟踪状态(0:高质量,1:低质量,-1:初始化,-2:失败),RE:像素重投影误差,IR:内点比,PP:归一化主点,FR:X 中的焦比Y、D:前两个失真参数,tGC:以毫秒为单位从相机到陀螺仪的时间偏移,tRSS:以毫秒为单位调整初始卷帘快门偏移。

通常可以通过查看前 50 帧左右来判断 CAC 是否会收敛。

3.3 立体相机校准

捕获数据
旋转相机时运行以下命令:

rm -rf record_stereo
timeout -s SIGINT 30s mvCapture -s -t -d record_stereo

如果 MIPI 消息过多,可以通过以下方式关闭它们:

dmesg -n 1

有关更多详细信息,请参阅跟踪相机部分。

校准固有参数
通过运行校准左侧摄像头:

mvCACPlayback -b eagle -s 100 record_stereo -o left_undist.avi

输出文件位于 record_stereo/cacLeft.cal。 通过运行校准正确的相机:

mvCACPlayback -b eagle -s 100 -u record_stereo -o right_undist.avi

输出文件位于 record_stereo/cacRight.cal。 有关更多详细信息,请参阅跟踪相机部分。

校准外部参数
运行以下命令:

mvSACPlayback -s 100 -e 200 record_stereo -o stereo_undist.avi

mvSACPlaybackrecord_stereo/cacLeft.calrecord_stereo/cacRight.cal 读取内在参数。 输出如下所示:

Reprojection error=0.659759
Inlier ratio=0.960402
Stereo calibration:
rRL=0.007858 -0.017013 -0.003425
tRL=-0.080000 0.000000 0.000000

它还会生成一个名为record_stereo/sac.xml 的文件,mvDFS 可以直接使用该文件。
注意:sac.xml 中的默认失真模型是鱼眼模型。 使用 -m 标志更改为其他模型。

验证校准质量
播放输出视频文件 (output.avi)。 远处的物体应该呈灰色,没有任何红色或绿色边缘。

存储校准
因为校准是特定于电路板的,而不是任何特定的数据序列,所以通常将最终校准文件移动到一个公共的位置(例如,/usr/share/mv/cal/)以供所有应用程序使用。

3.4 高分辨率相机校准

捕获数据
旋转相机时运行以下命令:

timeout <ARGS> mvCapture -r -t -p 2 -d record_hires

-p 2选项将分辨率设置为 720p。 人们可能希望使用不同的分辨率来匹配预期用例的纵横比。 高于 720p 时请小心,因为它可能会导致内部存储空间和文件 I/O 紧张。 通常可以在较低的分辨率下校准并缩放结果。有关更多详细信息,请参阅向下的相机部分。

校准相机固有参数
运行以下命令:

mvCACPlayback -b eagle -s 100 record_hires

有关更多详细信息,请参阅向下的摄像头部分。
存储校准因为校准是特定于电路板的,而不是任何特定的数据序列,所以通常将最终校准文件移动到一个公共的位置(例如,/usr/share/mv/cal/)以供所有应用程序使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值