1. 程式人生 > >MATLAB數字影象處理(一)直方圖均衡化

MATLAB數字影象處理(一)直方圖均衡化

直方圖均衡化的基本原理是根據原始影象某個畫素點出現的概率對應著累積分佈函式的值決定的,假設原始影象為

該影象的概率密度函式(直方圖)為:

累積分佈函式為:

畫素為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)