こんばんは,@PKです.
今日はCellProfilerの「MeasureTexture」というモジュールについて紹介したいと思います.
はじめに
これまで画像から特徴量を抽出する際は,「MeasureObjectIntensity」や「MeasureObjectSizeShape」のような,オブジェクトのシグナル強度に関する情報や,形状や大きさなどの情報を抽出するモジュールを紹介してきました.
【CellProfiler】MeasureObjectSizeShapeで取得できる特徴量について - t_kahi’s blog
【CellProfiler】MeasureObjectIntensityで取得できる特徴量について - t_kahi’s blog
例えば,以下の上2つの核染色の蛍光量や形(丸さ,大きさ)の違いを説明する特徴量を感覚的にイメージすることは比較的簡単かなと思います.
しかし,オレンジ矢印で比較されている2つの核染色(イメージ)の違いは,なんとなく質感が異なることはわかりますが,特徴量として抽出するのは難しいです.
今回お話する「MeasureTexture」モジュールは,質感のようなわかりにくいパラメーターを得ることができます.
ちなみに,テクスチャという意味を調べると,以下のような説明がでてきます.
テクスチャ (texture) は、物の表面の質感・手触りなどを指す概念である。本来は織物の質感を意味する。(Wikipedia)
それでは,CellProfilerの「MeasureTexture」モジュールについて触れたいと思います.
説明は,以下モジュールのマニュアルを参考にしました.
Measurement — CellProfiler 3.0.0 documentation
MeasureTextureの設定
MeasureTextureを開くと以下のような画面がでてきます.
このモジュールでは,グレースケール画像(オブジェクト)内のピクセル強度値の変動を測定します.
少ないテクスチャ⇒滑らかな質感,均一なピクセル強度
多いテクスチャ⇒粗い質感,不均一なピクセル強度
というイメージです.
select an image to measure
テクスチャを測定したい画像を選択します.Measure images or objects
テクスチャを測定するのは「画像」か「オブジェクト」か「画像とオブジェクト両方」かを選択します.
オブジェクトとして認識した領域のテクスチャの特徴量を抽出したい場合は,「Objects」を選択します.Texture scale to measure
測定したいテクスチャの大きさを選択します(デフォルトは3).単位はピクセルです.
例えば2を選択すると,画像内の各ピクセルから右側の2ピクセルで同時生起行列が生成され,特徴量が抽出されます.
Texture scale to measure の注意点としては,設定する数値はオブジェクトより小さくする必要があります(オブジェクト内のテクスチャが測れなくなる).
また,1つの画像に対して,複数のオブジェクトを設定することができますが,1対1で画像とオブジェクトからテクスチャの特徴量を取得したい場合は,複数のMeasureTextureを用意して,それぞれ定量化する必要があるそうです.
Measurement parameter
このモジュールでは,「Haralick Features」という解析手法によって特徴量を抽出しています.
以下の日本語総説によると,テクスチャ解析はおおまかに「構造的解析法」,「統計的解析法」,「モデルベースの解析法」,「変換ベースの解析法」の分類に分けることができるとのことでしたが,Haralick Featuresは統計的解析法に分類される手法のようです.
https://www.jstage.jst.go.jp/article/jsiamt/26/2/26_253/_pdf
テクスチャ解析に関するブログ
テクスチャ解析 - Qiita
このHaralick Featuresと得られる特徴量の数学的な説明は以下に示されていました.
Haralick texture features
ここでは取得できる13の特徴量について,簡単ですが紹介していきます.
AngularSecondMoment
画像の均一性を表します.
値が高いほど強度のばらつきが少なく均一であることを意味します(完全に均一な場合,値は1)Contrast
画像内の局所の強度変動を表します.
均一であれば0を示し,局所の変動が大きい場合はより大きな値になります.Correlation
画像内の強度値の線形的な関係(相関)を表します.
似たようなピクセル強度を示す面積が大きい画像はCprrelationの値は大きくなります(縞模様の画像であれば,縞と同じ角度の同時生起行列では数値が高くなる).
完全に正負に相関している画像は1,-1となります.Variance
画像強度値のバラつきを表します.(強度が一定の画像は分散=0になる)InverseDifferenceMoment
画像のコントラストを表します.不均一な場合は低く,均一な場合は高い値となります.SumAverage
空間領域の標準化されたグレースケール画像の平均値を表します.
https://www.quora.com/What-is-spatial-domain-in-image-processingSumVariance
空間領域内の標準化されたグレースケール画像の分散を表します.SumEntropy
空間領域内の標準化されたグレースケールのランダムさを表します.Entropy
画像の複雑さを表す指標.複雑な構造を持つような画像(オブジェクト)ほど高い値を示す.
残りは数式を言葉で理解するのが難しかったのでCellProfilerの説明をそのまま載せております.
DifferenceVariance
The image variation in a normalized co-occurrence matrix.DifferenceEntropy
Another indication of the amount of randomness in an image.InfoMeas1
A measure of the total amount of information contained within a region of pixels derived from the recurring spatial relationship between specific intensity values.InfoMeas2
An additional measure of the total amount of information contained within a region of pixels derived from the recurring spatial relationship between specific intensity values. It is a complementary value to InfoMeas1 and is on a different scale.
この記事の冒頭で示した「ExampleHuman」のパイプラインで,試しに核染色画像の核オブジェクトのテクスチャを認識してみたところ,以下のように,テクスチャに関する特徴量(平均値)を得ることができました.
MeasureTextureで抽出された特徴量データの一部
Scaleのカラムの数字が何を意味しているのか…わかり次第追記します.
同じような質問を他でも見かけました
Understanding Texture Measurement Parameters - Image Analysis - Image.sc Forum
最後に
このモジュールは内容を理解することが大変難しく,未だに各特徴量が何を表しているのか把握しきれておりません. (SumEntropyとEntropyは何が違うのか…とか山ほど)
以下の質問に対する回答のように,特徴量をわかりやすく説明することはできないので,割り切って細胞を表す指標として使えばよいのではないかと私は考えています,
Simple description of MeasureTexture parameters - Image Analysis - Image.sc Forum
細胞の特徴を表すのにテクスチャの情報を使うことは意味があると私も思いますので,今後使用していきたいと思っています.
20190812補足