j=imread('d:\图片\cat1.jpg');
I=rgb2gray(j);
[m,n] = size(I);
hf = zeros(1,256);
pa = zeros(1,256);
for i = 1:m
for j = 1:n
hf(I(i,j)+1)=hf(I(i,j)+1)+1;%统计各灰度像素个数
end
end
pa(1)= 0;
for k = 2:256
pf=hf(k)/(m*n);%算灰度分布概率
pa(k)=pa(k-1)+pf;%灰度累计分布概率
end
G = zeros(size(I));
for i = 1:m
for j = 1:n
G(i,j)=255*pa(I(i,j)+1)+0.5; %将原来f的灰度值映射到新的灰度值g(i,j) = 255*pa(I(i,j))
end
end
K = uint8(G);
subplot(2,4,1);imshow(I); title('原图');
subplot(2,4,5);imhist(I);title('原直方图');
subplot(2,4,2);imshow(K);title('均衡化后的图');
subplot(2,4,6);imhist(K);title('均衡化后直方图');
subplot(2,4,3);imshow(histeq(I));title('matlab均衡化');
subplot(2,4,7);imhist(histeq(I));title('matlab均衡化后直方图');
subplot(2,4,8);
x=1:1:256; %绘制均衡化函数
y=pa(x);
plot(x,y);
title('均衡化函数');