www.gusucode.com > matlab像素级图像处理显示处理结果 > code11/code/Histogram.m
%直方图均衡化 clear; H=imread('002.jpg'); r=H(:,:,1); g=H(:,:,2); b=H(:,:,3); [M,N]=size(r) for o=1:M; for p=1:N; J(o,p)=0.2989*r(o,p)+0.5870*g(o,p)+0.1140*b(o,p); end end c=isgray(J) s=double(J); sum=M*N; k=zeros(1,256); e=zeros(1,256); t=zeros(size(s)); for i=1:M for j=1:N k(s(i,j)+1)=k(s(i,j)+1)+1; %原图像概率密度 end end k=k./sum; for i=1:256 for j=1:i e(i)=e(i)+k(j); %累积分布 end end for i=1:256 e(i)=floor(e(i)*255+0.5); %映射关系 end for i=1:M for j=1:N t(i,j)=e(s(i,j)+1); end end s=uint8(s); t=uint8(t); subplot(2,2,1); imshow(s); title('原图') subplot(2,2,2); imhist(s); title('原图直方图') subplot(2,2,3); imshow(t); title('直方图均衡化后的图像') subplot(2,2,4); imhist(t); title('直方图均衡化后图像的直方图')