OPENCV清晰度判断(三)

接上篇:

信息熵

我还尝试了使用信息熵的方式:

图像也可以采用信息熵的方式来计算图像中的信息多少。

  • 基本概念:图像信息熵是一种特征的统计形式,反映了图像中平均信息量的多少。它表示图像灰度分布的聚集特征所包含的信息量。图像信息熵通常用来衡量图像的“繁忙”程度或复杂性。较高的熵值通常意味着图像具有更高的细节和复杂度,而较低的熵值则可能表明图像较为简单或模糊。
  • 计算方法:图像信息熵可以通过灰度直方图来计算。对于灰度图像,首先计算每个灰度值出现的概率,然后根据这些概率使用公式计算熵。熵的计算公式为:H(x) = ∑ p(i) log2 p(i),其中p(i)是灰度值为i的像素出现的概率。

代码:

double calcImageEntropy(cv::Mat img)
{if (img.channels() == 3){cv::cvtColor(img, img, cv::COLOR_RGB2GRAY);}cv::Mat hist;int histSize = 256;float range[] = { 0, 256 };const float* histRange = { range };cv::calcHist(&img, 1, 0, cv::Mat(), hist, 1, &histSize, &histRange);vector<float> p_hist;float total = 0.0f, total_result = 0.0f;for (int i = 0; i < histSize; i++){total += hist.at<int>(i, 0);}for (int i = 0; i < histSize; i++){float p = hist.at<int>(i, 0) / total;float logP = 0.0f;if (p == 0){logP = 0.0f;}else{logP = log2(p);}total_result += p * logP;}return total_result;
}

效果不明显。

高斯模糊

有一个思路是,如果一个图像是清晰的,那么抗模糊能力也是相对较强。可以针对图像做两个不同kernel size的高斯模糊,然后两者相减,得到的就是相对清晰的高频分量。谁的分量留的多,谁就更清晰。

代码:

double calcGaussVariance(cv::Mat img) 
{cv::Mat gaussKernel_3, guassKernel_7, divMat, mean, std;if (img.channels() == 3){ cv::cvtColor(img, img, cv::COLOR_RGB2GRAY);}cv::GaussianBlur(img, gaussKernel_3, cv::Size(3, 3), 50, 50);cv::GaussianBlur(img, guassKernel_7, cv::Size(7, 7), 50, 50);divMat = guassKernel_7 - gaussKernel_3;cv::meanStdDev(divMat, mean, std);return std.at<double>(0, 0);
}

代码中的meanStdDev是计算方差的opencv库函数。

经过试验,该方法有效。

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

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

相关文章

守护Perl代码的圣域:代码安全性与沙箱执行深度解析

守护Perl代码的圣域&#xff1a;代码安全性与沙箱执行深度解析 在软件开发中&#xff0c;代码安全性是一个至关重要的议题&#xff0c;特别是当涉及到执行外部代码或在多用户环境中运行脚本时。Perl&#xff0c;作为一种灵活的脚本语言&#xff0c;提供了多种机制来增强代码的…

Vue.js 全面解析:从基础到实践案例

引言&#xff1a; Vue.js 是一款轻量级且高效的前端框架&#xff0c;以其简洁的API和强大的功能&#xff0c;迅速成为了现代Web开发的热门选择。本文将深入浅出地介绍Vue.js的基础知识&#xff0c;并通过实际案例展示其核心属性的应用&#xff0c;帮助开发者快速掌握Vue.js的精…

Dubbo快速入门

1. Dubbo概述 官网地址&#xff1a;https://cn.dubbo.apache.org/zh-cn/ Apache Dubbo 是一款高性能的轻量级的Java RPC框架&#xff0c;可以和Spring框架无缝集成。 本地调用&#xff1a;本机调用&#xff0c;指同个JVM内部的方法调用&#xff0c;例如三层架构之间的方法调用…

微信小程序-自定义组件 properties

