入力: [0..255] のグレースケール img
出力: 正規化された img ヒストグラム - 配列 1X256 をピクセルの総数で割った値
これが私の解決策です:
function [h] = histImage(img)
h=zeros(1,256)
for i=1:size(h,2)
h(i) = length(find(img==i));
end
h = h./sum(h);
それを行うより良い方法はありますか?
入力: [0..255] のグレースケール img
出力: 正規化された img ヒストグラム - 配列 1X256 をピクセルの総数で割った値
これが私の解決策です:
function [h] = histImage(img)
h=zeros(1,256)
for i=1:size(h,2)
h(i) = length(find(img==i));
end
h = h./sum(h);
それを行うより良い方法はありますか?
「より良い」は常に見る人の目にあります。とにかく、これを使用して上記を行う方法は次のとおりaccumarray
です。
%# each pixel contributes 1/nPixels to the counts of the histogram
%# to use graylevels as indices, we have to add 1 to make it 1...256
nPix = numel(img);
h = accumarray(img(:)+1,ones(nPix,1)/nPix,[256 1],@sum,0);