![見出し画像](https://assets.st-note.com/production/uploads/images/41030998/rectangle_large_type_2_e6aa1ef01a06c6b84ef9bea90cee0de7.png?width=1200)
【ImageJ】16bitの画像を8bitに変換する時に気をつけるべきこと
生命科学系研究者のえいこです。先週からImageJで勉強したことをチョコチョコまとめていくことを始めました。並行して統計検定の勉強もしているのですが、統計検定を受けるのはまだまだ先なので、すぐに知識が仕事に応用できるImageJの勉強を優先しています。
前回の記事では、「画像データ=数値データ」であることを勉強しました。画像の各ピクセルに数値が割り当てられていて、その数値はビット深度に依存する、ビット深度には8 bitや16 bitなどの種類があるんでした。ビット深度が大きいほど、(グレースケールの場合)白と黒の間が細かくなり、量子誤差が小さくなりますが、メモリ量が2倍になりファイルサイズが大きくなります。しかし、人間の色彩識別のうは8 bitよりも小さいため、16 bitと8 bitで見た目の画像はあまり変わりません。
最近、画像を撮影する場合16 bitの画像で出力される機器が多くなってきました。しかしながら、データ容量が大きいこと、16 bit画像では解析できないプラグインがImageJにはまだ存在するため、16 bitなどの高解像度の画像を8 bitに変換して解析することが多いのでは無いかと思います。
今回は、16 bitの画像から8 bitの画像に変換する時に気をつけるべきことをまとめておきたいと思います。この記事は『ImageJではじめる画像解析』を参考に作成しています。
輝度プロファイルでビット深度の違いをみてみる
ImageJでは輝度プロファイルを取得できる機能があります。輝度プロファイルとはある選択した線に沿ったピクセル値をプロットした曲線です。では、具体的に輝度プロファイルを取得してみましょう。
今回はサンプル画像として"M51 GALAXY (16bits)"を使いました。この画像を使う際はインターネット接続が必要なので注意が必要です。ピークが一つだけなのでわかりやすいのでは無いかと思います。
輝度プロットを取得すると、横軸がDistance(距離)縦軸がGray Value(輝度)のプロットが表示されます(このプロット自体も保存可能です)。このプロットのピークを見てみると最大値が7,000ほどであることがわかります。
8 bit画像に変換する
次に、同じ画像を8 bitの画像に変換んしてから、上と同様に輝度プロットを取得してみましょう。
ポイントは"Scale when converting"にチェックを入れること。この時の"Scale"の意味は「(ある一定の基準に従って)増やす・減らす」。つまり、16 bitから8 bitに変換する際に輝度の最大値を65,336諧調から255諧調に一定の規則に従って変換する(正規化)という意味です。(※ピンとこない人は次の「正規化しない」で変換する方法と比較してみてください)
「正規化する」状態で変換して、輝度プロットを取得すると、4で得られた輝度プロットと同じ形のプロットが取得できました。しかし、縦軸に注目してもらうと、最大値が180程度と小さくなっていることがわかります。
では、画像を「正規化しない」で16 bitから8 bitに変換するとどうなるのでしょう?
「正規化しない」で16 bitから8 bitに画像を変換する
「正規化しない」ということは、"Scale when converting"のチェックを外せば良いのです。では、やってみましょう。
13で変換すると、全体が白くサチュレーションしている画像になってしまっています。見た目から明らかに違うのですが、輝度プロットを取得してみるとやはり4や9で得られたプロットの形とは異なるものが得られました。
これが、「正規化しない」という意味なのですが...「正規化しない」とただ単純に16 bit画像で256以上だった値は全て255に変換されます。つまり輝度の数値は変化せず、最大値が255になったということ。これだと何をみているのかさっぱり分からなくなってしまいますよね。
なので、ImageJではデフォルトで「正規化」するになっているはずです。もし"Scale when converting"のチェックが外れている場合は、チェックを必ず入れるようにしましょう。これをしておけば、[Image -> Type -> 8-bit]で変換することが可能です。
ということで、16 bit画像から8 bit画像に変換する時には「正規化」が重要であることを学びました。次回は、簡単なImageJマクロに触れてみたいと思います。
それでは、また!
参考にしている教科書はこちら
最近、こんなのも書いました
最後までお読みいただきありがとうございます。よろしければ「スキ」していただけると嬉しいです。 いただいたサポートはNGS解析をするための個人用Macを買うのに使いたいと思います。これからもRの勉強過程やワーママ研究者目線のリアルな現実を発信していきます。