【阅读笔记】基于图像灰度梯度最大值累加的清晰度评价算子

本文介绍的是一种新的清晰度评价算子,基于图像灰度梯度最大值累加

一、概述

目前在数字图像清晰度评价函数中常用的评价函数包括三类:灰度梯度评价函数、频域函数和统计学函数,其中灰度梯度评价函数具有计算简单,评价效果好等优点.经典清晰度评价函数和大多数改进的图像清晰度评价函数在评价过程中较少考虑噪音影响,从而使图像清晰度评价函数出现评价不准,甚至出现多峰等现象,影响自动聚焦效果。

实际光学成像系统相当于一个低通滤波器,其截止频率与离焦程度有关,离焦越严重,截止频率越低,反之越高.对应到图像清晰度表现为图像高频成分越高,图像细节越清楚,图像清晰度越高,反之则图像越模糊,图像清晰度越低.图像高频成分对应到空域上为图像灰度梯度,所以灰度梯度与图像清晰度正相关.

二、清晰度评价算子特性

2.1 无偏性:

清晰度评价函数曲线的峰值应该对应最清晰的聚焦的位置,不同离焦程度的评价值也对应着不同的离焦图像采集位置。

2.2 单峰性:

从远离准焦面到正焦面再到远离准焦面的过程中,聚焦评价函数曲线对应地先递增再递减,准确聚焦位置时取值最大,应该满足单峰性要求。

2.3 灵敏度:

评价函数曲线的陡峭程度反映了自动聚焦过程中的灵敏度,若曲线越平缓,则灵敏度越低。自动聚焦过程中希望有较高的灵敏度,曲线应该有一定的陡峭度。

2.4 抗噪性:

在噪声干扰下,曲线是否依旧能保持较好的形状特性。

2.5 实时性:

我们希望自动聚焦的过程是一个较为短暂的时间,为满足自动聚焦系统实时性的要求,设计的算法不能过于复杂,计算量不能太大。

三、算法过程

3.1 EOG函数平方梯度

F E O G = ∑ i , j ( ∣ f ( i , j ) − f ( i , j − 1 ) ∣ 2 + ∣ f ( i , j ) − f ( i − 1 , j ) ∣ 2 ) F_{EOG}=\sum_{i,j}(\lvert f(i,j)-f(i,j-1) \rvert ^2 +\lvert f(i,j)-f(i-1,j) \rvert ^2) FEOG=i,j(∣f(i,j)f(i,j1)2+f(i,j)f(i1,j)2)

3.2 Laplace算子梯度函数

Laplace算子函数

F L a p l a c e = ∑ i , j ∣ f ( i − 1 , j ) − f ( i + 1 , j ) + f ( i , j − 1 ) − f ( i , j + 1 ) − 4 f ( i , j ) ∣ 2 F_{Laplace}=\sum_{i,j}\lvert f(i-1,j)-f(i+1,j) + f(i,j-1)-f(i,j+1) - 4f(i,j) \rvert ^2 FLaplace=i,jf(i1,j)f(i+1,j)+f(i,j1)f(i,j+1)4f(i,j)2

3.3 基于图像灰度梯度最大值累加

求表像素 f ( i , j ) f(i,j) f(i,j)灰度与其相邻8个像素灰度之间的梯度关系,并求最大灰度梯度。

T 1 = ∣ f ( i − 1 , j − 1 ) − f ( i , j ) ∣ T1=\lvert f(i-1,j-1)-f(i,j)\rvert T1=f(i1,j1)f(i,j)∣
T 2 = ∣ f ( i − 1 , j ) − f ( i , j ) ∣ T2=\lvert f(i-1,j)-f(i,j)\rvert T2=f(i1,j)f(i,j)∣
T 3 = ∣ f ( i − 1 , j + 1 ) − f ( i , j ) ∣ T3=\lvert f(i-1,j+1)-f(i,j)\rvert T3=f(i1,j+1)f(i,j)∣
T 4 = ∣ f ( i , j − 1 ) − f ( i , j ) ∣ T4=\lvert f(i,j-1)-f(i,j)\rvert T4=f(i,j1)f(i,j)∣
T 5 = ∣ f ( i , j + 1 ) − f ( i , j ) ∣ T5=\lvert f(i,j+1)-f(i,j)\rvert T5=f(i,j+1)f(i,j)∣
T 6 = ∣ f ( i + 1 , j − 1 ) − f ( i , j ) ∣ T6=\lvert f(i+1,j-1)-f(i,j)\rvert T6=f(i+1,j1)f(i,j)∣
T 7 = ∣ f ( i + 1 , j 1 ) − f ( i , j ) ∣ T7=\lvert f(i+1,j1)-f(i,j)\rvert T7=f(i+1,j1)f(i,j)∣
T 8 = ∣ f ( i + 1 , j − 1 ) − f ( i , j ) ∣ T8=\lvert f(i+1,j-1)-f(i,j)\rvert T8=f(i+1,j1)f(i,j)∣

