獲取直方圖Matlab代碼實現 數字圖像處理

灰度級範圍爲[0,L-1]的數字圖像的直方圖是離散函數h(rk) = nk,其中rk是第k級灰度值,nk使圖像中灰度爲rk的像素個數。

在實踐中,經常用乘積MN表示的圖像像素的總數除它的每個分量來歸一化直方圖,M、N分別是圖像行和列的維數。歸一化後的直方圖即爲p(rk) = nk/MN,其中 k = 0,1,... L-1。

可以理解爲p(rk)是灰度級在圖像中出現的概率的一個估計。歸一化後直方圖所有分量的和應該爲1。

可以看到運行結果:

下面給出歸一化直方圖的函數。

% -------------------------------------------------------------------------
% Author:xingdapai
% Time: 2020/03/01
% -------------------------------------------------------------------------
% Get_Histogram:  求直方圖
%                  輸入(圖像矩陣)
%                  返回直方圖數列,值域0-1之間
% -------------------------------------------------------------------------

function outputList = Get_Histogram(inputImg)
inputImg = uint8(inputImg);
outputList = zeros(1, 256);
[imgHeight, imgWidth] = size(inputImg);


for i = 1 : imgHeight
    for j = 1 : imgWidth
        
        grayLvl = inputImg(i, j) + 1;
        outputList(grayLvl) = outputList(grayLvl) + 1;
        
    end %for j
end %for i
outputList = outputList / (imgHeight * imgWidth);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章