直方图均衡化有以下几个好处:
增强图像对比度:直方图均衡化可以通过重新分配像素值来增强图像的对比度。这可以使得图像中的细节更加清晰可见,从而提高图像的质量和可读性。
均衡化图像亮度:直方图均衡化可以将图像的亮度均衡化,使得图像的整体亮度更加均匀,从而避免了图像中出现过亮或过暗的区域。
提高算法效果:直方图均衡化可以改善图像的质量和可读性,从而提高了图像处理算法的表现。例如,在图像分割、目标检测和人脸识别等应用中,直方图均衡化可以提高算法的准确性和鲁棒性。
简单易实现:直方图均衡化是一种简单而有效的图像处理技术,实现起来非常容易。因此,它被广泛应用于数字图像处理领域,特别是在计算机视觉和图像分析领域。
总之,直方图均衡化是一种非常有用的图像处理技术,它可以提高图像的质量和可读性,同时也可以提高图像处理算法的效果。
imhist()
imhist()是MATLAB中的一种图像处理函数,用于计算和绘制图像的直方图。该函数可以帮助用户了解图像中各个灰度级的像素数量分布情况,以便进行灰度级调整、对比度增强和图像分割等操作。
imhist()函数的语法如下:
[N, X] = imhist(I, nbins)
其中,I表示输入图像,nbins表示直方图中的bin数。函数会返回一个长度为nbins的向量N,其中N(i)表示图像中灰度值等于i的像素数量;另一个向量X表示各个bin的灰度值范围。
除了计算直方图外,imhist()函数还可以绘制直方图,以便更直观地了解图像的灰度分布情况。绘制直方图的语法如下:
imhist(I, nbins)
imhist()函数的返回值为空,函数会在新的图像窗口中绘制直方图。用户还可以通过一些可选参数来控制直方图的样式和显示方式,例如调整线条颜色、线型、透明度和坐标轴刻度等。
总之,imhist()函数是一种非常有用的图像处理函数,它可以帮助用户快速计算和可视化图像的直方图,从而更好地理解和分析图像的灰度级分布情况。
imadjust()
imadjust()是MATLAB中的一种图像处理函数,用于对图像进行灰度值调整。该函数可以对输入图像的灰度值进行线性或非线性变换,以便将其调整到期望的输出范围内。imadjust()函数的语法如下:
J = imadjust(I, [low_in high_in], [low_out high_out], gamma)
其中,I表示输入图像,J表示输出图像。[low_in high_in]
指定输入图像中需要进行调整的灰度值范围,[low_out high_out]
指定输出图像中需要映射到的灰度值范围。gamma是一个可选参数,用于指定非线性调整的程度。
imadjust()函数可以实现以下几种功能:
-
灰度值拉伸:将输入图像的像素值映射到输出图像的灰度值范围内,以增强图像的对比度和亮度。
-
直方图均衡化:将输入图像的直方图进行均衡化,以使得输出图像中各个灰度级出现的概率尽可能接近。
-
对数变换:对输入图像的灰度值进行对数变换,以便将灰度值范围较大的区域展开,使得图像细节更加清晰可见。
-
伽马校正:对输入图像的灰度值进行非线性变换,以调整图像的亮度和对比度。
其中,参数I是需要进行对比度和亮度调整的原始图像;[low_in high_in]是输入图像中需要拉伸的最低和最高像素值;[low_out high_out]是输出图像中对应的像素值;gamma是伽马校正因子,用于控制输出图像的亮度范围。
总之,imadjust()函数是一种非常有用的图像处理函数,它可以帮助用户快速实现各种灰度值调整操作,从而提高图像质量和可读性。
举例
1.将单幅的直方图划分为四种灰度级显示
I=imread('pollen.jpg');
f=rgb2gray(I);
subplot(3,2,1),imshow(f),title('原图');
subplot(3,2,3),imhist(f,256),title('划分256个灰度级');
subplot(3,2,4),imhist(f,128),title('划分128个灰度级');
subplot(3,2,5),imhist(f,64),title('划分64个灰度级');
subplot(3,2,6),imhist(f,32),title('划分32个灰度级');
通过将同一幅直方图分为不同的灰度级显示,观察纵坐标轴,可以发现:当灰度级划分的越多,直方图越密集,单个灰度等级上的像素数就越少;当灰度级划分的越少,直方图越稀疏,单个灰度等级上的像素数就越多。
2.四种不同状态的pollen.jpg观察均衡化前后的直方图
I=imread('pollen.jpg');
I1=imadjust(I,[0.1 0.4],[],1);
I2=imadjust(I,[],[0.2 0.5],1);
I3=imadjust(I,[],[],0.3);
I4=imadjust(I,[],[],1.2);
f1=rgb2gray(I1);
Ieq1=histeq(f1);
f2=rgb2gray(I2);
Ieq2=histeq(f2);
f3=rgb2gray(I3);
Ieq3=histeq(f3);
f4=rgb2gray(I4);
Ieq4=histeq(f4);
subplot(4,4,1),imshow(f1),title('高对比度');
subplot(4,4,2),imhist(f1,256),title('高对比度直方图');
subplot(4,4,3),imshow(Ieq1),title('均衡化');
subplot(4,4,4),imhist(Ieq1,256),title('均衡化直方图');
subplot(4,4,5),imshow(f2),title('低对比度');
subplot(4,4,6),imhist(f2,256),title('低对比度直方图');
subplot(4,4,7),imshow(Ieq2),title('均衡化');
subplot(4,4,8),imhist(Ieq2,256),title('均衡化直方图');
subplot(4,4,9),imshow(f3),title('高亮度');
subplot(4,4,10),imhist(f3,256),title('高亮度直方图');
subplot(4,4,11),imshow(Ieq3),title('均衡化');
subplot(4,4,12),imhist(Ieq3,256),title('均衡化直方图');
subplot(4,4,13),imshow(f4),title('低亮度');
subplot(4,4,14),imhist(f4,256),title('低亮度直方图');
subplot(4,4,15),imshow(Ieq4),title('均衡化');
subplot(4,4,16),imhist(Ieq4,256),title('均衡化直方图');
通过观察四种状态pollen.jpg的均衡前直方图可以得到:高对比的的图像灰度分布较宽(单个灰度级上的像素数更少),因为高对比度就意味着黑的更黑且白的更白,使得灰度等级被加宽;低对比度的图像灰度分布较窄(单个灰度级上的像素数更多),因为低对比度就意味着黑的变白且白的变黑,使得灰度等级被压缩;高亮度的图像每个灰度都变白,低亮度的图像每个灰度等级都变黑,因此在直方图上高亮度与低亮度图像的灰度分布形状相似。文章来源:https://www.toymoban.com/news/detail-713483.html
通过观察四种状态pollen.jpg的均衡后直方图可以得到:对比度高的图作直方图均衡化处理前后得到的图像变化不大,因为均衡化会拉宽像素的灰度分布,而高对比度意味着灰度宽度本就较宽即细节更丰富,因此对高对比度的图像做均衡化处理就不会差生太大的差异。而低对比度、高亮度与低亮度三种图片做均衡化后相对于均衡化前就会产生较大的差异,即均衡化前图片细节不清晰但均衡化后比度更高也就使细节更清晰,亮度分布更均匀。文章来源地址https://www.toymoban.com/news/detail-713483.html
到了这里,关于【MATLAB图像处理】直方图均衡化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!