読み込んだ画像があり、そのピクセル値がマトリックスに格納されています。ヒストグラムをプロットするマトリックスの頻度表を取得しようとしています。行列式のみを使用してこれを実行しようとしています(つまり、for ループ/ imhist 関数はありません)。行列の値をカウントできる histc() という関数を見たのですが、使い方がわかりません。誰かが私を正しい方向に向けることができれば、本当に感謝しています。ありがとう
質問する
2149 次
2 に答える
2
試す:
hist(image(:),min(image(:)):max(image(:)));
これにより、画像が持つ値の範囲全体を含むピクセル値のヒストグラムがプロットされます。
于 2012-11-03T22:00:26.127 に答える
1
これは古い投稿ですが、次のものも使用できますaccumarray
。
h = accumarray(double(im(:))+1, 1, [double(intmax(class(im)))+1 1]);
h
強度レベルごとに検出されたピクセル数のヒストグラム/頻度カウントが含まれます。MATLAB はではなくから始まる配列にインデックスを付けるため、 inim
および offset byのすべての値を取得します。画像の強度は から始まります。また、ヒストグラムのサイズを、このクラスでサポートされている強度に合わせて指定したいと考えています。を実行することで、画像でサポートされている最大強度を知ることができます。そのため、サポートできる可能な強度の総数は です。の 3 番目のパラメーターは、ヒストグラムの出力サイズを指定します。 1
1
0
0
0
intmax(class(im))
intmax(class(im)) + 1
accumarray
返されるのはその型の最大整数であり、その型であるため、intmax
呼び出しと画像im
をキャストする必要があることに注意してください。したがって、1 を追加すると、単に値が飽和し、登録されません。したがって、加算が正しく登録されるようにas をキャストする必要があります。double
double
于 2014-06-26T19:02:05.887 に答える