2016-10-15 10 views
0

私はこの(反復グローバルしきい値)の方法で、私の 'T' を取得:今すぐMATLAB:しきい値が正規化されるのはなぜですか?

count = 0; 
T = mean2(f); %Average or mean of matrix elements 
done = false; 
while -done 
end 

、私はTを得る:

T = 

    122.7068 

今、私は画像を使用してセグメントを行く:

g = im2bw(f, T/255); 

Tを255で割るnge [0, 1]

Tを正規化する必要があるのはなぜですか?

このご質問は申し訳ありません。

私は(グレーレベル画像の)私のヒストグラムを見ていると私は、このような正規化を必要とする理由

enter image description here

T=122.7068ないですが、すべての必要なのですか?

+0

私が間違っていないのであれば、Matlabの色は0から255ではなく0から1になります。したがって、すべての 'image'関数は0から1までの値を必要とします。 – mpaskov

+0

これは依存します: 'double'入力の場合、値の範囲は0から1までですが、' uint8'(画像)、Matlabの関数には0〜255の範囲が必要です。 – hbaderts

答えて

0

周囲に浮かぶuint16イメージがたくさんあります。だから私は可能なデータ範囲のモードを使用して初めから慎重に閾値にしようとする何らかのアルゴリズムを持っているかもしれないので、uint8で128になります。次に、uint16イメージをプラグインすることができます。このイメージでは、最大値は65535で、アルゴリズムは最初の推定値としてフォアグラウンドとしてすべてしきい値を設定します。愚かな例ですが、その点は同じです。正規化はしばしば良い考えです。

また、歴史的な理由もあります。スティーブEddinsが彼のMathworks社のブログでしきい値を語る:

http://blogs.mathworks.com/steve/2016/05/09/image-binarization-im2bw-and-graythresh/

「この時点で、MATLABの初期の歴史の中で、言語は本当に一種類のみを持っていたMATLABですべてがこれに影響は倍精度行列でした。まず最初に、ツールボックスは、グレイスケール画像の従来のダイナミックレンジとして[0,1]を確立しました。この選択は、MATLABの数学的方向性と、要素ごとのバイトデータ型」を参照してください。

おもしろい:

"経験豊富なソフトウェア開発者は、上記のコードコメント"今のところデフォルトを使用する "で楽しいです。これは、開発者が出荷前に戻って何か他のことを行うことを意図していたが、決してそれをしなかったことを示している。とにかく、自分で指定しないと、0.5のレベルが使用されていることがわかります。

関連する問題