本文内容来自博客专栏《DIP数字图像处理》
1
前言
直方图均衡(Histogram equalization)是利用直方图分布,计算累加函数,按照累加函数做映射,能够提升图像对比度。
本文我会从每一个小的步骤编写,说明,并给出每一阶段的结果,让你完全搞懂其原理。
直方图均衡示例:
2
代码
2.1 自己写一个
还是那句话, 【要想搞明白真正原理,尤其你是做图像算法的,还是得自己动手写】代码如下:
%直方图均衡Histogram equalization 源代码
Iin = imread('tire.tif');
[numRows,numCols]=size(Iin);
numBins=2^8;
%直方图统计,概率分布函数pdf(Probability distribution function)
pdf=zeros(1,numBins);
for ii=1:numRows
for jj=1:numCols
pdf(Iin(ii,jj)+1)=pdf(Iin(ii,jj)+1)+1;
end
end
figure()
plot(pdf,'.-');
grid on;
title('直方图统计');
%累加直方图得到,累加函数cdf(Cumulative distribution function)
cdf=cumsum(pdf);
cdf=cdf./cdf(end); %归一化处理
figure()
plot(cdf,'.-');
grid on;
title('直方图累加函数计算');
% 根据累加函数映射
Iout=zeros(numRows,numCols);
for ii=1:numRows
for jj=1:numCols
Iout(ii,jj)=255*cdf(Iin(ii,jj)+1);
end
end
figure()
imshow([Iin,Iout]);
title('左:原图 右:处理图')
2.2 使用Matlab 自带函数histeq
%直方图均衡 Histogram equalization
Iin = imread('tire.tif');
Iout=histeq(Iin);
imshow([Iin,Iout]);
title('左:原图 右:处理图')
3
总结
直方图均衡方法是一种很好的图像对比度提升方法,但是并不适应所有场景,所以需要在其基础上做改进,历来学者做了不少创新。
不过,这种处理思想以及上述代码,是经典,先搞懂经典,再去优化。
【END】
本文内容来自博客专栏《DIP数字图像处理》
![5f9a62a338e92876c129d71ed792bcc7.png](https://i-blog.csdnimg.cn/blog_migrate/a912aa1d1fe4a6a246f7554a335e1fd2.jpeg)