Circular fisheye distort using opencv3 fisheye model
我使用OpenCV鱼眼模型功能执行鱼眼校准工作。 我的图像是圆形鱼眼镜头(示例),但是我从OpenCV鱼眼镜头模型函数中得到了此结果。
我有以下问题:
我不知道为什么结果是椭圆形而不是完美的圆形。 这是预期的吗?
OpenCV鱼眼模型可以针对圆形鱼眼图像进行校准吗?
我不明白为什么在使用cv :: fisheye :: calibrate函数获取K中的Cx Cy参数时图像未居中?
可以在棋盘上使用哪些技巧(图片编号,角度和位置...)以获取当前的摄像机矩阵和失真系数?
预期结果
我的结果
首先,cv :: fisheye使用一个非常简单的想法。为了消除径向变形,它将鱼眼圈的点沿从圆心到圆边缘的方向移动。
中心附近的点将稍微移动。边缘附近的点将移动更大的距离。
换句话说,点移动的距离不是恒定的。它是一个函数f(x)= 1 + K1 * x3 + K2 * x5 + K3 * x7 = K4 * x9。 K1-K4是opencv鱼眼未失真模型的径向变形系数。在正常情况下,未失真的图像总是比初始图像大。
如您所见,未失真的图像比初始鱼眼图像小。我认为问题的根源是校准不良。
->校准模型的切线参数可以使其看起来像椭圆形。可能是您的实际镜头已倾斜或校准不正确。只需尝试关闭切线参数选项即可。
->据我所知没有问题。也尝试ocam。
->通常,光学中心与图像中心不对齐。但是,这是一个程度的问题。 Cx,Cy代表实际的光学中心。低品质鱼眼镜头制造商无法控制此参数的质量。
->仅清除图像,不同的距离,不同的角度,不同的位置。越多越好。