一.自定义组件properties 自定义组件的properties是组件的属性值定义部分。 如下label就i是properties里面定义的属性值 <custom-checkbox label"我已阅读并同意 用户协议 和 隐私协议" position"right"/>定义 Component({/*** 组件的属性列表*/p…

白话EAGLE2:解锁大模型的“打草稿”技术

实时了解业内动态&#xff0c;论文是最好的桥梁&#xff0c;专栏精选论文重点解读热点论文&#xff0c;围绕着行业实践和工程量产。若在某个环节出现卡点&#xff0c;可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技&#xff08;Mamba,xLSTM,KAN&#xff09;…

通义灵码上线 Visual Studio 插件市场啦!

通义灵码&#xff0c;是阿里云出品的一款基于通义大模型的智能编码辅助工具&#xff0c;提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码优化、注释生成、代码解释、研发智能问答、异常报错排查等能力&#xff0c;提供代码智能生成、研发智能问答能力。 通义灵…

flutter开发实战-ListWheelScrollView与自定义TimePicker时间选择器

flutter开发实战-ListWheelScrollView与自定义TimePicker 最近在使用时间选择器的时候&#xff0c;需要自定义一个TimePicker效果&#xff0c;当然这里就使用了ListWheelScrollView。ListWheelScrollView与ListView类似&#xff0c;但ListWheelScrollView渲染效果类似滚筒效果…

Frobenius 范数

Frobenius范数是一种用于衡量矩阵大小的标准方法。具体来说&#xff0c;Frobenius范数 ∥ M ∥ F \|\mathbf{M}\|_F ∥M∥F​是通过矩阵 M \mathbf{M} M中所有元素的平方和再开方得到的。它的计算公式为&#xff1a; ∥ M ∥ F ∑ i , j ∣ M i j ∣ 2 \|\mathbf{M}\|_F \sqr…

【vue3】【vant】 移动端中国传统文化和民间传说案例

更多项目点击&#x1f446;&#x1f446;&#x1f446;完整项目成品专栏 【vue3】【vant】 移动端中国传统文化和民间传说案例 获取源码方式项目说明&#xff1a;其中功能包括项目包含&#xff1a;项目运行环境运行截图和视频 获取源码方式 加Q群&#xff1a;632562109项目说…

origin合集汇总

文章目录 安装折线图相关教程学习笔记 安装 https://blog.csdn.net/qq_41517071/article/details/127600352 我b站也有安装教程&#xff0c;搜origin 即可 折线图 参考B站 相关教程 参考 公众号 学习笔记

Vip-智能预估+大数据标签+人群全选=用户分群!

Mobpush用户分群功能升级&#xff0c;创建推送入口vip用户可进入自有选择标签创建“用户分群”&#xff0c;相比于免费标签&#xff0c;“用户标签”维度更丰富。在应用基础属性上&#xff0c;增加“品牌”、“网络状态”、“运营商”&#xff0c;众所周知&#xff0c;不同厂商…

MJ可以SD就不行么?Stable Diffusion 轻松复刻12生肖水果拼盘,我被AI水果拼盘惊艳到了!

有人用MJ可以轻松生成AI水果拼盘&#xff0c;今天老徐就带大家试试用Stable Diffusion**如何轻松复刻实现。 提示词模版&#xff1a; fruit shapes for chinese new year a wonderful example of edible art, in the style of hyperrealistic wildlife portraits, 1 piece ma…

为什么ISO 45001职业健康安全管理体系是企业发展的基石

ISO 45001源自OHSAS 18001职业健康和安全管理体系&#xff0c;是全球第一个国际职业健康和安全管理标准。ISO&#xff08;国际标准化组织&#xff09;于2018年发布了这一标准&#xff0c;旨在帮助各类组织为员工提供一个更安全、更健康的工作环境。与OHSAS 18001相比&#xff0…

2024年跨境电商关键数据统计:市场规模将达到1.976万亿美元

预计2024年跨境电商消费市场规模将达到1.976万亿美元&#xff0c;占全球网上销售总额的31.2%。这一数据无疑展示了跨境电商市场的巨大潜力和迅猛增长趋势。 全球跨境电商的现状与未来 现状 2023年&#xff0c;全球跨境电商市场规模预计达到1.56万亿美元&#xff0c;占全球电子…

spring之HelloWord版

目录 基础结构说明 涉及到的功能 执行流程 spring包 引导类 bean定义 注解 回调接口拓展 测试入口 service包 回调接口拓展实现 实体类 自定义注解 基础结构说明 spring子包内&#xff0c;放置spring源码相关类&#xff0c;如注解定义&#xff0c;引导类执行逻辑等…

【网络安全学习】漏洞利用:BurpSuite的使用-02-常用的标签

下面介绍一下BurpSuite各个标签的用法&#x1f447; 1️⃣ Dashboard标签 Dashboard&#xff0c;顾名思义就是BurpSuite的仪表盘&#xff0c;可以通过Dashboard进行漏洞扫描&#xff0c;不过该功能需要升级到pro版本&#xff0c;也就是得交钱&#x1f62d;。 2️⃣ Target标签…

借助AI写代码,使用通义灵码智能编写Java和Vue3项目,在Idea和vscode里用AI写代码

在人工智能技术越来越成熟的当下&#xff0c;好多人说AI会取代程序员&#xff0c;这句话石头哥不知可否。但是有一点可以肯定&#xff0c;会熟练使用Ai&#xff0c;驾驭Ai的程序员肯定不会被时代所淘汰。所以今天石头哥就来教大家如何借助Ai来提升自己的代码编写效率。 一&…

用ChatMoney写歌,一分钟一首,音乐人将被AI取代?

本文由 ChatMoney团队出品 随着科技的不断进步&#xff0c;音乐是人类文明的一部分&#xff0c;它在社会、文化、艺术和娱乐领域发挥着重要作用。随着AI技术的发展&#xff0c;AI技术的应用正在以惊人的速度改变音乐创作、演奏、传播和消费的方式&#xff0c;有人欢呼&#xff…

根文件系统

根文件系统 1 介绍1.1 根文件系统介绍1.2 根文件系统目录1.3 常见的根文件系统 2 Buildroot 根文件系统的构建2.1 介绍2.2 依赖文件2.3 交叉编译工具2.4 构建2.4.1 配置 Target options2.4.2 配置 Toolchain2.4.3 配置 System configuration2.4.4 配置 Filesystem images2.4.5 …

代码随想录算法训练营DAY51|115.不同的子序列、583. 两个字符串的删除操作、72. 编辑距离

115.不同的子序列 题目链接&#xff1a;115.不同的子序列 class Solution(object):def numDistinct(self, s, t):""":type s: str:type t: str:rtype: int"""dp [[0]*(len(t)1) for _ in range(len(s)1)]for i in range(len(s)):dp[i][0]1for…