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(

本文详细介绍了如何使用MATLAB进行灰度图像的直方图均衡化,通过比较原始图像和处理后的图像效果,阐述了直方图均衡化的价值。文章不仅提到了MATLAB内置的histeq函数,还探讨了一种展开图像频率的方法来计算转换函数,以直观展示像素值的转换过程。最后,提供了源代码,并引用了冈萨雷斯的《数字图像处理》作为参考文献。
1551

被折叠的 条评论
为什么被折叠?



