首页 > 解决方案 > 无校准图像不失真

问题描述

我目前正在尝试在 C++ 中使用 OpenCV 来“不失真”鱼眼图像。我知道确切的镜头和相机型号,所以我想我可以使用这些信息来计算一些参数,并最终将鱼眼图像转换为直线图像。但是,我在网上找到的所有教程都鼓励使用带有棋盘的自动校准。有没有办法通过仅使用相机+镜头参数和一些数学来校准鱼眼相机?还是我必须使用棋盘校准技术?

我试图避免必须使用棋盘校准技术,因为我只是收到一些图像来不失真,如果可能的话,不希望要求提供棋盘的图像。假设镜头为所有图像保持恒定的变焦/焦距。

太感谢了!

标签: c++opencvimage-processingcameracomputer-vision

解决方案


要使图像不失真,您需要知道描述失真的相机的内在参数。您无法根据数据表的值计算它们,因为它们取决于镜头的制造方式,并且相同供应商和型号的两个镜头可能具有不同的失真系数,特别是如果它们便宜的话。

一些光栅图形编辑器嵌入了一个镜头数据库,您可以从中查询失真系数。但是没有魔法,他们通过测量镜头畸变来构建它,并最终在之后对其进行插值。

但是您仍然可以使用经验方法来纠正至少桶效应。他们有很多着色器可以做到这一点,你总是可以做自己的数学来构建扭曲贴图。


推荐阅读