matlab几种直方图均衡化方法学习笔记(HE、AHE、CLAHE附代码)

这篇具有很好参考价值的文章主要介绍了matlab几种直方图均衡化方法学习笔记(HE、AHE、CLAHE附代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、直方图:是用来描述图像像素灰度级与该像素出现频率之间的关系,表征图像像素的分布情况。
2、直方图均衡化方法(HE)通过将图像的灰度直方图从较为集中的某灰度区间拉伸到全部灰度范围内均匀分布,以此来扩大图像像素灰度值的分布范围,从而达到改善图像颜色和对比度的目的。简单说,就是把原来的图像的灰度分配均匀,使得0-255都有一定的取值。 是对整幅图像的每个像素都采用相同的变换。
优点简单易操作、速度快等。 缺点:若图像中存在过亮或过暗的局部区域时,这些区域的对比度并不能得到增强。
matlab直方图均衡化,matlab,图像处理      matlab直方图均衡化,matlab,图像处理
步骤:①统计图像中每个灰度值像素的个数(确定图像的灰度级)
           ②计算每个灰度值像素的频率,并计算累计频率(计算原始直方图的概率,计算直方图概率的累加值)
           ③将图像进行映射, 图像的灰度值=图像原来灰度值*累计频率(根据公式求取像素映射关系,灰度映射
举个例子:直方图均衡化的原理及过程(图源: 直方图均衡化的原理及实现_直方图均衡化原理_knowyourself1的博客-CSDN博客)
matlab直方图均衡化,matlab,图像处理matlab直方图均衡化,matlab,图像处理matlab直方图均衡化,matlab,图像处理

 代码块及效果

clear all;  %清除Matlab缓存数据
close all;
clc;
f=imread('F:\暗通道图像去雾matlab\图像去雾程序MATLAB\迷雾1.png');
f=rgb2gray(f);
subplot(221),imshow(f),title('原灰度图');
subplot(222),imhist(f),title('原灰度图像直方图');
g=histeq(f);
subplot(223),imshow(g),title('直方图均衡化后图');
subplot(224),imhist(g),title('均衡化后直方图');

matlab直方图均衡化,matlab,图像处理

imhist函数是matlab自带的计算图像灰度直方图的函数。(具体代码可参考: 直方图均衡化(HE, AHE, CLAHE)_直方图均衡化ahe_GtLinyer的博客-CSDN博客)
3、自适应直方图均衡化方法(AHE):将图像划分成多个局部区域,然后通过计算图像局部区域的直方图来调整原始图像的亮度分布。(就是每个像素通过其周边一个矩形范围内的像素的直方图进行均衡化。均衡的方式则完全同普通的均衡化算法:变换函数同像素周边的累积直方图函数(CDF)成比例)
优点:改善了图像局部区域的对比度,并获得了更多的细节。 缺点:存在噪声放大等问题。
当某个区域包含的像素值非常接近,其区域的直方图就会尖状化,此时直方图的变换函数会将一个很窄范围内的像素映射到整个像素范围。这将使得某些平坦区域中的少量噪音经AHE处理后过度放大。
局部直方图处理大致有3种实现方法:( 图像直方图及均衡方法总结(二)自适应直方图均衡AHE,CLAHE_自适应直方图均衡化原理_Naruto_Q的博客-CSDN博客)
①将原始图片划分成不重叠的子块,在每个子块内做直方图处理,该方法简单但输出图像会有块效应;
②类似模板卷积的方式,以待处理的点为中心,取其邻域为子块,在子块内做直方图处理,处理结果仅映射到该点可以消除块效应,但需要对每个点计算一次直方图处理,效率低;
③前两种方法的结合版,不再逐像素移动,步长小于子块宽度以确保两个相邻子块有重叠;每个子块做直方图映射后的结果赋值给子块内所有点,这样每个点会有多次赋值,最终的取值为这些赋值的均值;
4、 对比度受限制自适应直方图均衡化(CLAHE):
将图片先分成若干区域块,然后在每个区域中根据一定的输出直方图分布(在Matlab中,该分布为用户指定)单独进行均衡化的处理,最后相邻的区域通过 线性差值进行拼接,有效降低边界伪影。
CLAHE与AHE的不同主要在于其对于对比度的限幅,在CLAHE中,对于每个小区域都必须使用对比度限幅,用来克服AHE的过度放大噪音的问题。 
CLAHE通过用预先定义的阈值来裁剪直方图以达到限制放大倍数的目的。该算法的优势在于它不是选择直接忽略掉那些超出限幅的部分,而是将这些裁剪掉的部分均匀分布到直方图的其他部分。

matlab直方图均衡化,matlab,图像处理

如果仅仅需要一个结果,可以直接使用matlab中的adapthisteq()函数。函数adapthisteq()只能用来处理灰度图,如果要处理彩色图像,则需要结合自己编写的代码来完成。

clear all;  %清除Matlab缓存数据
close all;
clc;

img=imread('F:\暗通道图像去雾matlab\图像去雾程序MATLAB\迷雾1.png');
figure,
subplot(1,2,1),imshow(img);title('原图');
if length(size(img))>2
    rimg = img(:,:,1);  
    gimg = img(:,:,2);  
    bimg = img(:,:,3);  
    resultr = adapthisteq(rimg);  
    resultg = adapthisteq(gimg);  
    resultb = adapthisteq(bimg);  
    result = cat(3, resultr, resultg, resultb); 
    subplot(1,2,2),imshow(result);title('CLAHE处理后');
end

matlab直方图均衡化,matlab,图像处理

 adapthisteq()参数对图像的影响:

matlab直方图均衡化,matlab,图像处理

clear all;  %清除Matlab缓存数据
close all;
clc;

g=imread('F:\暗通道图像去雾matlab\图像去雾程序MATLAB\迷雾2.png');
f=rgb2gray(g)
subplot 221;imshow(f);title('(a)原灰度图像');
g1=adapthisteq(f); subplot 222;imshow(g1);
title('(b)使用adapthisteq默认值[8 8]');

g2=adapthisteq(f,'NumTiles',[25 25]);
subplot 223;imshow(g1);
title('(c)NumTiles置为[25 25]的结果');
g3=adapthisteq(f,'NumTiles',[25 25],'ClipLimit',0.05);
subplot 224;imshow(g1);
title('(d)使用这一小片数量且ClipLimit=0.05');

matlab直方图均衡化,matlab,图像处理

 如有错误,还请指正。❤文章来源地址https://www.toymoban.com/news/detail-810603.html

到了这里,关于matlab几种直方图均衡化方法学习笔记(HE、AHE、CLAHE附代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 直方图均衡化原理

    2024年02月09日
    浏览(61)
  • 直方图均衡化算法

    直方图均衡化是一种图像处理算法,通过调整图像的灰度级分布,增强图像的对比度和细节。下面是直方图均衡化算法的基本步骤: 统计原始图像的灰度直方图:遍历整个图像,计算每个灰度级出现的频次。 计算累积直方图:对灰度直方图进行累加,得到每个灰度级及其之

    2024年02月08日
    浏览(42)
  • Python实现直方图均衡化

    直方图均衡化: 作用:直方图均衡化是一种有效的图像增强技术,原始图像在灰度分布上可能集中在较窄的区间,造成图像不够清晰。采用直方图均衡化可以将原始图像的直方图变换为均匀分布,这样增加了像素之间的灰度值差别,从而达到增强图像整体对比度的效果。 具

    2024年02月11日
    浏览(43)
  • 【数字图像处理】直方图均衡化

    直方图均衡化是一种常见的图像增强方法,可以增强图像的对比度。其数学原理如下: 首先,我们需要了解直方图的概念。直方图是对图像像素分布的一种统计,它将每个像素值出现的次数记录下来,并以图形的方式呈现出来。在一幅图像中,像素值的范围通常是有限的。例

    2023年04月13日
    浏览(58)
  • Python Opencv实践 - 图像直方图均衡化

         

    2024年02月11日
    浏览(43)
  • 【数字图像处理】直方图均衡化与规定化

    目录 直方图处理技术概述 直方图均衡化 公式推导  Matlab代码实现 图像的规定化 数学推导 单映射 Matlab代码 效果展示​编辑  组映射 Matlab代码 灰度级范围[0,L-1]的数字图像,在实际使用中,用哥灰度级的像素总数除以MN的整幅图像的像素数量,归一化到规律中进行计算,这样

    2023年04月26日
    浏览(43)
  • 数字图像处理实验(直方图均衡化&规定化)

    图像均衡化   图像均衡化是一种图像处理技术,它的目的是改善图像的对比度。   具体来说,对于一张图像,其直方图就是统计图像中各灰度级出现的次数的图像。通常情况下,图像的直方图会呈现不平衡的状态,即图像的某些灰度级出现的次数很多,而其它灰度级出现的

    2024年02月04日
    浏览(65)
  • OpenCV官方教程中文版 —— 直方图均衡化

    本小节我们要学习直方图均衡化的概念,以及如何使用它来改善图片的对比。 想象一下如果一副图像中的大多是像素点的像素值都集中在一个像素值范围之内会怎样呢?例如,如果一幅图片整体很亮,那所有的像素值应该都会很高。但是一副高质量的图像的像素值分布应该很

    2024年02月06日
    浏览(46)
  • FPGA图像处理仿真实验——直方图均衡化

    直方图均衡化实验,主要包括三部分,直方图统计、计算累加直方图、均衡化。 1、直方图统计        直方图统计就是记录每个灰度值在图片中出现的像素次数,灰度图片有0-255个灰度级,如果我们定义256个寄存器来存储数据比较麻烦,所以借用RAM来实现直方图统计。当输入

    2024年02月07日
    浏览(57)
  • OpenCV10-图像直方图:直方图绘制、直方图归一化、直方图比较、直方图均衡化、直方图规定化、直方图反射投影

    图像直方图就是统计图像中每个灰度值的个数,之后将灰度值作为横轴,以灰度值个数或者灰度值所占比率作为纵轴的统计图。通过直方图,可以看出图像中哪些灰度值数目较多,哪些较少,可以通过一定的方法将灰度值较为集中的区域映射到较为稀疏的区域,从而使图像在

    2024年01月16日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包