[Groovy][QuPath] 章3 QuPath入門2 ~ピクセル分類~
※ 画像解析ソフトQuPathに関する本を執筆中。完成した章から公開していく。
QuPathソフトウェアの中でマウス操作で行える解析を紹介する。
ピクセル分類
特定の色の輝度値などを指標にして各pixelを2値分類する。
背景と組織を分けたり、DABの陽性面積を出すのに有用である。
Classify
> Pixel classification
のうち、Create threshold
を選択する。
なお、Train pixel classification
では機械学習により複数種類のclassに分類できるが、本書では扱わない。十分な精度を出すにはコツが要るのと、処理が重たい。機械学習といってもdeep neural networkのものにはとても及ばない精度。
背景と組織を分ける。
slide scaner dataを使うとスライド全体を解析できるが、勿論データサイズは大きく解析は重たい。
せめて組織領域だけに解析を限定したいので、まずは組織検出を行う。
使用データ) OpenSlide Test data/Aperio/CMU-1
今回の例を順を追って説明する。
1. 閾値設定
組織が無いガラスの領域は組織の領域より明るい輝度を持つので、Threshold
以下をRegion*
のAnnotation、Threshold
以上をUnclassified
に指定する。
Channel
はRGBの平均を指定した。
(どのchannelで閾値を設定するか、Annotationのclassはどれを使うかは必要に応じて変更してほしい。)
Create threshold設定画面 | 2値化結果はリアルタイムで反映される |
---|---|
![]() |
![]() |
2. 平滑化処理
十分に組織検出できているが、スライド上の細かいゴミも解析エリアになっている。
この次のstepでサイズ閾値を作ることができるので、この段階では拘らなくても良いが、改善したい場合はSmoothing sigma
の値を上げて、平滑化する。
Smoothing sigmaを1に | |
---|---|
![]() |
![]() |
小さいゴミや組織内の穴も埋まっている。
3. 条件保存
良い条件が見つかれば、Classifier name
の欄に適当な名前を入れてSave
しておく。
保存した条件は次回以降、Load pixel classifier
で呼び出せる。
Create thresholderウィンドウ右下の:マークからEnable buttons for unsaved classifiers
を選択すると、保存せずに次のステップに進むこともできる。
4. Annotation作成
次に、Create objects
を選択すると、ピクセル分類を実行する対象が聞かれるので、今回は画像全体のFull image
でOKを押す。
次のCreate objects
ウィンドウで、最小のobject sizeや最小のhole sizeの閾値を設定できる。
その他、メニューは以下に示す。
- Split objects: 繋がっていない組織を個別のAnnotationとするかどうか。
- Delete existing objects: 既に存在するAnnotationを削除するかどうか。
- Create objects for ignored classes: RegionやIgnoreのようにclass名の最後に*が付いているものはignored classとしてのパラメーターを持つ。これらclassに対してAnnotationを作成するかどうか。
- Set new objects to selected: 作成したAnnotationを選択状態にするかどうか。
今回は以下のようなsize閾値でAnnotationを作成した。
![]() |
![]() |
5. Annotationの追加フィルタリング
size閾値は実際にAnnotationを作ってみないと結果が分からない。上記の例でもまだ小さいゴミや影にAnnotationが作られている。
追加でsize filteringを行うには、上部メニューからObjects
> Annotations
> Remove fragments & holes
を実行する。
閾値の設定 | 適応対象の選択 |
---|---|
![]() |
![]() |
これで大きな組織のみにRegion* Annotationを作成することができる。
薄い組織の検出例
使用データ) OpenSlide Test data/Aperio/CMU-2
組織中に脂肪組織が含まれている例である。
上記で作成した組織検出条件をClassify
> Pixel classification
> Load pixel classifier
から呼び出してみる。
![]() |
![]() |
色が濃い領域は認識しているが脂肪組織は検出できていない。
ここでは、脂肪組織を含めてAnnotationを作成することを目標に進める。
Resolution
解像度を上げる。
1. 画像の輝度を計算する際、最も解像度を上げれば1ピクセルレベルで2値化することができるが、解像度を下げることによって複数ピクセルの平均値の輝度値を使用している。
脂肪組織のように細い基質と背景で構成されている領域は低解像度だと、近傍背景の輝度値に引っ張られてしまう。
薄いor細いような組織の場合は、解像度を上げることで組織認識精度は向上する。
Resolution : Moderate |
|
---|---|
![]() |
![]() |
解像度を上げることで脂肪組織の細い繊維まで認識されている。
ただし、巨大なslide scanner dataの場合は、元の解像度 (40倍対物レンズで0.2 µm/px程度)を指定するのは避けた方が良い。処理が重すぎてフリーズする。
Gaussian
のSmoothing sigma
を上げると、隣り合うピクセルの輝度値の変化を滑らかにするので、低解像度処理と類似した結果になる。
Prefilter
フィルター処理
2. 少々のholeであればfill hole機能により穴埋めすることができるが、holeとして認識させるためには組織が閉じていないといけない。
例えば以下のような箇所は穴埋めができない。
QuPathでは複数のPrefilter
が用意されている。
自身のデータにどれが合うか試してみると良いだろう。
今回の例ではMorphological opening
の値を上げることが最適であると判断した。
![]() |
![]() |
H-DABの画像もDAB陰性のエリアは薄い輝度なので同様のアプローチが有効である。
なお画像のerode, dilate, close, open処理の一般論については他で十分に解説されているのでここでは省略する。
陽性エリア解析
免疫染色等で細胞外領域の抗原を染色した場合にも、その陽性面積や陽性面積比率を解析にQuPathは有用である。
使用データ) OpenSlide Test data/Hamamatsu/OS-3 | 拡大図 |
---|---|
![]() |
![]() |
解析対象用Annotationの作成
陽性エリアを検出する場合、スライド全体ではなく対象領域に対して実施することになるだろう。
高解像度での判別といった重たい動作を行うためにも解析エリアは限定した方がよい。
この例ではスライド上の組織全体を解析対象にする。
以下の条件でRegion*クラスのAnnotationを作成した。
閾値設定 | Annotation作成条件 |
---|---|
![]() |
![]() |
DAB陽性ピクセルの検出
特定の色の検出でもClassify
> Pixel classification
> Create threshold
から行う。
この例では以下の流れでパラメーターを決定した。
-
Channel
の箇所からDAB
を選択する。 -
Above threshold
をPositive,Below threshold
をNegativeに設定。
(クラスの決め方は任意である。閾値以下をUnclassifiedにしてもよい。) -
Threshold
の調整。数値を変えるたびにリアルタイムに結果が反映されるので見た目で決める。
DABの輝度値は、RGB値の範囲 (0-255)とはスケール感が異なる。わからない場合は、View
>Brightness & contrast
から特定の色にチェックを入れて値の範囲を見てみるとよいだろう。 -
Resolution
を上げる。
最高解像度で判別したいところだが、妥協できる程度まで解像度は低く保つ方が現実的である。 -
Gaussian
フィルターのSmoothing sigma
を上げてノイズを抑える。
閾値設定 | パラメーター調整中の画面 |
---|---|
![]() |
![]() |
ちなみに上部のスライドバーで塗りつぶしの透過度が調整できる。
Measure
を押すと、Annotationを作る対象が選べるので、All annotations
もしくは選択中のAnnotationにのみ行うならCurrent selection
を選択する。
Measurement name
は任意に変更してよい。
計測終了後、解析対象のAnnotationを選択すると左下のMeasurements
タブからピクセル分類結果が確認できる。実寸のμm^2や解析対象Annotation中の陽性割合が保存されている。
解析終了後 | 計測結果 |
---|---|
![]() |
![]() |
結果の書き出し
Annotationの計測結果を書き出すには、Measure
> Show annotation measurements
を押す。
1つの画像データ内にある全Annotationの計測結果が集計される。
Copy to clipboard
かSave
で数値データをテキスト形式で保存できる。
Discussion