10

我正在使用广角镜头(178º Diagonal FOV),我正在尝试使用 Opencv Calibration 模块对其进行正确校准。所有的检测和校准过程都运行良好,但结果很差。

我尝试了许多不同的配置:

  • 不同的图像集
  • 不同的径向系数数:2,3,4,5 甚至 6.(CV_CALIB_FIX_K1,...,CV_CALIB_FIX_K6 )
  • 将主点和切线畸变固定为 0 (CV_CALIB_FIX_ASPECT_RATIO, CV_CALIB_FIX_PRINCIPAL_POINT)
  • 使用预期焦距作为初始相机矩阵。(CV_CALIB_USE_INTRINSIC_GUESS)

我能得到的最好的是:校准不良

关于如何获得良好校准的任何想法?您认为同时使用两种校准模式,还是使用圆形网格作为校准模式会有所帮助?

我在 opencv 3.0 中看到添加了薄棱镜系数。我还没有尝试过,但我认为不会有什么不同,对吧?编辑:检查过......什么都没有

4

6 回答 6

4

fisheye lenses have different distortion modelling. For calibrating a fisheye camera, use opencv fisheye module. See opnecv docs.

于 2015-08-16T07:44:11.477 回答
3

也许 OpenCV 的相机/镜头模型不能准确地描述您的超广角镜头。因此,也许您必须放弃内置的 OpenCV 校准程序并编写自己的校准程序。

例如,谷歌搜索给了我:

Kanatani, K.,“通过特征值最小化校准超宽鱼眼镜头相机”,模式分析和机器智能,IEEE Transactions on,第 35 卷,第 4 期,第 813,822 页,2013 年 4 月

摘要:我们提出了一种校准超宽鱼眼镜头相机的新技术,通过施加共线点校正为共线、平行线为平行、正交线为正交的约束条件。利用线拟合简化为 3D 特征值问题的事实,我们进行了严格的扰动分析以获得实用的校准程序。做实验时,我们指出如果仅施加共线性和并行性,就会存在虚假解决方案。我们的技术具有许多理想的特性。例如,不需要关于参考图案或相机位置的度量信息,并且可以在视频屏幕上显示单独的条纹图案以生成虚拟网格,从而消除网格点提取处理。

于 2013-11-23T10:10:56.417 回答
3

Are you making sure to use the CV_CALIB_RATIONAL_MODEL flag? That will tell OpenCV to use a model that supports wider angle lenses.

Here are my suggestions for a 150 deg lens. You might also consider trying April Cal which I have had decent luck with.

于 2014-08-06T19:20:01.640 回答
1

I don't have any experiences with fish-eye lenses, but if you are planing to map the image to a perspective projection, you will run into trouble. The large viewing angle parts of the image will map to very far distances on the image plane. This might acctually result in an image like the one you provided. There are definitely some errors, but it seems that most of the straight "world lines" map to straight "image lines".

What exactly did you expect as the result and what are you planing to use this calibration for?

于 2014-08-07T14:53:03.167 回答
1

Since Opencv 2.4.10 and above there is a specfic distortion model for wide-angle/fisheye lenses able to handle this strong radial distortion. I've tested with my datasets and results are very good.

于 2015-09-16T21:01:51.567 回答
0

OpenCV 2.4.10 and above have fisheye camera calibration module. But this module uses a method based on pin-hole camera model. In this model we have an angle between an optical axis of camera and ray of light from some object in front of camera. We also have an angle between optical axis and direction to point on undistorted image (corresponding to object). If calibration was performed correctly, these 2 angles will be equal. It means that if FOV of your camera is about 180 degrees, the distanse from center of undistorted image to edge of undistorted image will be equal to infinity. As a result OpenCV fisheye correction module (cv::fisheye) undistorts only a central part of image. In my own results I got 140-150 degrees FOV in undistorted image. More detailed explanation I placed HERE. 如果 FOV 大约 140-150 度适合您,您可以使用 cv::fisheye 无需任何修改

于 2018-03-19T06:39:11.163 回答