なぜ、entropy 関数で画像のエントロピーが正しく計算できないのでしょうか?
13 ビュー (過去 30 日間)
古いコメントを表示
MathWorks Support Team
2017 年 1 月 27 日
回答済み: MathWorks Support Team
2017 年 1 月 27 日
なぜ、entropy 関数で画像のエントロピーが正しく計算できないのでしょうか?
int16 型で定義される画像 (例えば、DICOM画像)のエントロピーを計算しようとしています。
entropy 関数は int16 型の入力をサポートしていないようですので、
>> entropy(double(int16))
と double 型にキャストして計算したところ、画像の複雑さから考えて極端に小さな値が算出されます。
採用された回答
MathWorks Support Team
2017 年 1 月 27 日
entropy 関数はサポートされるデータタイプがlogical, uint8, uint16, double 型であり int16 型はサポートしていません。
entropy 関数を実行しますと、内部で im2uint8 と呼ばれる関数で、入力データはまず uint8型へ
キャストされ、 その後 256 階調でヒストグラムが求められ各階調のデータ数を元にエントロピーが計算されます。
ここで、im2uint8 の仕様として、入力引数が
uint16型の場合、0 - 65535 までの値を 0 - 255 に量子化します。
double型の場合は、0 - 1 までの実数値を 0 - 255 までの値へ量子化されることになります。
今回エントロピーを計算されようとされている画像は double 型にキャストされておりますが、
1 以上の数値はすべて1として解釈されてしまい、結果エントロピーが小さく算出されたものと考えられます。
画像の最大値と最小値を確認して、値が収まるようにサポートしているデータ型に写像
(例えば、double型であれば最小値、最大値がそれぞれ 0、1 となるように正規化)した後に entropy 関数を実行してください。
上記目的の画像正規化には、 Image Processing Toolbox で提供される mat2gray 関数が利用できます。
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で テクスチャ解析 についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!