Re - ImageJで学ぶ!: 第25回 2値化の応用 医用画像の特徴量解析(フラクタル解析)で学ぶ!

2015年9月25日金曜日

第25回 2値化の応用 医用画像の特徴量解析(フラクタル解析)で学ぶ!

今回は、2値画像の医用への応用の1例として、フラクタル解析を紹介します。
画像の特徴量解析は医用画像上に表示されるさまざまな症例の形状や濃度情報の特徴を定量評価します。例えば、がんの良性・悪性の判断材料や、時系列で形状や濃淡値が変化していくような病気の定量解析に有用です。今回は2値画像を用いたフラクタル解析の中で最も簡単で単純なアルゴリズムであるボックスカウンティング(box-counting)について、 lmageJを用いて解説していきます 

フラクタルとは


フラクタルは、自己相似性を持つ図形や構造などの総称で、1975年に数学者のべノア・マンデルブロ(Benoit B. Mandelbrot)氏によって作られた造語です
この「自己相似性」という用語は、図形の一部を拡大すると、ほかの部分または全体と形が一致する性質のことで、その中でも、図形のどの部分をとっても細部を拡大すると全体と同じ形になる、一様な自己相似性をフラクタル(fractal)と言います。

自己相似性を持つ図形には、曲線をつくるものと、特定の図形内で分割していくものとに分けられます。曲線をつくるものには、コッホ曲線・コッホ雪片、分割していくものにはシェルピンスキーのギャスケットなどがあります。

本稿では、構造の複雑さを示すことを目的として、前者のフラクタル図形の最も標準的な曲線である コッホ(koch)曲線を用いて自己相似性を説明します。

コッホ曲線

コッホ曲線は具体的には以下のような手順で生成できます。 

  1. 適当な長さの線分を引く。(これをイニシエータと呼びます)。
  2. その線分を3等分し、中央部のみジェネレータ(三角形の底辺なしの図形) に置き換える。
  3. 4本の線分ができているので、それぞれの線分を3等分し、それぞれの中央をジェネレータに置き換える。
  4. 16本の線分ができているので,それ をまたジェネレータに置きi換える。 
  5. 以降、この操作を繰り返すと、上述のような無限段階のコッホ曲線になる。 


このように、線分を3等分し、分割した2点を頂点とする正三角形の作図を無限に繰り返すことによって得られる図形がコッホ曲線です。

ここで、この図形がどのくらい複雑になったかを示すフラクタル次元というものを算出します。正確には、より細かなスケールへと拡大するにつれあるフラクタルがどれだけ完全に空間を満たしているように見えるかを示す統計的な量がフラクタル次元です。

ラクタル次元Dは、 元の図形のサイズ1/nの相似比、かつ、できた同じ図形の個数をmとすると、次の式で表せます。

D = lognm・・・式(1)

したがって、上記のコッホ曲線の場合、相似比は、線分の長さが1回の操作ごと1/3となっており、その個数が常に4つずつ増えていますので、D=log4/log3= 1.26次元であることがわかります。線は一次元、面は二次元なので、コッホ曲線は少し複雑な次元の線です。

このように、フラクタル次元は図形の複雑さを数値で表していると言えます。また、正方形の次元を考える場合、普通は直感で二次元とわかりますが、フラクタル次元で説明すると、例えば、正方形の各辺を2分すると4つの相似図形になることを考えると、式(1)から、D=log4なので二次元となります。同じように、立方体の次元を計算すると、三次元であることが式 (1)から計算できます。

しかし、フラクタル次元のほとんどは、無理数(分子・分母ともに整数の分数ではない数) になります。フラクタル次元は、数学的に厳密に定義するのは非常に難しいと言われていますが、医学を含め、経済学や自然科学など広い分野で応用されているようです。 

生体のフラクタルについて


人間の体は、ガス交換や栄養物質の血液中の交換などを効率良く行わなくてはならない構造になっています。そのため、限りある体積に最大限の表面積を包含できる組織構造が必要で、その代表的なものとして、肺構造、毛細血管の分岐構造や腸絨毛構造はフラクタル構造(細部の形状が一様に連なっている)であることが知られています。

ImageJによる医用画像のフラクタル次元の測定方法


医用画像のフラクタル次元を測るために、ImageJにも搭載されているシンプルな方法「ボックスカウンティング法」を紹介します。この方法は2値化画像を処理します。ボックスカウンティング法は、解析対象の画面上にボックスを設定し、そのボックスに含まれる信号値を持つ部分の数を数え(N(x))、その大きさ(一辺の長さx)を変化させていきます。そして得られたカウントを両対数 [log(X) v.s. log(N(x))]グラフとし、直線近似してその直線の傾きDをフラクタル次元とします。

このImageJのボックスカウンティング機能はソースコードが公開されています。(FractalBoxCounter.java) “ijmeasure.CurveFitter”クラスでlog換したボックスサイズ“sizes” “ boxCountSum”の値を引数として代入して初期化し、“ij.measure.CurveFitter. doFit(int fitType)”の引数として “STRAIGHT LINE”を代入して直線近似するアルゴリズムになっています。

さらに、傾きを求めるために、上述の”CurveFitter”クラスの“getParams();”メソッドで傾きDを抽出して、フラクタル次元としています。 

それでは,ImageJを用いて実際にフラクタル解析をやってみましょう。
画像はCTから得られた肺がん(扁平上皮癌)例です。


手順は2つあります。共通の手順は、CT画像を読み込んで、肺がん部分を切り出し、8-bitグレイスケールに変換しておくところまで同じです。
(Process>Binaryの機能も活用していきます!)

1つ目の手順は、ImageJデフォルトのオートで2値化処理をかけ、ホールをうめる「Fill Holes」処理を行い、関心領域を黒塗り状態にして、そのままOutlines処理をかけ、最後に反転処理を行います。

2つ目の手順は、2値化する前に、エッジ検出を行い、それを反転させてから、スケルトン処理を行います。

いずれの操作でも、最後に関心領域外の余計な領域に残ったものをマニュアルで削除しなければなりません。もしくは、Snakeなどの自動辺縁抽出を利用するといいかもしれません。

これらの画像を作成したら、Analyze>Tools>Fractal box count...で、背景が黒塗りの場合はBlack backgroundにチェックをして実行しましょう。

今回は、2つ目の手順で試した結果をご紹介します。
比較対象として、円形ROIの辺縁抽出結果をフラクタル解析した結果と比べてみます。
やはり、構造が複雑な形状の方が、フラクタル次元が高い値を示していることがわかります。

今回の解析では、肺がんのスピキュラと呼ばれる部分の形状に合わせてフラクタル図形が計算され、フラクタル図形を含むボックス(ピクセル)がカウントされ、前述のアルゴリズムに従ってフラクタル次元が算出されています。このように、フラクタル次元は構造の辺縁の複雑さを客観的に示すことができます。もし解析対象(例えばスピキュラ)の構造の複雑さが疾病の悪性度と相関することが知られている場合は、構造の複雑さを客観的に示す指標であるフラクタル次元が活用できますね。
フラクタル次元は、応用がいろいろとできそうなイメージングバイオマーカの1つです。

(切り出した領域)
(関心領域の辺縁を抽出)



(フラクタル解析 D = 1.24)
(円形ROIの辺縁を抽出)

(フラクタル解析 D = 1.12)


次回は3D画像処理の元となる複数の画像群(スタック)の画像処理について触れていきます!

Reference
  • 山本修司:ImageJで学ぶ実践医用・バイオ画像処理.INNERVISION(222) 2007, p110-112

0 件のコメント:

コメントを投稿