【发布时间】:2013-12-29 08:35:52
【问题描述】:
我以本书中用于校准相机和不失真图像的代码示例:shop.oreilly.com/product/9780596516130.do
据我了解,OpenCV 的常用相机校准方法非常适用于“普通”相机。
当涉及到鱼眼镜头时,虽然我们必须使用 8 个校准参数而不是 5 个向量以及方法 cvCalibrateCamera2 中的标志 CV_CALIB_RATIONAL_MODEL。
至少,OpenCV documentary 中是这么说的
所以,当我在像这样 (Sample images from OCamCalib) 的图像数组上使用它时,我使用 cvInitUndistortMap 得到以下结果:abload.de/img/rastere4u2w.jpg
由于生成的图像是从整个未失真的图像中剪下的,我继续使用cvInitUndistortRectifyMap(就像这里描述的stackoverflow.com/questions/8837478/opencv-cvremap-cropping-image)。于是我得到了以下结果:abload.de/img/rasterxisps.jpg
现在我的问题是:为什么整个图像没有失真?在我后来结果的一些照片中,您可以识别出例如笔记本电脑仍然完全失真。如何使用标准 OpenCV 方法获得更好的结果?
我是 stackoverflow 的新手,我也是 OpenCV 的新手,所以在表达我的问题时,请原谅我的任何不足之处。
【问题讨论】:
-
抱歉我的问题中的链接,但因为我是 stackoverflow 的新手,所以我最多只能使用 2 个链接。
-
我在不失真和校准方面没有太多经验(尽管我经常使用它),但问题可能是您的棋盘图案仅覆盖图像的(小)部分(总的来说图像),因此您的校准和不失真仅适用于图像的该部分。
-
想起一些前同事的一个项目,我找到了他们的简报,提到常见的校准技术可能不适用于极端鱼眼相机。但是这篇论文是 2008 年的,所以不知道 openCV 是否已经使用了“更好”的技术:lfb.rwth-aachen.de/bibtexupload/pdf/STE08b.pdf
-
感谢您的回复,我认为@Micka 是对的,因为我的图像无法找到棋盘图案。现在我想知道如何做到这一点以进一步改善结果。
-
abload.de/img/cvfindchessboardcornezoa5z.png 有谁知道为什么最后两张图片找不到棋盘?我知道它非常扭曲,但方块仍然清晰可见。我可以用标志或任何东西改进 OpenCV 方法吗?
标签: opencv camera camera-calibration fisheye