【图像增强(空域)】基于直方图增强的图像增强及Matlab仿真

news/2024/5/21 1:51:58

1. 摘要

图像的灰度直方图表示灰度图像中具有每种灰度像素的个数,反映了图像中每种灰度级出现的频率,是图像的基本统计特征之一。直方图均衡方法因为其有效性和简单性已成为图像对比度增强的最常用的方法。其基本思想是根据输入图像的灰度概率分布来确定其对应的输出灰度值,通过拓展图像的动态范围来达到提升图像对比度的目的。常用的直方图增强方法包括:直方图均衡化和直方图规定化。

2. 原理

数字图像处理中的直方图,也称为灰度级直方图,即一幅图像的灰度分布图,表示数字图像中每一个灰度与该灰度级出现的频数之间的统计关系。直方图定义为:

其中,nk表示第k级灰度的像素数量,N为该图像的总像素数量,rk为第k个灰度级,L为灰度级数,P(rk)为rk灰度级出现的相对频数(归一化后)。直方图中用横坐标表示各个灰度值,纵坐标表示该灰度值的像素数对整个图像的像素数量的比率,对像素灰度值进行归一化处理,值的范围在0~1之间,直方图的形状和图像的视觉效果有着对应关系,因此可以通过变换直方图来实现图像增强。

在Matlab的图像处理工具箱中,采用函数imhist来计算和显示图像的直方图,包含以下几种调用形式:

imhist(I):绘制灰度图像I的直方图。

imhist(I,n):该函数指定灰度级的数目为n,n的默认值为256。

imhist(X,map):该函数绘制索引图象X的直方图。

3.直方图均衡化

直方图有均衡化是一种利用灰度变换自动调节图像对比度质量的方法,直方图均衡化操作时对图像直方图进行处理,使得处理后的直方图为平坦形状。基本思想是通过灰度级的概率密度函数求出灰度变换函数,它是一种以累积分布函数变换法为基础的直方图修正法。变换函数T(r)与原图像概率密度函数Pr(r)的关系为:

其中T(r)要满足在0~1范围内。以上是以连续随机变量为基础的,应用于数字图像处理的离散形式如下:

直方图均衡化处理的步骤如下:

1. 求出给定待处理图像的直方图Pr(r)

2. 利用累计分布函数对原图像的统计直方图做变换,得到新的图像灰度。

3. 进行近似处理,将新灰度代替旧灰度,同时将灰度值相等或近似的每个灰度直方图合并在一起,得到Ps(S)。

在Matlab图像处理工具箱中提供了函数histeq()进行直方图均衡化处理,其具体的调用方法如下:

J=histeq(I,n): 该函数I为输入的原图像,J为直方图均衡化后的图像,n为均衡化的灰度级数,默认值为64。

4.直方图规定化


http://www.mrgr.cn/p/16674525

相关文章

OpenHarmony 实战开发(南向)-Docker编译环境搭建

Docker环境介绍 OpenHarmony为开发者提供了两种Docker环境,以帮助开发者快速完成复杂的开发环境准备工作。两种Docker环境及适用场景如下: 独立Docker环境:适用于直接基于Ubuntu、Windows操作系统平台进行版本编译的场景。 基于HPM的Docker…

DDD面试题:DDD聚合和表的对应关系是什么 ?(来自蚂蚁面试)

文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备 免费赠送 :《尼恩技术圣经+高并发系列PDF》 ,帮你 实现技术自由,…

一种基于光电容积波的血压测量神经网络算法,开源、低功耗、低成本的人工智能软硬件提供者

具体的软硬件实现点击 http://mcu-ai.com/ MCU-AI技术网页_MCU-AI人工智能 心血管疾病是最严重的死亡原因之一,每年在全世界造成严重的生命损失。持续监测血压似乎是最可行的选择,但这需要一个侵入性的过程,带来了几层复杂性。这促使我们开发一种方法,通过使用光体积描记图…

ODOO17数据库安全策略一(ODOO17 Database Security Policy I)

ODOO17作为ERP软件,其核心优势在于数据安全。凭借强大的原生安全机制及灵活的配置,确保数据安全无忧: ODOO17, as an ERP software, boasts its significant advantage in exceptional data security performance. It effectively ensures wo…

如何vscode中刷力扣

推荐你阅读 互联网大厂万字专题总结 Redis总结 JUC总结 操作系统总结 JVM总结 Mysql总结 微服务总结 互联网大厂常考知识点 什么是系统调用 CPU底层锁指令有哪些 AQS与ReentrantLock原理 旁路策略缓存一致性 Java通配符看这一篇就够 Java自限定泛型 技术分享 如何vscode中刷力扣…

使用PyTorch实现L1, L2和Elastic Net正则化

在机器学习中,L1正则化、L2正则化和Elastic Net正则化是用来避免过拟合的技术,它们通过在损失函数中添加一个惩罚项来实现。 https://avoid.overfit.cn/post/c99ec105e41c4a71a0a1a29735245944

Selenium4自动化测试4--元素定位By.XPATH,元素定位最佳顺序

