OpenCV只矫正鱼眼图像的中心部分。

3

我正在尝试使用OpenCV 3.4.0(C ++,MS Windows)进行鱼眼相机校准。

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

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

并且

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

就目前而言,这些结果与我的结果非常相似。有人有解决这个问题的方法吗?

您可能希望共享K和D矩阵,您用于展开的代码以及您获得的结果。这将有助于我们定义问题。 - Ja_cpp
2个回答

3
我在过去的两周中分析了很多文件,我认为我找到了问题的根源。OpenCV 3.4.0 鱼眼矫正方法基于针孔相机模型。相机光轴和某个物体的光线之间存在一个角度。我们也有一个角度,在不失真点的方向和相机光轴之间。如果鱼眼图像被正确地消除畸变,这两个角度将相等。我的鱼眼相机的FOV为180度。这意味着从无畸变图像中心到对应于无畸变图像边缘的点的距离等于无穷大。换句话说,如果我们有一个FOV约为180度的鱼眼相机,则不可能(通过OpenCV)完全消除100%的鱼眼图像表面畸变。

你能分享一些你阅读过的关于这个话题的论文吗?谢谢。 - arash javanmard

1

1
我们在谈论完全不同的任务。我的任务的主要目标是“直线应该是直的”。你修改后的图像根本没有任何直线。 - VideoProcessingResearcher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接