生物と計算機のあいだ

個人的にうまくいったかなとおもったことを書いています。うまくいかなかったらごめんなさい。

時系列変化画像のバイナリ化 (MATLAB)

研究で画像データを扱っていると、非ゼロのピクセルを1に置き換えてバイナリデータとして扱いたい時がある。

matlab 画像 バイナリ化”とかでググるとim2bwの解説にたどり着くことが多いが、閾値どうこうではなくて一括で変換したい(ピクセルの値が0か非ゼロかが重要)。

A(A>0) = 1;

のような感じで論理式を用いても値の変換もできるが、この方法では型がlogicalに変換されないし、時系列データのような3次元のデータではタイムポイントでfor loopをかけなければいけないし、めんどくさい。

こんなときに便利なのがlogicalという関数。

A = logical(A):

と書くだけで非ゼロを一括で1に変換してくれる。多次元の配列にも対応してくれるので非常に便利だった。

関数名を見ればbinaryというよりもbooleanという感じなので、バイナリ化というキーワードで引っかからなかったのもしっくりきた。ここらへんの厳密な使い分けがちゃんと出来るようになりたい。