GPU使用を前提に画像segmentation

  • 解像度の高い画像処理をするには、2D画像/3D画像をグリッドに分けて、小領域(ピクセル・ボクセル)単位で並列化することの効率がよい
  • そのような並列処理に特化しているのがCPUではなくてGPU(Graphical Processing Unit)、もしくはGPUのなかでも汎用利用を想定して設計されたGPGPU(General Purpose GPU)
  • 画像処理のアルゴリズムは、そんな(GP)GPUで使えるようにしてあるものがよい(そうでないアルゴリズムは画像処理的に優れていても、(GP)GPUを使って動かすときにはつらいので
  • そんな視点にて、image segmentationと呼ばれるタイプに分類できる画像処理アルゴリズムであって(GP)GPU化されているものに関するレビューがMedical image segmentation on GPUs---A comprehensive review
  • Thresholding
    • すべてのピクセル・ボクセルで閾値による0/1化をするのも、segmentationした上での処理の一つ
  • Region growing
    • 異なる連続領域に分離してその範囲を定めるにあたり、あきらかにどの領域に属するかがわかる点を与え、そこから、「連続領域であることの判断」をしながら領域を広げて確定する
  • Morphology
    • 穴があったりするところを埋めるルール(3x3=9ピクセル全体の0/1を3x3の中心ピクセルの0/1に合わせて塗りつぶすことで、おおざっぱながら形が見えてくる
  • Watershed
    • 分水嶺を見つける。底を見つけることはできるので、そこから水を注入するようにして、水位を上げ、あふれ始めたらそこにダムをつくるようにしてどんどんダムの高さを上げていく。それにより分水嶺が決まる、というようなアルゴリズム
  • Active contours
    • 等高線が変化するときに、その等高線をパラメタ表示曲線として表し、その曲線の変化がエネルギー的に最も安定(少変化)となるようにする。エネルギー・ポテンシャルの定義を適当に入れる必要がある。偏微分方程式を扱う
  • Level sets
    • 領域を分割する。それをするにあたって、画像の次元より1つ次元の高い関数を導入し、その偏微分方程式を考える。contourと違って、分岐のある領域分割境界なども扱える。地形図の等高線にて、ある標高に相当するピクセル・ボクセルの亜集合を見つける、というようなやりかた
  • Atlas/registration-based
    • 基準地図にしたがって領域分類をし、それに合わないところを適宜合わせていくやり方。以下のように2大別できる
    • Intensity-based registration--Mutual information
    • Feature-based registration--Iterative closest point
  • Statistical shape models(SSM)
    • Atlas/registrationと似ているが、SSMは形を扱い、Atlasは領域の帰属を扱う
  • Markov random fields and graph cuts
    • すべてのピクセル・ボクセルを格子グラフと見立て、グラフカットによって領域化する。ただし、各ピクセル・ボクセルの帰属は確率的に決めていく(ランダムフィールド)が、そのときの帰属変更は「隣接ノードにのみ影響を受ける〜マルコフ」
  • Centerline extraction and segmentation of tubular structures
    • 管状構造・分岐木構造に特化した手法。分岐判断繰り返しアルゴリズム。木なので、管の中央が作る木を作る
  • Segmentation of dynamic images--tracking
    • 時間次元に対して連続性を見出すことは、空間次元と同じ扱いもできる
    • リアルタイム処理ではそれがうまくない
    • 前時刻の情報を基礎にすることができる。
    • Kalman filter
      • 時系列に沿って発生するノイズの具合を確認しながら新規時刻情報を前時刻状態+ありそうなノイズとして定める
    • Particle filter
      • 複数の状態をパーティクルとしてどれがありそうかをGPU並列処理で計算する