上位机图像处理和嵌入式模块部署(qmacvisual畸变矫正)

news/2024/7/21 5:58:31 标签: 图像处理, 人工智能, 计算机视觉

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        大部分同学在开始做计算机图像的时候,是没有意识到畸变矫正这个问题的。当然不仅仅是畸变矫正,很多同学还会忽略光源的问题。他们自然地以为,摄像头拍出来的图像就应该是这样的。但事实上并非如此,好的图像需要光源的配合,而且很多摄像头拍摄出来的图像也是不能直接使用的,比如大家在汽车上面看到的鱼眼镜头,这些图像都是不能直接使用的,需要用标定板进行标定之后才能使用的。

        正好qmacvisual软件提供了软件标定的功能,我们也来学习一下。

1、标定需要做哪些

        要做好摄像头的标定,那么就需要一个标定板。在摄像头之前的各个角落和只能够中间,依次放置,这样就拿到了基本的标定图片。基于这些图片就可以对camera进行标定了。当然,这个标定板上面一般都会有棋盘格信息或者是有斑点的图案,这些都是已知的条件。并且,这些标定板上面的图案都是横平竖直的。这就意味着,如果图像上的棋盘格或者是斑点被识别之后,但是中间的连线发生了明显的弯曲,这就是说,我们可以用标定板对camera进行标定处理了。

2、标定板长什么样

        标定板一般是棋盘格,或者是斑点,今天用到的图片都是基于斑点的,

3、利用qmacvisual对图像进行标定处理

        本身qmacvisual软件已经支持对camera进行标定处理。获得标定参数之后,后续使用的每个图片,都可以先畸变矫正,然后再进行后续算法的处理。当然,标定之前,需要先创建一个工程,然后创建一个流程,这都是少不了的。接着开始标定,标定的插件位于树形控件里面的【标定工具】-》【畸变标定】。双击之后,界面应该是这样的,

        这里面有一些参数需要设置。文件夹路径就是采集的标定图片。剩下来的就是圆最小面积和圆最大面积设定。这两个参数设置非常重要,可以搭配Block参数按钮一起使用,确保算法可以认识到图片中的49个黑点。最后就是配置标定结果文件的保存路径位置。全部设置后,应该是这样的,

        这个时候如果不是很放心,可以依次单击Blob参数按钮,确保算法识别所有的黑点信息,相关输出可以在另外一个tab里面看到。不出意外的话,单击一次,你可以看到这样的效果,

        输出信息提示我们找到了49个黑点,并且每个黑点还标注了颜色。如果所有的图片都没有问题,直接单击执行按钮,就可以开始标定的过程了。标定结束了,相关的标定文件就写好了。截图是这样的,

        在tab2的输出显示当中,可以看到更多的信息,效果如下图所示。当然最重要的还是par_calib.xml文件。

        另外一个图像校正的按钮,则可以让我们一张一张地去看图像校正的效果,比如这一张,

        相比较原来的图片,有一个明显的地方,算法做了矫正。比如左上角的时间信息,之前肯定不是这个样子的,也说明标定确实起了效果。在现实生活中,标定的方法很多。用matlab工具来进行图像标定也是不错的一个选择。

4、如何使用标定文件

        有了标定文件,后续读取图片的时候,如何利用这些标定的参数对图像进行标定呢?其实相关的设置一直都在,只是我们自己没有去进行配置而已。大家打开获取图像的tab2页面,选择刚才生成的par_calib.xml文件就可以了,


http://www.niftyadmin.cn/n/5436894.html

相关文章

OpenCV Steger算法提取条纹中心线

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 Steger 算法是一种常用的图像边缘检测算法,可以用于提取图像中的中心线或边缘信息。它的理论假设是:条纹的亮度是按照高斯分布呈现的,即中心亮两侧渐暗。 其计算过程如下所述: 1、首先,我们需要计算每个点Hess…

Pytorch常用的函数(七)空洞卷积详解

Pytorch常用的函数(七)空洞卷积详解 1 初识空洞卷积 1.1 空洞卷积与语义分割任务 语义分割面临的困境: 与检测模型类似,语义分割模型也是建立是分类模型基础上的,即利用CNN网络来提取特征进行分类。在CNN分类模型中,一般情况下…

【Qt图形界面引擎(一)】:第一个Qt程序

跨平台图形界面引擎,接口简单,易上手,一定程度简化内存。 Qt发展史 1991年由Qt Company开发的跨平台C图形用户界面应用程序开发框架2008年,Qt Company科技被诺基亚公司收购,Qt也因此成为诺基亚旗下的编程语言工具2012…

后端工程师快速使用vue和Element

文章目录 Vue1 Vue概述2 快速入门3 Vue指令3.1 v-bind和v-model3.2 v-on3.3 v-if和v-show3.4 v-for3.5 案例 4 生命周期 Element快速使用1 Element介绍2 快速入门3 当前页面中嵌套另一个页面案例代码案例截图 Vue 1 Vue概述 通过我们学习的htmlcssjs已经能够开发美观的页面了…

pytorch_fid计算fid

pip install pytorch-fid from pytorch_fid import fid_score# 准备真实数据分布和生成模型的图像数据 real_images_folder xxx generated_images_folder xxx# 计算FID距离值 fid_value fid_score.calculate_fid_given_paths([real_images_folder, generated_images_folder]…

React 测试库 - FAQ

1、如何测试 input onChange 事件&#xff1f; import React from react import {render, fireEvent} from testing-library/reacttest(change values via the fireEvent.change method, () > {const handleChange jest.fn()const {container} render(<input type&quo…

【云开发笔记No.5】DevOps的价值

一、DevOps的价值 在软件开发生命周期中&#xff0c;DevOps作为一种文化、实践和工具链的集合&#xff0c;为组织带来了显著的价值。其价值不仅体现在提高软件交付速度和质量上&#xff0c;还表现在增强团队协作、降低运维成本、提升客户满意度等多个方面。 首先&#xff0c;…

Jenkins-pipeline流水线构建完钉钉通知

添加钉钉机器人 在钉钉群设置里添加机器人拿出Webhook地址&#xff0c;设置关键词 Jenkins安装钉钉插件 Dashboard > 系统管理 > 插件管理&#xff0c;搜索构建通知&#xff0c;直接搜索Ding Talk也行 安装DingTalk插件&#xff0c;重启Jenkins 来到Dashboard > 系…