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

news2024/11/26 1:54:19

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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.coloradmin.cn/o/1565517.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HbnnMall电子商城系统介绍(功能与技术栈)

今天在看自己网站上的文章时,看到了曾经开发的电商系统。那是在2020年,来到小米两年后,我已经对各个业务线,各种专业知识有了系统性的了解和学习,所以想自己动手写一个电商系统,以便进一步提高自己的技术。…

【数论】莫比乌斯反演(欧拉反演)进阶-杜教筛

文章目录 前言 回忆 题集12 杜教筛例题 前言 这里需要对莫反有一些基础。 不会的可以点这里 回忆 f ( n ) ∑ d ∣ n g ( d ) → g ( n ) ∑ d ∣ n f ( d ) μ ( n d ) f(n)\sum_{d|n}g(d)\rightarrow g(n)\sum_{d|n}f(d)\mu(\frac{n}{d}) f(n)∑d∣n​g(d)→g(n)∑d∣n​…

vue3+eachrts饼图轮流切换显示高亮数据

<template><div class"charts-box"><div class"charts-instance" ref"chartRef"></div>// 自定义legend 样式<div class"charts-note"><span v-for"(items, index) in data.dataList" cla…

unity之 “Allow ‘unsafe‘ code“ 在哪里。

导入unity中的代码&#xff0c;出现如下错误&#xff0c;该如何解决&#xff1f; Unsafe code may only appear if compiling with /unsafe. Enable "Allow unsafe code" in Player Settings to fix this error 解决这个问题&#xff0c;只需要设置就可以。 设置的地…

【苍穹外卖】log爆红

使用了Slf4j注解&#xff0c;用于自动生成一个log对象&#xff0c;相当于private final Logger log LoggerFactory.getLogger(当前类名.class); 这个注解需要安装Lombok插件才能使用。 IDEA file—settings–plugins&#xff0c;搜索lombok–install。安装完后自动重启IDEA后…

【WEEK6】 【DAY2】DQL Data Querying - Part Two 【English Version】

2024.4.2 Tuesday Following the previous article 【WEEK6】 【DAY1】DQL Data Query - Part One【English Version】 Contents 4.4. Join Queries4.4.1. JOIN Comparison4.4.2. Seven Types of JOINs4.4.3. Examples4.4.3.1. In this example, the results of INNER JOIN and…

DLL导出API注意事项

文章目录 问题原则示例一解决方案 示例二解决方法 参考 问题 在 windows 平台下&#xff0c;如果在动态库的接口中使用 std::string 或其它 std 容器&#xff0c;会导致崩溃或其它内存问题&#xff0c;所以一般要求动态库的接口必须是 C 语言实现。 原则 一个原则&#xff1a;…

LabVIEW专栏二、调用子VI

该节目标是创建带子vi&#xff0c;修改vi属性&#xff0c;测试可重入和不可重入的区别 一 、设置子VI 把VI封装成为子VI&#xff0c;可以帮助模块化程序&#xff0c;简化代码结构。 任何VI本身都可以成为别的VI的子VI。 1.1、设置输入输出端子 1、在前面板空白处&#xff0…

JavaScript中什么叫深拷贝?

在 JavaScript 中&#xff0c;深拷贝指的是创建一个新的对象&#xff0c;这个新的对象与原始对象完全独立&#xff0c;没有任何共享的属性或者数据&#xff0c;它们不共享同一块内存地址。深拷贝会复制原始对象的所有属性和嵌套对象的所有属性&#xff0c;包括嵌套对象中的属性…

Mybatis——查询数据

查询操作 根据用户id查询单条记录&#xff0c;在映射器接口(UserMapper)中定义如下方法&#xff1a; package org.example.mapper;import org.example.demo.User;import java.util.List;public interface UserMapper {//根据id查询UserUser selectUserById(Integer userId); …

使用 RisingWave、NATS JetStream 和 Superset 进行实时物联网监控

