无法使用相机,消除鱼眼效果

时间:2017-07-20 16:47:11

标签: python opencv image-processing fisheye

鱼眼镜头拍摄的一些照片让我无法访问。我试图使用opencv删除那些照片上的鱼眼效果,我所看到的所有解决方案都需要拍摄已知大小的物体(即:棋盘),然后调用cv2.calibrate()然后它将返回校准要在cv2.undistorted()中使用的参数,但这不适用。但是,这些属性附在相机上,与鱼眼效果参数有关。

<intrinsic>
        <fisheyeAmt1 format="float" value="308.8805"/>
        <fisheyeAmt2 format="float" value="-14.2861"/>
        <fisheyeAmt3 format="float" value="51.4445"/>
        <fisheyeAmt4 format="float" value="-10.362"/>
        <opt_axis_x_rot_deg format="float" value="0"/>
        <opt_axis_z1_rot_deg format="float" value="0"/>
        <opt_axis_z2_rot_deg format="float" value="0"/>
        <image_flip_x_bool format="bool" value="false"/>
        <image_flip_y_bool format="bool" value="false"/>
        <cam_aspect format="float" value="0.9999"/>
        <source_image_x_res format="float" value="1280.0"/>
        <source_image_y_res format="float" value="806.0"/>
        <cxoffs_pix format="float" value="5.35"/>
        <cyoffs_pix format="float" value="6.477"/>
      </intrinsic>
<extrinsic>
        <rot__x_deg format="float" value="68.46"/>
        <rot_z1_deg format="float" value="-89.34"/>
        <rot_z2_deg format="float" value="0.75"/>
        <pointx_mm format="float" value="4133.0"/>
        <pointy_mm format="float" value="-97.0"/>
        <pointz_mm format="float" value="919.31"/>
      </extrinsic>

我的问题是,我可以使用这些属性中的任何内容作为cv2.calibrate()返回的值的替代吗?

还有另一个问题here解决了类似的问题。 但我不确定我的值是否可以用作另一个问题中使用的fx,fy,cx,cy,k1,k2,p1,p2。

1 个答案:

答案 0 :(得分:0)

如果您的图像包含已知的纹理平面,则可以执行另一次校准。

这些属性来自哪里?他们的一些名字不是标准的。 你有关于提到焦点的图像的EXIF信息吗?

  • cxoffs_pix:cx - 1280/2
  • cyoffs_pix:cy - 806/2
  • source_image_x_res:应该接近2 * cx
  • source_image_y_res:应该接近2 * cy
  • cam_aspect:fx / fy
  • image_flip_x_bool:应指明是否否定fx
  • image_flip_y_bool:应指示是否否定fy

你能给出与名字相关的价值吗?这可能有助于猜测。

如果你有关于视野的信息,它可以帮助fx,fy