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

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.mzph.cn/diannao/9567.shtml

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

相关文章

【全开源】Java外卖霸王餐免费吃外卖小程序+APP+公众号+H5多端霸王餐源码

一、特色功能 霸王餐活动管理:允许商家发布和管理霸王餐活动,包括设置活动时间、具体优惠、活动规则等。用户参与与浏览:用户可以在小程序中浏览霸王餐活动列表,查看活动的详情信息,如商品或服务的免费赠送、活动规则…

原生微信小程序canvas签名功能

半个月前百度搜出来的,没存书签现在不知道是哪篇文章了,再搜也没搜出来那篇文章,还好当时把代码复制到本地跑了一下,现在再发csdn存一下。 sign.js Page({data: {ctx: null,width: null,height: null,drawCount: 0,drawState: &…

查找本机上的WIFI并查看密码。

在命令行模式下: 1。WIN 键 R,输入CMD,回车确认 2。在搜索框输入CMD,回车确认 以上的方法都可以打开命令行模式。也称终端,或者DOS模式。 查找本机上的WIFI密码,命令行如下: 首先&#xff…

汉诺塔问题和爬楼梯(递归)

感谢大佬的光临各位,希望和大家一起进步,望得到你的三连,互三支持,一起进步 个人主页:LaNzikinh-CSDN博客 c语言基础_LaNzikinh篮子的博客-CSDN博客 文章目录 一.爬楼梯问题二.汉诺塔问题总结 一.爬楼梯问题 假设你正…

Unity使用ToggleGroup对多个Toggle进行管理时,初始化默认选项失效的问题

问题描述: 在unity脚本的OnEnable中用代码设置Toggle集合中的其中一个对象的ison时,发现并没有根据设置发生变化。但是该Toggle的OnValueChange却发生过变化。 如果使用协程等待0.01s,那么对应组件的ison的修改才能生效,但是逐帧分析的话会发…

Elasticsearch:RBAC 和 RAG - 最好的朋友

作者:来自 Elastic Jeff Vestal 检索增强生成 (RAG) 通过提供额外的上下文或信息来增强大型语言模型 (LLM) 的知识,从而提高响应质量。 尽管 LLMs 拥有令人印象深刻的能力,但也有其局限性,例如无法在培训后保留新信息以及对不熟悉…

idea使用git不提示账号密码登录,而是输入token问题解决

idea 或者 webstream 等全家桶软件 使用git 推送代码时,不提示账号密码登录,而是输入token问题解决 你的代码仓库是gitlab 然后打开修改代码后推送时,会默认使用gitlab插件,所以提示数据token 解决方式就是把gitlab插件取消使用这…

ETL如何执行Java脚本

ETLCloud提供了执行 Java 脚本的方式,让用户能够灵活地处理数据并实现各种复杂的数据处理任务。 ETLCloud在数据处理领域的应用优势主要体现在以下几个方面: 灵活性:通过执行Java脚本,用户能够灵活定制数据处理逻辑,满…

监控异地组网怎么组网?

监控异地组网是指在不同地域的网络环境下,实现对监控设备的远程访问和管理。在传统的网络环境下,由于网络限制和设备配置等问题,监控设备的远程访问往往受到一定的限制和困扰。为了解决这个问题,引入了天联组网技术,实…

安卓开发--按键背景图片,按键其他属性,按键按键按下变色

前面已经介绍了一个空白按键工程的建立以及响应方式,可以参考这里:安卓开发–新建工程,新建虚拟手机,按键事件响应。 安卓开发是页面跳转是基础!!!所以本篇博客介绍利用按键实现页面跳转&#…

添加对象方法

添加对象方法的方法如下,这是一个通用模式 注意灵活运用。

数据库调优-SQL语句优化

2. SQL语句优化 sql 复制代码 # 请问这两条SQL语句有什么区别呢?你来猜一猜那条SQL语句执行查询效果更好! select id from sys_goods where goods_name华为 HUAWEI 麦芒7 魅海蓝 6G64G 全网通; ​ select id from sys_goods where goods_id14967325985…

Redis学习1——redis简介、基础

介绍 redis简介 Redis(Remote Dictonary Server) 是由Salvatore Sanfilippo开发的key-value缓存数据库,基于C语言开发。目前市面上,Redis和MongoDB是当前使用最广泛的NoSQL,而就Redis技术而言,它的性能十分优越,可以…

rngd: Error writing /dev/tpm0

检查数据库时发现messages中一直有rngd报错,rngd一直未配置,直接关闭了 /var/log/messages-20240414:Apr 11 04:59:49 hydb2 rngd: Error writing /dev/tpm0 /var/log/messages-20240414:Apr 12 07:31:39 hydb2 rngd: Error writing /dev/tpm0 /var/log…

shell-for循环语句练习题

1.计算从1到100所有整数的和 [rootlocalhost ~]# vim 1.sh #!/bin/bash sum0 #定义变量sum初始值为0 for i in {1..100} #for循环 i取值从1到100 do sum$[ isum ] #在每次循环中,变量i的值会依次取1到100的整数值。 #sum是一个累加器,初始值…

echarts自定义图例显示名称、数值、占比

先上代码 legend: {orient: vertical,left: 10,top:20,data: data,textStyle: {color: #9FB7D5 // 设置图例文字颜色为白色},// type: plain, // 设置图例类型为普通类型itemWidth: 10, // 设置图例项的宽度itemHeight: 10, // 设置图例项的高度formatter: function(name) {let…

Python专题:十、字典(2)

字典定义x{} get()函数 get(参数一,参数二) 参数一: 需要查找的关键词 参数二: 如果关键词不存在get返回的默认值 字典的更新 update()函数,字典y的元素,去更新字…

学生管理系统初级

根据题目要求生成大纲 总结: 1.在书写时,考虑到了书写时id可是是abc... 类型是String,但在根据id获取集合中元素时 list.get() ,get()里面是int类型。 2.在书写还有一点功能并不完全, 2.1查找时是打印所有…

十.吊打面试官系列-Tomcat优化-通过压测Tomcat调优实战

前言 上一篇文章我们讲解了一下Tomcat底层的结构和执行原理,我们需要重点去掌握的是Tomcat的高内聚低耦合的设计,以及责任链模式,以及Tomcat NIO编程模式,这些是Tomcat比较核心的点,本篇文章我们将对Tomcat的参数做一…

Java学习【类与对象】

类和对象 开始我们就不讲那些把大象放冰箱需要几步来引入面向对象的例子了,直接上干货。 在Java中,类是对现实世界中某一类事物的抽象描述。它包含了该类事物的属性和方法。属性用于描述事物的状态,而方法则用于描述事物可以做的事情。对象也…