在物联网&#xff08;IoT&#xff09;背景下&#xff0c;处理实时数据会遇到一些特定的障碍&#xff0c;如边缘计算资源不足、网络条件限制、扩展性存在问题、设备间有多样性差异。要克服这些挑战&#xff0c;需要高效的边缘计算技术、强大的安全措施、标准化协议、可扩展的管理…

【升降自如】OLED升降透明屏,智能调节,打造个性化观影体验

OLED升降透明屏&#xff0c;作为科技领域的创新之作&#xff0c;以其升降自如、智能调节的特点&#xff0c;为用户带来了前所未有的个性化观影体验。 这款透明屏采用先进的OLED显示技术&#xff0c;不仅色彩鲜艳、对比度高&#xff0c;而且具备出色的透明性能。更值得一提的是&…

3D人脸扫描技术与数字人深度定制服务:赋能打造超写实3D数字分身

在数字时代&#xff0c;3D数字分身有着广泛的应用场景&#xff0c;在动画视频、广告宣传片、大型活动主持人、AI交互数字人等领域&#xff0c;发挥着重要的商业价值。其中&#xff0c;3D人脸扫描技术&#xff0c;推动了超写实3D数字分身的诞生。 公司案例 2023海心沙元宇宙音乐…

10_MVC

文章目录 JSON常用的JSON解析Jackson的常规使用指定日期格式 MVC设计模式MVC介绍前后端分离案例&#xff08;开发与Json相关接口&#xff09; 三层架构三层架构介绍 JSON JSON&#xff08;JavaScript Object Notation&#xff09; 是一种轻量级的数据交换格式&#xff0c;是存…

[中级]软考_软件设计_计算机组成与体系结构_06_ 流水线技术

流水线技术 前言相关考试考点一&#xff1a;流水线执行时间概念流水线步骤解析参数计算案例解析&#xff1a;流水线计算第一问第二问 考点二&#xff1a;流水线吞吐率 前言 第一章比较重要的一种计算题型&#xff0c;经常考到&#xff0c;一般考试1 ~ 2分。 相关考试 流水线…

【智能算法】蜜獾算法(HBA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2021年&#xff0c;FA Hashim等人受到自然界中蜜獾狩猎行为启发&#xff0c;提出了蜜獾算法&#xff08;(Honey Badger Algorithm&#xff0c;HBA&#xff09;。 2.算法原理 2.1算法思想 蜜獾以其…

文献速递:深度学习胰腺癌诊断--深度学习算法用于从疾病轨迹预测胰腺癌风险

文献速递&#xff1a;深度学习胰腺癌诊断--深度学习算法用于从疾病轨迹预测胰腺癌风险 麦田医学 美好事物中转站 2024-04-02 14:36 Title 题目 A deep learning algorithm to predict risk of pancreatic cancer from disease trajectories 深度学习算法用于从疾病轨迹预测…

WPF-基础及进阶扩展合集(持续更新)

目录 一、基础 1、GridSplitter分割线 2、x:static访问资源文件 3、wpf触发器 4、添加xaml资源文件 5、Convert转换器 6、多路绑定与多路转换器 二、进阶扩展 1、HierarchicalDataTemplate 2、XmlDataProvider从外部文件获取源 3、TextBox在CellTemplate中的焦点问题…

【LeetCode热题100】79. 单词搜索(回溯)

一.题目要求 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的单元格内的字母构成&#xff0c;其中“相邻”单元格是那些水平…

揭秘代码安全:告别硬编码,灵活策略守护你的账户密码信息安全

前言 在编写代码时&#xff0c;为了遵循严格的安全规范&#xff0c;应避免硬编码任何敏感信息如账号凭证、密钥等直接出现在源代码中。相反&#xff0c;推荐采取安全措施&#xff0c;如使用环境变量、加密存储或安全凭据管理系统来间接引用和保护这类数据。如此一来&#xff0c…