matlab实现灰度直方图均匀化

来源:互联网 发布:unity3d汉化补丁 编辑:程序博客网 时间:2024/05/21 11:00
p=imread('test.jpg');
figure(1);
imshow(p);
p=rgb2gray(p); %转换为灰度图像
figure(11);
imshow(p);
figure(2);
imhist(p);  %显示灰度分布图
figure(1234);
histgram=zeros(1,256); %灰度统计数组
[m,n]=size(p);
for i=1:m
    for j=1:n
        k=p(i,j);
        histgram(k+1)=histgram(k+1)+1;
    end
end
x=1:255;
plot(x,histgram(x));
%以上为灰度的分布情况


%计算每一个点的概率值
all=m*n;
histgram(1)=histgram(1)/all;
for i=2:255
    histgram(i)=histgram(i)/all;
    histgram(i)=histgram(i-1)+histgram(i);
end
figure(3);
x=1:255;
plot(x,histgram(x));
%开始计算新的灰度值
for i=1:m
    for j=1:n
        k=p(i,j);
        p(i,j)=histgram(k+1)*256;
    end
end
%显示直方均匀化后的图像
figure(4);
imshow(p);

imhist(p);


0 0
原创粉丝点击