圆形鱼眼扭曲使用opencv3鱼眼模型

时间:2018-03-20 02:00:31

标签: opencv3.0 calibration fisheye

我使用OpenCV fisheye model函数执行鱼眼校准工作。我的图像是圆形鱼眼(example),但我从OpenCV鱼眼模型函数中得到this result

我有以下问题:

  1. 我不知道为什么结果是椭圆形而不是完美的圆形。这是预期的吗?

  2. 可以针对圆形鱼眼图像校准OpenCV鱼眼模型吗?

  3. 我不明白为什么在使用cv :: fisheye :: calibrate函数获取K中的Cx Cy参数时图像不居中?

  4. 可以在棋盘上使用哪些提示(图片编号,角度和位置......)来获取相应的相机矩阵和失真因子?

  5. 预期结果

    Fisheye w/ Distortion

    我的结果

    Fisheye w/ No Distortion

2 个答案:

答案 0 :(得分:1)

首先,cv :: fisheye使用了一个非常简单的想法。为了消除径向扭曲,它将沿着圆心到圆边的方向移动鱼眼圆的点。 中心附近的点将移动一点。边缘附近的点将移动更远的距离。 换句话说,点移动的距离不是恒定的。它是函数f(x)= 1 + K1 * x3 + K2 * x5 + K3 * x7 = K4 * x9。 K1-K4是opencv鱼眼无畸变模型的径向畸变系数。在正常情况下,未失真的图像总是大于初始图像。 如您所见,您的未失真图像小于初始鱼眼图像。我认为问题的根源是校准不好。

答案 1 :(得分:0)

  1. 我不知道为什么结果是椭圆形而不是完美的圆形。这是预期的吗?
  2. - >校准模型的切向参数可以使其看起来像椭圆形。可能是您的实际镜头倾斜或校准不正确。只是尝试关闭切向参数选项。

    1. 可以为圆形鱼眼图像校准OpenCV鱼眼模型吗?
    2. - >据我所知,没问题。尝试ocam。

      1. 在使用cv :: fisheye :: calibrate函数获取K中的Cx Cy参数时,我不明白为什么图像不居中?
      2. - >光学中心不与图像中心对齐是正常的。然而,这是程度问题。 Cx,Cy代表实际的光学中心。低质量鱼眼相机制造商不控制此参数的质量。

        1. 可以在棋盘上使用哪些提示(图片编号,角度和位置......)来获取相应的相机矩阵和失真因子?
        2. - >仅清晰图像,不同距离,不同角度,不同位置。尽可能多。