こんにちは、@PKです。
最近、組織染色におけるフィラメント状のオブジェクト認識をCellProfilerでどのように解析するかを考えていました。
せっかくなのでサンプル画像を使って実施した検討をまとめておきます。
- サンプル画像について
- 今回の検討の概要
- ColorToGlay
- IdentifyPrimaryObjects(GFAP)
- EnhanceOrSuppressFeatures
- IdentifyPrimaryObjects(Enhance_GFAP)
- OverlayObject
- 終わりに
サンプル画像について
サンプル画像としては、FlickrのNIH Image Galleryで公開されていた以下画像を用いました(ライセンスはPublic domain)。
こちらはDAPI(青)、TDP-43(緑)、GFAP(赤)の蛍光染色を行なったマウスの脊髄の画像データです。
作成したCellProfilerのプロジェクトファイルは以下に保存してあります。
https://github.com/tkahi/220814_CellProfiler
今回の検討の概要
今回はサンプル画像のGFAPオブジェクト認識が目的です。ポイントはGFAP像の加工処理(EnhanceOrSuppressFeatures)でオブジェクト認識がどう変わるかです。
ColorToGlay
解析のために、ColorToGlayモジュールでRBG画像をそれぞれの色ごとに分けます。
IdentifyPrimaryObjects(GFAP)
続いてGFAPの画像処理をせずに一次オブジェクト認識を行います。
パラメーター設定としては、少し閾値設定を甘くし、オブジェクト同士の分離をNeuriteのような枝分かれするオブジェクトに適していると説明されていた「Propagate」を選択しました。
処理結果は以下のようになりました。個人的には思ったより精度良く認識できているように感じました!
細かい比較は最後に行います。
EnhanceOrSuppressFeatures
続いて、オブジェクト認識を向上させる目的でEnhanceOrSupressFeaturesモジュールを試します。
このモジュールによって画像の特徴(顆粒、神経突起)をEnhance/Suppressすることができます。 今回は、Neuriteを選択しました。また、Enhancement MethodとしてLine structureを選択しました。
処理結果を以下に示します。わかりにくいので一部を拡大して表示しています。この処理によって画像のNeurite様の構造体が強調されていることがわかります。
IdentifyPrimaryObjects(Enhance_GFAP)
続いてEnhance処理をしたGFAP画像を用いて一次オブジェクト認識を行います。 先ほどと違うのはinput imageをGFAP→Enhance_GFAPに変更した点です。
処理結果を以下に示します。先ほどのGFAP画像を基にしたしたオブジェクト認識より、全体的に認識できた細胞数が増えている印象があります。次のOverlayObjectモジュールで比較検討をしてみます。
OverlayObject
OverlayObjectモジュールは画像データとオブジェクトを重ね合わせた画像を作成できるモジュールです。普段は解析結果を確認したいときに使うことが多いです。
inputはGFAPの画像を使い、先ほど作成した2つのオブジェクトをそれぞれ重ね合わせてみます(別々のモジュールで実行しています)
以下にOverlayObjectモジュールの実行結果を示します。左側がGFAP画像、右が重ね合わせ画像です。
Enhance _GFAPの方が細胞数が多く認識できていることがわかります。
Enhance_GFAPの良い点としては以下の拡大図でわかるように、少しGFAPシグナルが弱くてもオブジェクトとして認識できていることです。Enhanceモジュールを組み合わせて認識精度が上がった印象です。ただ、他の部分では余計なオブジェクト分割をしてしまっている面もあり、もう少し調整が必要とも感じました。
終わりに
今回はEnhanceOrSuppressFeaturesモジュールを使ったオブジェクト認識について紹介しました。
社内検討の際はノイズが大きいサンプルだったので、このEnhanceOrSupressモジュールでかなりオブジェクト認識が改善しました(その時はEnhancement MethodをTubnessにしました)。
フィラメント状のオブジェクト認識をする場合はこのモジュールを検討したいと思います。
1次オブジェクトで核を認識→2次オブジェクトでGFAP認識も試しましたが組織染色のようないろんな細胞が混ざっている状態ではちょっと使えなかったです(当たり前か)
あと、画像処理をしてしまったら特徴量抽出の時に蛍光強度などに影響しないかと過去に聞かれましたが、MeasureObjectIntensityモジュールは画像データとモジュールを別々に設定できるので、いじっていない元の画像を使えば特に問題ないです。