这是我写的一个用Matlab实现图象直方图均衡化代码,虽然简单,但我正在编写一种强化细节的自适应直方图均衡法。
I=imread('rice.tif');
[m,n]=size(I);
lus = zeros(1,256);
pas = zeros(1,256);
for i = 1:m
for j = 1:n
lus(I(i,j))=lus(I(i,j))+1; %统计各灰度像素个数
end
end
pas(1)= 0;
for k = 2:256
pf(k) =hf(k)/(m*n); %计算灰度分布概率
pa(k) =pa(k-1)+pf(k); %灰度累计分布概率
endI=imread('rice.tif');
[m,n]=size(I);
lus = zeros(1,256);
pas = zeros(1,256);
for i = 1:m
for j = 1:n
lus(I(i,j))=lus(I(i,j))+1; %统计各灰度像素个数
end
end
%确定映射关系
for k = 2:256
pro(k) =lus(k)/(m*n); %计算灰度分布概率
pas(k) =pas(k-1)+pro(k); %灰度累计分布概率
end
H=zeros(size(I));
for i=1:m
for j=1:n
H(i,j)=255*pas(I(i,j)); %建立新的灰度值数组H(i,j)
end
end
U= uint8(H);
subplot(3,2,1)
imshow(I)
title('原图像')
subplot(3,2,2)
imhist(I)
title('原图像的直方图')
subplot(3,2,3)
imshow(U)
title('经过均衡处理的图像')
subplot(3,2,4)
imhist(U)
title('经过均衡处理后该图像的直方图')
subplot(3,2,5)
imhist(histeq(U))
title('扩展灰度值后的图像的直方图')