-->

鱼眼/广角镜头在OpenCV中标定(Fisheye/Wide-Angle lens Calibrat

2019-08-01 18:03发布

我知道默认的OpenCV的标定系统模型中的针孔摄像机,但我使用极宽视场镜头(187度)的系统工作。 如果有任何现有的办法做到这一点在OpenCV中,或只用广角镜头工作? 或者将我不得不重写所有的校准/ undistort我的系统?

Answer 1:

似乎没有很好的OpenCV的办法做到这一点。

我结束了使用OCamLib做实际的校准,然后(使用Scaramuzza的算法)来undistort 2D图像点转换成3D的单位向量(而非2D分)写我自己的“undistortPoints”功能。 不幸的是,这也打破了很多其他的东西在OpenCV中,因为大多数OpenCV的图像处理功能,期待的2D点和自己的针孔校正模型,所以我不得不重新构建代码的显著部分这一点。

我欢迎任何其他洞察这一点。



Answer 2:

这是一个很好的理由,为什么人们不太多使用广角镜头 - 当图像不失真,产生的图像是高度非矩形和边缘上的质量是如此糟糕,图像需要被裁剪回... 90度FOV。 所以,问题是,为什么不只是使用90度FOV镜头摆在首位? 这种情况会变得立体声相机和图像校正差。

如果你真的需要有广泛的FOV使用多台摄像机或旋转摄像头。 下面是一些例子: PointGrey公司



Answer 3:

为了校准相机极宽视场镜头,你可以使用全向摄像头模块从OpenCV中的Contrib 。 重要的是要注意,你必须重建与OpenCV的贡献您的OpenCV的使用是很重要的。



Answer 4:

OpenCV的鱼眼相机校准模块使用基于针孔摄像机模型的方法。 在此模型中,我们有从在照相机的前面一些对象和照相机的光的光线的光轴之间的角度。 我们也有光轴和方向之间的角度指向上不失真的图像(对应于对象)。 如果已正确执行校准,这2角将是相等的。 这意味着,如果相机的FOV是大约180度,从到失真的图像的边缘失真的图像的中心处的distanse将等于无穷大。 作为结果的OpenCV鱼眼校正模块(CV ::鱼眼)undistorts只有图像的中心部分。 这个限制,我把更详细的解释这里 。在我自己的结果我得到了140-150度FOV在不失真的图像。 如果FOV约140-150度是适合你,你可以使用CV ::鱼眼不作任何修改



文章来源: Fisheye/Wide-Angle lens Calibration in OpenCV