數字圖像處理——直方圖累計

數字圖像處理——直方圖累計

%函數名稱爲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:256
        for 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:256
        Hist(i,2,k) = Hist(i-1,2,k) + Hist(i,1,k);
    end
end
end
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章