🔬

ImageJの閾値設定・決め方|うまくいかない理由【蛍光画像解析】

に公開

はじめに

ImageJで蛍光画像解析をする中で一番大事なのは閾値設定。これで関心領域の抽出がほぼ決まるといっても過言ではありません。

大事だからこそ、難しい。

Auto Thresholdだとうまくいかなかったり、写真ごとに適切な閾値が違ったり、同じ画像でも場所によって過剰抽出が起こったりします。

今回は、ImageJの閾値設定がなぜ難しいのか、実際の画像を使いながら紹介していきます。


画像解析の原則

閾値を決める前に、とにかく画像解析の原則を押さえておくことが大事です。

明確な正解やルールがあるわけではありませんが、私が大切にしていた原則は2つです。

  1. 肉眼で見える内容と大きく異なった抽出をしないこと
  2. すべての画像に同じ条件を適用すること

特に2番目は重要です。

1枚ごとに閾値を調整すると、一見きれいに抽出できているように見えても、画像間比較としては不適切になることがあります。

まずはこの原則を基本に考えてみてください。


とりあえずAuto Threshold

「閾値をどう決めたらいいかわからない」という人は、とりあえずAuto Thresholdを使ってみましょう。

複数画像を解析する場合、微妙に背景輝度や染色条件が異なることがよくあります。

そのため、1枚ごとにベストな閾値は異なります。

しかし、画像ごとに個別の閾値を設定すると、画像解析の原則である「すべての画像に同じ条件を適用すること」が崩れてしまいます。

そんな時に便利なのがAuto Thresholdです。

Auto Thresholdは、一定のアルゴリズムに基づいて自動的に閾値を計算してくれます。

例えば、

「すべての画像でTriangle法を使用した」

のように、同じアルゴリズムを使っていれば、画像ごとに閾値が違っていても一定の一貫性を保つことができます。

使い方は簡単。

閾値設定画面の赤丸部分から好きなモードを選ぶだけです。

どのモードが良いかわからない場合は、

Image → Adjust → Auto Threshold

から「Try All」を実行しましょう。

すべてのAuto Threshold結果が一覧表示されるため、自分の画像に合うモードを比較できます。

図の部分を最大拡大すると(非常に小さく、存在を疑いたくなりますが実在します)、どのモードかわかります。


Auto Thresholdの欠点

Auto Thresholdの欠点は、陰性画像に弱いことです。

まず、陽性細胞が存在する画像にAuto Thresholdの「Yen」を実行しました。

おおむね陽性エリアが抽出できています。



次に、陽性細胞が存在しない画像に同じようにAuto Thresholdの「Yen」を実行します。

すると、自家蛍光の背景部分まで抽出されてしまいました。

Auto Thresholdは、可能な限り陽性エリアを抽出しようとする性質があります。

そのため、陽性細胞がほとんど存在しない画像では、背景やノイズまで抽出されることがあります。


手動で閾値を決める

陽性エリアが存在しない画像がある場合は、手動で閾値を決めた方がうまくいくことがあります。

ただし、手動閾値は複数画像を比較する時に工夫が必要です。

こちらの画像では、下限70くらいが適切でした。




しかし、同じ系列の別画像では、70だと過剰検出になってしまいます。

こちらは95くらいの方が適切です。

このように、同じ実験条件でも画像ごとに適切な閾値が変わることがあります。

だからといって、毎回好きなように閾値を変えてしまうと、画像間比較として不安定になります。

こういう時は、

Process → Math

などを利用して、それぞれの画像の「安全閾値」を広げる工夫が重要になります。


写真の中で輝度が違うとき

辺縁に近い部位の撮影などでは、1枚の画像の中でも輝度が異なることがあります。

下の画像では、左側が暗く、右側が明るくなっています。

この状態で左側の陽性エリアに合わせて閾値を設定すると、右側では過剰検出になってしまい、核同士がくっついてしまいます。

このように、1枚の画像内で背景輝度が異なると、単純な閾値設定だけではうまくいかないことがあります。

そういう時は、

Process → Subtract Background

を使って背景輝度を補正する工程がおすすめです。


最後に

今回は、ImageJの閾値設定が難しい理由について紹介しました。

実際の蛍光画像解析では、閾値をどんなにうまく設定しても、それだけではうまくいかないことが多いです。

その時は、

  • Filter
  • Math
  • Subtract Background

など、いろいろな機能を組み合わせてマスクを調整する必要があります。

ImageJは「閾値を決める」というより、「どうマスクを設計するか」を考えるソフトだと思っています。

詳しい内容は、Zennで公開している
実践ImageJ ~とりあえず定量できる~
にまとめています。興味があればぜひ見てみてください。

また、ImageJのコード作成や画像解析相談も
のんたまの研究解析サポート
で受け付けています!

Discussion