天天看点

直方图均衡matlab

自己复习的时候写了一个对黑白图像进行直方图均衡的函数,帮助加深理解

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
           

继续阅读