時系列変化画像のバイナリ化 (MATLAB)
研究で画像データを扱っていると、非ゼロのピクセルを1に置き換えてバイナリデータとして扱いたい時がある。
”matlab 画像 バイナリ化”とかでググるとim2bwの解説にたどり着くことが多いが、閾値どうこうではなくて一括で変換したい(ピクセルの値が0か非ゼロかが重要)。
A(A>0) = 1;
のような感じで論理式を用いても値の変換もできるが、この方法では型がlogicalに変換されないし、時系列データのような3次元のデータではタイムポイントでfor loopをかけなければいけないし、めんどくさい。
こんなときに便利なのがlogicalという関数。
A = logical(A):
と書くだけで非ゼロを一括で1に変換してくれる。多次元の配列にも対応してくれるので非常に便利だった。
関数名を見ればbinaryというよりもbooleanという感じなので、バイナリ化というキーワードで引っかからなかったのもしっくりきた。ここらへんの厳密な使い分けがちゃんと出来るようになりたい。