| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 人工智能 -> 超大图片(4000×3000像素)的畸变矫正,python+OpenCV实现 -> 正文阅读 |
|
|
[人工智能]超大图片(4000×3000像素)的畸变矫正,python+OpenCV实现 |
适用情况网上大部分的镜头畸变矫正的例子都是给的小图片的测试效果,照搬他们的代码测试的话会发现,在他们给的小图片上效果良好,但是应用到自己的 超大图片(4000×3000像素) 上后会发现边缘效果很不理想!效果如下: 原图(4000×3000像素)(实验室镜头较好,看不出明显的畸变)
矫正后的效果(4000×3000像素)(仔细对比观察中间4×4的方格可以发现更加垂直了,但边缘部分形变严重) 接下来将先从理论方面为大家分析后,再附上代码,如果对理论不感兴趣也可以直接看代码 简略的理论分析镜头畸变分为径向畸变和切向畸变两部分 径向畸变
其中径向畸变的修正采用主点周围的泰勒级数展开式的前几项进行描述,下面的公式中采用了 k1,k2,k3 三项来进行描述 切向畸变
问题所在使用cv2.calibrateCamera函数默认只返回 k1,k2,k3!!! 这将导致当 r 增大时,矫正时的误差会越来越大,对于100×100像素的小图片来说 r 最大也只有 50 2 50\sqrt2 502? ,而对于4000×3000的超大图片而言,r 最大可以达到 2500,公式中当取到 r 3 r^3 r3 时,误差将呈几何式增长 解决办法查看OpenCV官网中cv2.calibrateCamera函数说明文档,发现该函数有一个参数flags,可以通过该参数控制返回的畸变系数的数量等高级设置 通过这样一个小的修改即可解决超大图片畸变矫正边缘形变的问题 完整代码
在超大图片上的畸变矫正的效果原图(4000×3000像素)
矫正后的效果(4000×3000像素)(仔细对比观察可以看到矫正后的图片左侧有一条黑线,图像也略微向右聚拢了一些)
|
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年12日历 | -2025/12/13 19:33:53- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |