MATLAB数字图像处理(一)直方图均衡化

来源:互联网 发布:docker 阿里云 编辑:程序博客网 时间:2024/06/05 17:13

直方图均衡化的基本原理是根据原始图像某个像素点出现的概率对应着累积分布函数的值决定的,假设原始图像为


该图像的概率密度函数(直方图)为:

累积分布函数为:

像素为3的值,在CDF(3)=0.556,均衡化后的值为0.5556*(灰度级,这里是9)-1=4.004,取整后变为4。

像素为5的值,在CDF(5)=0.556,均衡化后的值为0.8889*(灰度级,这里是9)-1=7.0001,取整后变为7。

因此,均衡化后图像变为:

MATLAB直方图均衡化代码实现:

clc
clear
m=[3,5,3;8,2,6;2,1,5];
S=9;
number=zeros(1,S);
[M,N]=size(m);
   for i=1:M
       for j=1:N
           for index=1:S
               if m(i,j)==index
               number(1,index)=number(1,index)+1;
               end
           end
       end
    end
figure(1)
stem(number)
%直方图均衡化
for i=1:S
    data=number(1,1:i);
    cdf_image(1,i)=1/(M*N)*sum(data);
end
figure(2)
plot(cdf_image)
n=m;
for i=1:S
    index=find(n==i);
    L=length(index);
     for j=1:L
        n(index(j))=round(cdf_image(i)*9-1)
     end
end
bbb=zeros(1,S);
[M,N]=size(n);
   for i=1:M
       for j=1:N
           for index=1:S
               if n(i,j)==index
               bbb(1,index)=bbb(1,index)+1;
               end
           end
       end
    end
figure(3)
stem(bbb)



阅读全文
2 0
原创粉丝点击