执行校准时 cv2.cornersubpix() 的好处有多大?

问题描述

所以我按照 here 所示执行校准,唯一的区别是我在检测棋盘图案之前反转图像 [gray = cv.bitwise_not(gray)]

根据 cv2.cornerSubPix 的使用情况,我得到了不同的未失真图像 和 cv2.CALIB_RATIONAL_MODEL 标志。

不使用 cv2.cornerSubPix 我会很好,但我想知道我是否会丢失失真或矩阵的准确度,如果是,它有多重要?

解决方法

它有多重要?除非您说明校准相机的目的,否则无法回答。

您是否要制作一张人们会根据其审美价值观看的漂亮照片,从他们的眼睛无法分辨几个像素的距离来看,更不用说一半了?那么当然,您可以在没有亚像素特征估计的情况下进行近似且可能有偏差的校准。

您是否要为防射炮校准火炮遥测仪的相机,该炮应该向一英里外的敌方喷气式飞机开火?你最好尽可能消除校准错误,否则你的人会死。

如果您真的想了解 cv2.cornerSubpix 对您的用例有何不同,请使用和不使用进行校准,然后将所有图像中所有目标角的残差绘制为点云。对于子像素用例,您应该会在 (0,0) 周围看到“更紧密”的云。

此外,尝试使用相对于相机的不同目标运动模式“从头开始”多次校准,再次使用和不使用亚像素角:您可能会看到校准的相机参数在使用亚像素时在校准中保持更加一致功能。