MATLAB直方图均衡化函数的计算及使用

本文针对灰度图像的直方图均衡化函数给出运算方法。

图像的直方图展示了图像汇总的不同灰度级的分布。由下图的比较,我们可以清楚地区分:左上原始图像的像素值主要集中在低值处,因此整个图像看起来较为暗沉,不易分辨;而左下处理后的图像进行了灰度均衡化之后,整幅图像的像素值在0~256上分布较为均匀,因此更加清晰可辨。

matlab中有自带函数histeq可以很好地完成灰度直方图均衡化,而本文用的是展开图像频率的直方图均衡化方法,因为这个方法是先求出转换函数再进行计算,因此可以更直观地看出转换过程。
所谓展开图像频率,是指使用如下方程进行处理。

其中,sk为输出亮度值,T()为转换函数,rk为输入亮度值;L为图像中可能的灰度级数。本文中的原始图像为uint8格式,所以L=2^8=256; Pr为亮度值为rk的像素的分布概率,Pr(rk)=nk/MN,其中MN为像素总个数,nk为像素值为rk的像素点个数。

s0=255pr(r0);
s1=255
[pr(r0)+pr(r1)];

sk=255*[pr(r0)+pr(r1)+…Pr(rk)];
以此类推。

此图即为转换函数图。由此图可以看出,此函数主要将原先集中在亮度值较低处的函数值拉伸到了整个0~255区间上,因此图像会变得更加清晰。
以下为源代码:

I1=imread('Fig1.tif');
[M,N]=size(I1);
subplot(2,2,1);
imshow(I1);         %显示原图
title('original image');
subplot(2,2,2);
h1=imhist(I1);
bar(h1);            %显示灰度直方图
axis([0 256,-inf,inf]);%求变换函数
s=[];
s(1)=255*h1(1)/M/N;
for k=2:255s(k)=s(k-1)+h1(k)/M/N;
end%%绘制变换后的图像
I2=[];for m=1:Mfor n=1:Nfor k=1:255if I1(m,n)==k %遍历I1中的所有像素点I2(m,n)=round(s(k));%取整endendendend
I2=uint8(I2);  %由于运算后函数为double型,因此需用此句转换为uint8型以显示
subplot(2,2,3);
imshow(I2);
subplot(2,2,4);
h2=imhist(I2);
bar(h2);  figure;
plot(s);

参考文献:
冈萨雷斯.数字图像处理[M].阮天琪,等译.3版.北京:电子工业出版社,2011:72-83

MATLAB直方图均衡化函数的计算及使用相关推荐

  1. histeq从用法到原理——Matlab直方图均衡化函数

    转载于http://blog.sina.com.cn/s/blog_14d1511ee0102wwyt.html (公式未正常显示,请看原文链接) 一.用法 histeq是Matlab中的一个工具箱函 ...

  2. matlab loopcount,求助一个数值积分问题,用matlab的quadgk函数来计算,谢谢!

    引用回帖: wurongjun at 2017-07-31 11:49:49 你好!我的Matlab是旧版! 麻烦你把你的quadgk函数代码贴一个上来,谢谢啦! 用命令 type quadgk就可以 ...

  3. resize用法matlab,opencv的resize和matlab的imresize函数的计算

    在用c++代码复现matlab代码时,遇到两者resize函数的结果不相同的问题. opencv: resize(image1, reTmp, Size(50, 50), 0, 0, cv::INTE ...

  4. matlab 直方图均衡化 histeq实现

    function img = histEq(img) % 输入图像灰度.rgb图像都可以 % 1 转灰度图像 2. 统计每一灰度级的数量 3. 累计灰度级 4. 归一化为累计概率 % 5. 当前灰度级 ...

  5. 【图像处理】直方图均衡化(附带Matlab及OpenCV3自编程实现代码)

    [fishing-pan:https://blog.csdn.net/u013921430转载请注明出处] 前言 直方图均衡化是最基础的图像处理方法之一,也是本人接触图像处理时最先接触到的算法.算法很 ...

  6. matlab实现彩色图像的直方图均衡化

    本篇用于记录用matlab实现彩色图像的直方图均衡化算法,并与matlab自带的直方图均衡化函数histeq做对比. 直方图原理可以参考下面的博客文章:直方图均衡化 原理.流程.公式推导及matlab ...

  7. matlab数字图像处理之局部直方图均衡化

    在对图像的直方图进行处理时,有时需要对图像小区域细节的局部增强,解决的办法就是在图像的每一个像素点的领域中,按照灰度级分布设置变换函数(可以是邻域直方图均衡化,也可以是邻域直方图匹配),来进行局部增强 ...

  8. Matlab数字图像处理 02 灰度变化(图像直方图、直方图均衡化、直方图匹配)

    第二章 灰度变化 2.1 图像的亮度.对比度和动态范围 2.1.1 亮度 2.1.2 对比度 2.1.3 动态范围 2.2 线性灰度变换 2.2.1 具有饱和处理的线性灰度变换 2.2.2 分段线性灰 ...

  9. matlab 增加图像对比度_计算机视觉学习笔记6 图像直方图与直方图均衡化

    图像的直方图 图像直方图表示图像中每一种像素的个数,反映了图像中每种像素值出现的频率,是图像的基本统计特征之一,具有平移,旋转,缩放不变性,广泛应用于图像处理的各个领域.比如灰度图像的阈值分割,基于颜 ...

  10. MATLAB图像处理-图像增强之彩色图像直方图均衡化(RGB通道和HSV通道两种)

    直方图均衡化这种方法通常用来增加许多图像的全局对比度,尤其是当图像的有用数据的对比度相当接近的时候.通过这种方法,亮度可以更好地在直方图上分布.这样就可以用于增强局部的对比度而不影响整体的对比度,直方 ...

最新文章

  1. 2021年春季学期-信号与系统-第十五次作业参考答案-第十一小题参考答案
  2. python sql server 数据同步_两台SQL Server数据同步解决方案
  3. 检查电脑是否被安装***的三个小命令
  4. Javascript网站繁简转换解决方案
  5. 数据结构-顺序表(C语言实现)
  6. javascript 西瓜一期 10 十进制数数的详细进位解析
  7. go-callvis:Go调用关系图(call graph)
  8. linux c语言 utf8读写,关于在C程序中处理UTF-8文本的方法详解
  9. Lighttpd 搭建 Web 服务器
  10. UE3名称结构(Name)
  11. android 动画基础,Android 动画基础
  12. MFC最详细入门教程[转载]
  13. informix使用得一些小常识
  14. 微信开发工具小程序获取手机号失败
  15. 微分方程c语言求解,使用C语言解常微分方程 C ODE.doc
  16. 2017-4-18 CCCC决赛总结
  17. 基于android的教育机构家校通系统app
  18. 抖音爆火的“弹幕互动游戏”是什么,如何搭建直播间?
  19. 2016-7-20 奶奶走了
  20. 1033 旧键盘打字 (20 分)

热门文章

  1. Single Radio Voice Call Continuity (SRVCC)
  2. CSFB(电路域回落)与VoLTE(4G语音承载)
  3. 亮度、对比度与饱和度
  4. GkCTF2020逆向部分wp
  5. 内网渗透小技巧(转载)
  6. 使用matplotlib修改字体之Times New Roman
  7. 树莓派组网 ad-hoc模式
  8. element-ui MessageBox弹框确定和取消位置(this.$confirm)
  9. C语言函数之可变参数原理:va_start、va_arg及va_end
  10. html中的abbr有什么作用,html中关于abbr 标签的使用以及作用的详解