1. 程式人生 > >matlab 繪製直方圖的函式實現

matlab 繪製直方圖的函式實現

x=rgb2gray(imread('p1.jpg'));  
[m,n]=size(x);  
p=zeros(1,256);  
for i=0:255  
   p(i+1)=length(find(x==i))/(m*n);  
end  
subplot(2,2,1);  
bar(0:255,p,'b');  
title('原圖直方圖');  
s=zeros(1,256);  
for i=1:256  
     for j=1:i  
         s(i)=p(j)+s(i);                  
     end  
end  
   
a=round(s*255);  %四捨五入函式進行畫素點的取整
for i=0:255  
    GPeq(i+1)=sum(p(find(a==i))); %利用求和函式對直方圖縱軸座標賦值           
end  
subplot(2,2,3);  
bar(0:255,GPeq,'b')                   
title('均衡化後的直方圖');  
系統均衡化的函式:
g=histeq(f,nlev);%f為輸入影象,nlev為輸出影象指定的灰度級,一般預設為64
EXAPLE:
f=imread('1.jpg');
g=rgb2gray(f);
figure,imhist(g);
ylim('auto')
g1=histeq(f,256);
figure,imshow(g1);
figure,imhist(g1);
ylim('auto')