c++ - 无校准图像不失真
问题描述
我目前正在尝试在 C++ 中使用 OpenCV 来“不失真”鱼眼图像。我知道确切的镜头和相机型号,所以我想我可以使用这些信息来计算一些参数,并最终将鱼眼图像转换为直线图像。但是,我在网上找到的所有教程都鼓励使用带有棋盘的自动校准。有没有办法通过仅使用相机+镜头参数和一些数学来校准鱼眼相机?还是我必须使用棋盘校准技术?
我试图避免必须使用棋盘校准技术,因为我只是收到一些图像来不失真,如果可能的话,不希望要求提供棋盘的图像。假设镜头为所有图像保持恒定的变焦/焦距。
太感谢了!
解决方案
要使图像不失真,您需要知道描述失真的相机的内在参数。您无法根据数据表的值计算它们,因为它们取决于镜头的制造方式,并且相同供应商和型号的两个镜头可能具有不同的失真系数,特别是如果它们便宜的话。
一些光栅图形编辑器嵌入了一个镜头数据库,您可以从中查询失真系数。但是没有魔法,他们通过测量镜头畸变来构建它,并最终在之后对其进行插值。
但是您仍然可以使用经验方法来纠正至少桶效应。他们有很多着色器可以做到这一点,你总是可以做自己的数学来构建扭曲贴图。
推荐阅读
- html - 如何使用css为按钮制作圆角内矩形?
- python - Python将字符串转换为字节
- postgresql - 使用 psql createdb 时没有响应
- flutter - 如何知道 dart(flutter) 中是否已经初始化了 late init?
- flink-streaming - Flink SQL CSV 连续流式传输
- angular - 如何使用 Angular/Ionic 和 Stripe 扩展查询 firebase firestore 子集合以获取其他属性
- batch-file - 在流程中运行批处理文件
- django - 将网站内容实时分享给其他用户
- python - 我如何使用 C 语言运行这一内衬 powershell 反向 shell
- php - 在mysql中更新多个查询