自己复习的时候写了一个对黑白图像进行直方图均衡的函数,帮助加深理解
function [image_histogram,out_image]=histogram_processing(image)
%code by Xiuwen Wu ahu 2019/5/30
image_size=size(image);
%判断输入是否是灰度图片
if(length(image_size)==3)
image=rgb2gray(image);
end
figure;
imshow(image);title('Image');
image=double(image);
image_size=size(image);
container=zeros(256,1);
image_histogram=zeros(256,1);
out_image=zeros(image_size);
%统计每个灰度的频率(输出为PDF) PDF 概率密度函数
for i=0:255;
container(i+1)=length(find(image==i))/(image_size(1)*image_size(2));
end
%计算直方图
% for i=0:255;
% for j=0:i;
% image_histogram(i+1)=image_histogram(i+1)+container(j+1);
% end
% end
for i=0:255;
image_histogram(i+1)=sum(container([1:i+1]));
end
image_histogram=round(image_histogram*255);%注意四舍五入
%依据直方图对原图片进行映射
for i=0:255;
out_image(find(image==i))=image_histogram(i+1);
end
figure;
bar(0:255,image_histogram);title('The Histogram Of Image');
figure;
imshow(uint8(out_image));title('The Image After Histogram Processing');
end