求最大值

m a x ( T ) = m a x ( T 1 , T 2 , T 3 , T 4 , T 5 , T 6 , T 7 , T 8 ) max(T)=max(T1,T2,T3,T4,T5,T6,T7,T8) max(T)=max(T1,T2,T3,T4,T5,T6,T7,T8)

当存在孤立噪音点时,很容易在噪音点位置处获得最大梯度。根据图像边缘分割理论,如果一个像素是图像边缘,那么它的八邻域像素至少还有两个像素是图像边缘。

基于灰度梯度最大值累加(LGGS)的清晰度评价函数为

F m a x = ∑ i , j m a x ( T ) ∗ ( m a x ( T ) − m i n ( T ) ) F_{max}=\sum_{i,j}max(T)*(max(T)-min(T)) Fmax=i,jmax(T)(max(T)min(T))

四、效果对比

通过一组清晰度渐进的数据对比清晰度评价效果,评价算子进行数值归一化,效果如下

噪声较小的情况下,EOG、Laplace、LGGS算子的评价值效果接近

噪声较大的情况下,Laplace效果不佳,EOG能用,LGGS算子的评价值效果最好

五 参考

《基于图像灰度梯度最大值累加的自动调焦算法》

觉得本文对您有一点帮助,欢迎讨论、点赞、收藏,您的支持激励我多多创作。

我的个人博客主页,欢迎访问

我的CSDN主页,欢迎访问

我的GitHub主页,欢迎访问

我的知乎主页,欢迎访问

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

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

相关文章

数据库底层存储的基本逻辑

1. 数据库、表空间、磁盘是多对多的关系 一个表空间可以分散到多个磁盘上,一个磁盘上也可以有多个表空间; 一个数据库可以分散存储在多个磁盘上,一个磁盘也可以包含多个数据库。 2. 一个表只能属于一个库,也只能对应一个表空间…

80,【4】BUUCTF WEB [SUCTF 2018]MultiSQL

53,【3】BUUCTF WEB october 2019 Twice SQLinjection-CSDN博客 上面这个链接是我第一次接触二次注入 这道题也涉及了 对二次注入不熟悉的可以看看 BUUCTF出了点问题,打不开,以下面这两篇wp作为学习对象 [SUCTF 2018]MultiSQL-CSDN博客 …

docker-registry

安装依赖 apt install apache2-utils设置密码 htpasswd -Bbn 用户名 密码 >/data/registry_hub/passwd#docker私服部署 docker run -d -p 5000:5000 --name docker-registry -v /data/registry_hub/:/var/lib/registry -v /data/registry_hub/passwd:/auth/htpasswd \ -e …

领域驱动设计(DDD)Spring Boot 3 实现 二

使用 Spring Boot 3 实现领域驱动设计(DDD)是一种很自然的选择,因为 Spring 提供了良好的生态支持,特别是在分层架构、依赖管理、事件驱动等方面。以下是如何在 Spring Boot 3 中结合 DDD 进行开发的详细指南: 项目结构…

FFmpeg 头文件完美翻译之 libavcodec 模块

前言 众所周知,FFmpeg 的代码开发上手难度较高,源于官方提供的文档很少有包含代码教程相关的。要想熟练掌握 FFmpeg 的代码库开发,需要借助它的头文件,FFmpeg 把很多代码库教程都写在头文件里面。因此,熟读头文件的内…

redis实现lamp架构缓存

redis服务器环境下mysql实现lamp架构缓存 ip角色环境192.168.242.49缓存服务器Redis2.2.7192.168.242.50mysql服务器mysql192.168.242.51web端php ***默认已安装好redis,mysql 三台服务器时间同步(非常重要) # 下载ntpdate yum -y install…

flink写parquet解决timestamp时间格式字段问题

背景 Apache Parquet 是一种开源的列式数据文件格式,旨在实现高效的数据存储和检索。它提供高性能压缩和编码方案(encoding schemes)来批量处理复杂数据,并且受到许多编程语言和分析工具的支持。 在我们通过flink写入parquet文件的时候,会遇到timestamp时间格式写入的问题。…

PaddleSeg 从配置文件和模型 URL 自动化运行预测任务

git clone https://github.com/PaddlePaddle/PaddleSeg.git# 在ipynb里面运行 cd PaddleSegimport sys sys.path.append(/home/aistudio/work/PaddleSeg)import os# 配置文件夹路径 folder_path "/home/aistudio/work/PaddleSeg/configs"# 遍历文件夹,寻…

