带有奇怪圆圈的opencv不失真图像

opencv undistortion image with a strange circle

我尝试使用 opencv 针孔模型来计算校准参数,然后对图像进行去畸变处理。 问题是,未失真的图像中有一个奇怪的圆圈,如下所示。

代码、原图和结果图为here:

如有任何意见,我们将不胜感激。

校准是一项比乍看起来更困难的任务。我认为主要问题是你只在图像的中心显示目标,所以畸变参数发现了这个奇怪的参数优化。有趣的是,您允许优化哪些参数以及使用哪些标志(OpenCV 的校准函数可以找到很多参数:fx、fy、cx、cy、k1、k2、p1、p2、 k3,k4,k5,k6,s1,s2,s3,s4...)。

我建议如下:
- 尝试在屏幕的所有部分使用更多图像,如果可能,请移除图像中非常强大的图像压缩。
- 买不干胶纸,在上面打印目标,然后粘在一块玻璃上,纸板就不用管了。
- 你可以稍微改进校准目标和角点检测,查看findChessboardCornersSB.
的文档 - 也许减少 OpenCV 估计的参数数量有助于规范化。在我的例子中,我设置 k3 = k4 = k5 = k6 = 0。这是通过为失真系数 (distCoeffs) 提供一个零向量并给出标志 CALIB_FIX_K3、CALIB_FIX_K4 来完成的等。看看其他一些标志是否适用于您的系统(例如 CALIB_FIX_ASPECT_RATIO)。