7-通过xpath定位,By.XPATHxpath是什么?XPath 是一门在 XML 文档中查找信息的语言xml是什么?XML(可扩展标记语言),主要用于传输数据为什么可以使用xpath定位html? XPath(XML路径语言)是一种用于在XML文档中定位元素的语言,它可以用于定位HTML文档中的元素。尽管XML和H…

Ubuntu上使用audit2allow解决Android Selinux问题

1.安装工具 sudo apt install policycoreutils 2.运行命令 提前用dmesg或者串口抓取kernel log 遇到错误,提示需要用-p指定policy file,然偶尝试创建一个policy空文件,用-p选项,遇到如下错误 3.规避问题 首先跟进错误log的堆栈…

Python 数据库操作- sqlite3 模块

Python sqlite3 模块 1. 安装 SQLite3 可使用 sqlite3 模块与 Python 进行集成。sqlite3 模块是由 Gerhard Haring 编写的。它提供了一个与 PEP 249 描述的 DB-API 2.0 规范兼容的 SQL 接口。用户不需要单独安装该模块,因为 Python 2.5.x 以上版本默认自带了该模块…

基于pinctrl和GPIO子系统的按键驱动程序

嵌入式驱动开发中pinctrl和GPIO子系统使用频率非常高,其中pinctrl子系统主要用于复用和配置引脚,GPIO子系统用于设置GPIO的输入/输出,向引脚写入数据或者从引脚读取数据。一个引脚可以复用为多种不同的功能,因此要使用GPIO子系统首先要先把引脚配置为GPIO功能。下面将分为两…

从零开始写 Docker(十四)---重构:实现容器间 rootfs 隔离

本文为从零开始写 Docker 系列第十四篇,实现容器间的 rootfs 隔离,使得多个容器间互不影响。完整代码见:https://github.com/lixd/mydocker 欢迎 Star推荐阅读以下文章对 docker 基本实现有一个大致认识:核心原理:深入理解 Docker 核心原理:Namespace、Cgroups 和 Rootfs…

PCI-Express-Technology(三)

3.1 总线/设备/功能/的定义(Definition of Bus,Device and Function)正如PCI一样,每个PCIe功能(Function)的标识在其所在的设备内,以及这个设备所连接的总线内,都是唯一的。其标识符一般被称为“BDF”。对于任意一个 PCIe 拓扑结构,配置软件负责检测出拓扑中的每个Bus、…

一键自动化博客发布工具,用过的人都说好(infoq篇)

使用一键自动化博客发布工具blog-auto-publishing-tools把博客发布到infoq上。infoq的博客发布界面也是非常简洁的。首页就只有基本的标题,内容和封面图片,所以infoq的实现也相对比较简单。 一起来看看吧。 前提条件 前提条件当然是先下载 blog-auto-publishing-tools这个博客…

替换spring-boot中的组件版本

spring-boot是一个用于简化开发的框架,引入spring-boot后会自动包含spring框架,通过引入xxx-start来完成指定组件的功能。比如: spring-boot-starter-web(嵌入 Tomcat 和 web 开发需要的 servlet 和 jsp 支持)spring-boot-starter-data-jpa(…

【Spring】GoF 之代理模式

一、代理模式 在 Java 程序中的代理模式的作用: 当一个对象需要受到保护的时候,可以考虑使用代理对象去完成某个行为 需要给某个对象的功能进行功能增强的时候,可以考虑找一个代理进行增强 A 对象无法和 B 对象直接交互时,也可以…

Spark云计算平台Databricks使用,SQL

创建workspace:Spark云计算平台Databricks使用,创建workspace和Compute计算集群(Spark集群)-CSDN博客 1 创建schema 选择Calalog,点击Create schema 输入名字,Storage location选择workspace,数…

网络原理

UDP 特点:无连接 不可靠传输 面向数据报 全双工 报文格式: UDP数据报UDP报头UDP载荷(应用层数据报) | 源端口 目的端口 报文长度 校验和 TCP 特点:有连接 可靠传输 面向字节流 全双工 作为传输层…

SD、SDIO等区别

SD memory card 存储卡,使用 SDIO 接口 SDIO card 使用 SDIO 接口通信的模块,比如 SDIO 接口的WIFI模块SD memory command SD存储卡使用的是 SDIO 总线协议,SDIO 总线协议规定的命令有些支持SD存储卡,有些不支持 SDIO command SDIO接口的模块使用 SDIO 总线协议,SDIO 总线…

2. Linux 基本指令(上)|ls|pwd|cd|tree|touch|mkdir|rmdir|rm

前言 计算机软硬件体系结构 层状结构应用软件Word,Matlab操作系统Windows,Linux设备驱动声卡驱动硬件CPU,内存,磁盘,显示器,键盘 操作系统概念 操作系统 是一款进行软硬件资源管理的软件 例子 比如在学…

线程-进程-多线程 概述简介

01 线程简介 任务, 进程, 线程, 多线程 多任务 什么是多任务? 生活中的例子 第一个例子: 这张图片, 一个人边吃饭边玩手机, 同时做了两件任务,大家不要去当这样的低头族. 第二个例子: 第二张图, 开车的时候能打电话, 能打点滴 第三个例子: 第三个图, 说明了我们可以边…