上位机图像处理和嵌入式模块部署(qmacvisual图像清晰度)

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

        做过isp的同学都知道,图像处理里面有一个3A,即自动曝光、自动白平衡和自动对焦。其中自动对焦这个,就需要用输入的图像清晰度作为反馈,自动调整摄像头的焦距。这也是摄像头中唯一需要机械控制的部分。那怎么判断图像的清晰度,这里面每个厂家都有自己的算法。今天我们学习的qmacvisual软件里面就自带了三个算法。

1、创建工程、创建流程

        工程和流程是qmacvisual软件使用的第一步。

2、导入图像清晰度插件

        图像清晰度插件,它的位置位于【检测识别】下面。直接拖过来就可以使用。

        整个插件中有两个地方需要配置。第一个是文件夹下面,也就是说需要从文件夹下面挑选出清晰度最高的那张图片。整个文件夹大约100多张图片,如果大家跟进去看的话,就会发现图片是从模糊到清晰、再到模糊的状态。第二个是相关算法的配置,目前有三个算法供选择,分别是Tenengrad算法、Laplacian算法和SMD算法。选择好之后,单击执行按钮,就会看到清晰度最高的那个算法。此外,还可以看出当前图片这个特征的最优值是多少。

3、算法实现原理

        实现上面,三个算法我们都可以找到对应的实现代码过程。不失一般性,我们找到其中Laplacian梯度的实现过程,

