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

How significant is the benefit of cv2.cornersubpix() while performing calibration?

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

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

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

有多重要?除非你解释你校准相机的目的,否则无法回答。

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

您是否要为高射炮校准火炮遥测仪的摄像头,该高射炮应该在一英里外攻击敌方喷气式飞机?你最好尽可能多地消除校准错误,否则你的人会死。

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

此外,尝试使用相对于相机的不同目标运动模式“从头开始”多次校准,再次使用和不使用亚像素角:您可能会发现校准后的相机参数在校准过程中保持更一致,当您使用亚像素特征。