ESMC-600M蛋白质语言模型本地部署攻略

前言 之前介绍了ESMC-6B模型的网络接口调用方法,但申请token比较慢,有网友问能不能出一个本地部署ESMC小模型的攻略,遂有本文。 其实本地部署并不复杂,官方github上面也比较清楚了。 操作过程 环境配置:CUDA 12.1、…

Spring Boot中如何实现异步处理

在 Spring Boot 中实现异步处理可以通过使用 Async 注解和 EnableAsync 注解来实现。以下是如何配置和使用异步处理的步骤和示例代码。 步骤: 启用异步支持: 在 Spring Boot 配置类上使用 EnableAsync 注解启用异步处理。使用 Async 注解异步方法&…

HTML<hgroup>标签

例子&#xff1a; 使用hgroup元素标记标题和段落是相关的&#xff1a; <hgroup> <h2>Norway</h2> <p>The land with the midnight sun.</p> </hgroup> 定义和用法&#xff1a; 标签<hgroup>用于包围标题和一个或多个<p&g…

人工智能在医疗领域的应用与挑战

人工智能在医疗领域的应用与挑战 摘要&#xff1a;本文深入探讨了人工智能在医疗领域的应用现状&#xff0c;分析了其在疾病诊断、药物研发、医疗影像分析等方面的显著成果&#xff0c;同时也剖析了人工智能在医疗应用中面临的数据隐私、伦理道德、技术可靠性等挑战&#xff0…

JavaScript 验证 API:全面解析与实战指南

JavaScript 验证 API:全面解析与实战指南 引言 随着互联网技术的不断发展,前端开发领域的重要性日益凸显。JavaScript 作为前端开发的核心技术之一,其功能性和可扩展性得到了广泛关注。验证功能是JavaScript中不可或缺的一部分,它保证了用户输入数据的正确性和有效性。本…

web端ActiveMq测试工具

如何用vue3创建简单的web端ActiveMq测试工具&#xff1f; 1、复用vue3模板框架 创建main.js,引入APP文件&#xff0c;createApp创建文件&#xff0c;并加载element插件&#xff0c;然后挂载dom节点 2、配置vue.config.js脚本配置 mport { defineConfig } from "vite&qu…

3.DrawCall的概念

DrawCall是渲染管线中的一个重要概念&#xff0c;指的是CPU向GPU发送的一个绘制命令&#xff0c;告诉GPU&#xff1a;“请根据我提供的数据&#xff0c;画一个物体&#xff08;或一部分物体&#xff09;。” 通俗易懂讲解&#xff1a;DrawCall就像给画师下订单 想象你是一个老…

低代码系统-产品架构案例介绍、简道云(七)

今天分析另外一个零代码、低代码产品-简道云&#xff0c;跟所有低代码产品的架构图一样&#xff0c;高、大、炫、美。 依然是从下至上&#xff0c;从左到右的顺序。 开发层 搭建中心 表单、流程、报表、用户中心&#xff0c;还是这些内容&#xff0c;自定义打印很多平台都有&am…

【Oracle篇】使用Hint对优化器的执行计划进行干预(含单表、多表、查询块、声明四大类Hint干预)

&#x1f4ab;《博主介绍》&#xff1a;✨又是一天没白过&#xff0c;我是奈斯&#xff0c;从事IT领域✨ &#x1f4ab;《擅长领域》&#xff1a;✌️擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控&#xff1b;并对SQLserver、NoSQL(…

C# lock使用的逻辑和情景

情景&#xff1a;扣库存&#xff0c;会出现超扣的情况&#xff0c;因为同一个单子会有不同的工作人员使用&#xff0c;要保证数据的一致性。那么就用锁。 优化锁对象管理 使用 Lazy 初始化锁对象&#xff1a; 使用 ConcurrentDictionary 的 GetOrAdd 方法结合 Lazy 确保锁对象只…

LabVIEW项目中的工控机与普通电脑选择

工控机&#xff08;Industrial PC&#xff09;与普通电脑在硬件设计、性能要求、稳定性、环境适应性等方面存在显著差异。了解这些区别对于在LabVIEW项目中选择合适的硬件至关重要。下面将详细分析这两种设备的主要差异&#xff0c;并为LabVIEW项目中的选择提供指导。 ​ 硬件设…

未初始化数据恢复全攻略

没有初始化概述 在日常使用电脑、硬盘、U盘等存储设备时&#xff0c;我们可能会遇到“没有初始化”的提示。这一情况通常发生在存储设备突然无法被系统正常识别或访问时&#xff0c;系统往往要求我们先进行初始化操作。然而&#xff0c;初始化操作意味着对存储设备进行格式化&…