//使用Laplacian梯度法计算一幅图像的清晰度
double frmImageClarity::CalcClarityLaplacian(const cv::Mat src_mat)
{try{cv::Mat gray;if (src_mat.channels() == 3){cv::cvtColor(src_mat, gray, cv::COLOR_BGR2GRAY);}else if (src_mat.channels() == 4){cv::cvtColor(src_mat, gray, cv::COLOR_RGBA2GRAY);}else{src_mat.copyTo(gray);}cv::Mat imageLaplacian;cv::Laplacian(gray, imageLaplacian, CV_16U);//图像的平均灰度double meanValue = 0.0;meanValue = cv::mean(imageLaplacian)[0];return meanValue;}catch (...){return -1;}
}

        整个过程实现还是比较简单的,基本就三个步骤,第一步灰度转换;第二步Laplacian转换;第三步求解平均灰度。计算下来,就是哪张图片的灰度最高,就是哪张图片最清晰。有兴趣的同学,可以再去看看其他两种方法的实现过程。对于拍照不是很好,或者有抖动的图片来说,这种方法还是非常实用的。

4、其他两种算法的效果

        我们看一下除了Tenengrad算法之外,另外两种算法的执行效果是什么样的。需要注意的是,不同的算法判断标准是不一样的,所以左上角输出的数值可能是不一样的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/296235.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS NEXT应用开发之PersistentStorage:持久化存储UI状态

前两个小节介绍的LocalStorage和AppStorage都是运行时的内存,但是在应用退出再次启动后,依然能保存选定的结果,是应用开发中十分常见的现象,这就需要用到PersistentStorage。 PersistentStorage是应用程序中的可选单例对象。此对…

Vue的学习之旅-part1

Vue的学习之旅-part1 vue介绍vue读音编程范式ES6中不用var声明变量vue的声明、初始化传参使用data中数据时要用this指向 vue中的语法糖MVVM在Vue中, MVVM的各层的对应位置 方法、函数的不同之处 vue介绍 vue读音 Vue 读作 /vju:/ 不要读成v u e Vuex 的x读作叉 不…

Redis高可用技术

一.Redis高可用介绍: 高可用是指:服务器正常访问的时间 衡量的标准是:在多长时间内可以提供正常服务99.9%、99.99%、99.999%等等 但是在Redis语境中, 高可用的含义似乎要宽泛一些,除了保证提供正常服务(如主从分离、…

IntelliJ IDEA中文---强化智能编码与重构,提升开发效率

IntelliJ IDEA 2023是一款功能强大的集成开发环境(IDE),专为Java开发人员设计。它支持智能代码编辑、自动补全和重构,帮助开发者提高编码效率。同时,内置了丰富的调试工具,支持断点调试和变量监视&#xff…

C语言--文件操作

1.标准流 • stdin - 标准输⼊流,在⼤多数的环境中从键盘输⼊,scanf函数就是从标准输⼊流中读取数据。 • stdout - 标准输出流,⼤多数的环境中输出⾄显⽰器界⾯,printf函数就是将信息输出到标准输出 流中。 • stderr - 标…

丰诺畅机电科技将莅临2024年第13届生物发酵展

参展企业介绍 无锡丰诺畅机电科技有限公司,是一家分离设备专业制造公司,集开发、设计、制造、销售、服务于一体;具有专业的生产技术,先进的生产工艺,精良的制造设备,完善的检测手段;为满足不同用户的过滤需求&#xf…

HTTP/UDP/TCP/IP网络协议

文章目录 计算机网络基础HTTPUDPTCP连接管理(三次握手/四次挥手)TCP可靠传输(确认答应)超时重传滑动窗口流量控制拥塞控制延时应答捎带应答粘包问题其他 IP数据链路层MUT 相关问题TCP会粘包、UDP永远不会粘包 学习博客 计算机网络基础 OSI模型定义了网络互连的七层框架&#x…

esp32控制舵机---待完善

舵机有三个引脚,分别是电源、电源GND和信号线。如下图所示: ESP32-WROOM-32E的引脚的定义如下: 图来自乐鑫官网:ESP32-DevKitC V4 入门指南 - ESP32 - — ESP-IDF 编程指南 v5.2.1 文档 硬件连接图: 待补充

013——超声波模块驱动开发(基于I.MX6uLL与SR04)

目录 一、 模块介绍 1.1 产品特色 1.2 产品实物图 1.3 接口定义 1.4 测距调节 1.5 模块工作原理 1.6 注意 二、 编码思路 三、 驱动程序 四、 应用程序 五、 Makefile 六、 其它及实验 一、 模块介绍 超声波测距模块是利用超声波来测距。模块先发送超声波&#xf…

边缘计算盒子与云计算:谁更适合您的业务需求?

边缘计算盒子和云计算,这两个概念听起来可能有点复杂,但其实它们就是两种不同的数据处理方式。那谁更适合您的业务需求呢?咱们来详细说说。 边缘计算盒子,就像是个小型的数据处理中心,放在离你业务现场比较近的地方。它…

WPS二次开发专题:如何获取应用签名SHA256值

作者持续关注WPS二次开发专题系列,持续为大家带来更多有价值的WPS开发技术细节,如果能够帮助到您,请帮忙来个一键三连,更多问题请联系我(QQ:250325397) 在申请WPS SDK授权版时候需要开发者提供应用包名和签…

美创科技获浙江省网络空间安全协会多项荣誉认可

4月2日,浙江省网络空间安全协会第二届会员大会第一次会议在杭州隆重召开,近180家会员单位代表、数十位特邀专家、嘉宾莅临现场。浙江省委网信办副主任马晓军出席会议并致辞,本次大会由协会秘书长吴铤主持。 凝心聚力,继往开来&…

SAP:无法在插件模式 HTTP 中处理消息 E ** xxx

问题描述:利用post方式接口,返回信息为 无法在插件模式 HTTP 中处理消息 E ** xxx ,如何排查是因为什么问题导致的? 解决方法: 事务码:SE91, 输入消息类,消息编号,点击显示,查看报…

【NLP笔记】LLM应用之AI Agent LangChain实战

文章目录 AI Agent概述LangChain实战构建prompt模版LLM调用调用HuggingFace开源大模型(在线)调用HuggingFace开源大模型(本地)调用文心一言 ChainsSingle ChainSequential ChainSimple Sequential ChainComplex Sequential Chain …

【重学C语言】三、C语言最简单的程序

【重学C语言】三、C语言最简单的程序 最简单的程序头文件使用尖括号 < >使用双引号 ""区别与注意事项示例 主函数认识三个错误 常量和变量常量ASCII 码表转义字符 关键字数据类型关键字存储类关键字修饰符关键字控制流程关键字函数相关关键字其他关键字 变量变…

长连接详解

一分钟了解长连接 、短连接、心跳机制与断线重连 - 知乎 (zhihu.com) websocket 实现长连接原理_websocket 是长连接吗-CSDN博客

kettle使用MD5加密增量获取接口数据

kettle使用MD5加密增量获取接口数据 场景介绍&#xff1a; 使用JavaScript组件进行MD5加密得到Http header&#xff0c;调用API接口增量获取接口数据&#xff0c;使用json input组件解析数据入库 案例适用范围&#xff1a; MD5加密可参考、增量过程可参考、调用API接口获取…

Jenkins--任务详解

一、任务类型 Jenkins的主要功能的实现是由执行任务去完成的&#xff0c;常用的任务类型主要有以下三种&#xff1a; 自由风格任务(Free Style Project): 这是Jenkins中最常用的任务类型&#xff0c;允许你自定义各种构建步骤和配置选项&#xff0c;如源码管理、构建触发器、…

JMM内存模型 volatile关键字解析

前言 对于多线程等等的各种操作,相比各位都了然于胸,现在我们来介绍一下更底层一点点的JMM内存模型,其实也是一个很简单的理想的内存模型 注意与JVM的内存模型区分 多线程内存模型主要是基于CPU缓存搭建起来的 这里就区分工作内存和主内存了 我们线程操作的其实是主内存的一个副…

构建第一个JS应用(FA模型)

创建JS工程 若首次打开DevEco Studio&#xff0c;请点击Create Project创建工程。如果已经打开了一个工程&#xff0c;请在菜单栏选择File > New > Create Project来创建一个新工程。选择Application应用开发&#xff08;本文以应用开发为例&#xff0c;Atomic Service对…