グレースケール画像から強度値のヒストグラムを手動で作成するのに問題があります。以下は、作成したいプロットのビンを作成するために使用しているコードです。コードは、最後の2つを除くすべてのビンで正常に機能します。何らかの理由で、強度が254または255の場合、両方の値が254ビンに入れられ、255ビンに値が累積されません。
bins= zeros(1,256);
[x,y]=size(grayImg);
for i = 1:x
for j = 1:y
current = grayImg(i,j);
bins(current+1) = bins(current+1) + 1;
end
end
plot(bins);
この動作が発生している理由がわかりません。254の強度と255の強度のカウントを印刷しましたが、どちらも正しいです。ただし、上記のコードを使用して強度値を累積すると、正しく機能しません。
編集:私が使用している画像、間違ったグラフ(上記のコードで取得したもの)、および正しいグラフを追加しました
A.コードの最初の問題は、の初期定義ですbins
。あなたはCかそのようなものから来ているようですが、定義は次のようになります-bins=zeros(1,256);
B. 2番目のポイントは、ネストされたループは必要ないということです。特にそのためのmatlab関数があります。
bins=hist(grayImg(:),1:256); % now, you don't need the pre-definition for 'bins'.
plot(bins);
C.bar
またはimhist
またはのような関数を使用してみてください。hist(grayImg(:))
これをすべて節約でき、素晴らしいプロットが得られる可能性があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加