%函數名稱爲Image_Hist,輸入參數Image,輸出參數Hist
function [Hist]=Image_Hist(Image)%獲取矩陣的行、列、波段數
[m,n,bands]=size(Image);%將三維矩陣轉換成二維矩陣,方便計算
Image1 =reshape(Image,[m*n,bands]);%初始化三維矩陣,行表示256種灰度,列表示灰度值、個數、累計個數
Hist =zeros(256,2,bands);%求每個波段中每個灰度值的個數
for k =1:bands
for i =1:256for j =1:m*n
if(Image1(j,k)== i-1)Hist(i,1,k)=Hist(i,1,k)+1;
end
end
end
end
%轉換爲頻率直方圖
Hist = Hist./(m*n);%求每個波段每個灰度的累計個數
Hist(1,2,:)=Hist(1,1,:);for k =1:bands
for i =2:256Hist(i,2,k)=Hist(i-1,2,k)+Hist(i,1,k);
end
end
end