直方图是多种空间域处理技术的基础。直方图操作能有效地用于图像增强。下面给出两张处理前和处理后的效果图,让其理解什么叫直方图均衡化。
图1 直方图均衡化之前的处理
图2 直方图均衡化后的效果图
明显地图2比图1更加亮了,说明直方图均衡化具有图像增强的作用。下面我先介绍直方图均衡化的数学原理,再给出程序,这样便于理解。
对于一张灰度图像,假设其每个灰度级的概率在这张灰度图像中出现的概率为
Pr(w),r为归一化后的灰度级,一般灰度值除以最大灰度级,如下式表示为:
r=r
i
/255,其中1≤i≤255
那么表示其累计概率分布。概率密度函数(PDF)和累计概率分布函数(CDF)分别如图3和图4所示。
图3 一张灰度图像的PDF
图4 一张图像的CDF
对于均衡化后的灰度图像的CDF如图5所示
图5 均衡化后
的CDF
程序中给出了均衡后的直方图。
I=imread('office_2.jpg');
f = rgb2gray(I);
figure
subplot(221);
imshow(f);
L=256;
M=zeros(256,1);
p=zeros(256,1);
c=zeros(256,1);
[m n]=size(f);
for i=1:m
for j=1:n
M(f(i,j)+1)=M(f(i,j)+1)+1;
end
end
for i=1:256;
p(i)=M(i)/(m*n);
end
subplot(222);
bar(p);
for i=1:256
for j=1:i
c(i)=c(i)+p(j);
end
end
max=0;
min=0;
for i=1:m
for j=1:n
if(max<f(i,j))
max=f(i,j);
else if(min>f(i,j))
min=f(i,j);
end
end
end
end
for i=1:m
for j=1:n
K(i,j)=c(f(i,j)+1)*(max-min)+min;
end
end
subplot(223);
imshow(K);
for i=1:m
for j=1:n
M(f(i,j)+1)=M(f(i,j)+1)+1;
end
end
for i=1:256;
p(i)=M(i)/(m*n);
end
subplot(224);
bar(p);