首页 文章

OpenCV不仅仅是鱼眼图像的中心部分

提问于
浏览
3

我正在尝试通过OpenCV 3.4.0(C,MS Windows)进行鱼眼摄像机校准 .

我使用cv :: fisheye :: calibrate来制作K和D(相机矩阵和径向畸变系数矩阵) . 然后我用cv :: fisheye :: initUndistortRectifyMap生成X和Y坐标的 Map . 最后,我使用cv :: remap通过initUndistortRectifyMap中的 Map 从鱼眼相机中取消图像 . 一切看起来都很正确,但OpenCV只会消除鱼眼图像的中心部分 . 边缘移到外面 . 我想让整个图像黯然失色 . 我试图手动改变K矩阵的焦距,并获得无失真的边缘,但它们变得非常模糊 . 我在这项任务中找到了一些结果 . 例如

https://www.youtube.com/watch?v=Ll8KCnCw4iU

https://www.youtube.com/watch?v=p1kCR1i2nF0

据您所知,这些结果与我的结果非常相似 . 有没有人能解决这个问题?

2 回答

  • 0

    我在最近两周分析了很多论文 . 我想我找到了问题的根源 . OpenCV 3.4.0鱼眼无畸变方法基于针孔相机模型 . 我们在摄像机的光轴和来自某个物体的光线之间有一个角度 . 我们还具有该物体的未失真点的方向与相机光轴之间的角度 . 如果鱼眼图像未正确失真,则这两个角度应相等 . 我的鱼眼相机的FOV是180度 . 这意味着从未失真的图像中心到与未失真图像的边缘对应的点的距离等于无穷大 . 换句话说,如果我们有一个FOV大约180度的鱼眼摄像机,那么100%的鱼眼图像表面的不失真(通过OpenCV)是不可能的 .

  • 3

    它可以实现,只有使用 projection 而不是试图不失真 .

    更多信息在这里OpenCV fisheye calibration cuts too much of the resulting image

    示例结果:

    enter image description here

相关问题