第9回CADセミナー@岐阜 演習B/腫瘤陰影の検出処理

次に,このCADの中核となる腫瘤陰影の検出処理を構築します.これは,先の

  1. 前処理
  2. 中間処理
  3. 後処理
の3つの段階の2つ目にあたります.

検出の方針は,つぎのようにします.
腫瘤陰影は,背景と比べて比較的明るい(白い)領域にあるので,あるしきい値で2値化(演習6)を行うことで検出する事とします. そのしきい値の決定は,何らか自動的に行なうことが必要です.そうしないと,CADにはなりえません.また,どのような画像についても妥当なしきい値が決まるような手法である必要もあります.

ここの方針は,画像の平均値と標準偏差からしきい値を算出する手法とします.そして,2値化後の画像を保存することとします.
ここでは,しきい値は,画像の平均値と標準偏差から算出される値とします.平均をm,標準偏差をsdとするとき,しきい値:thは
th = m + α x sd
とする事とします.これで,αをパラメータとして,しきい値を変更できるようになります.


腫瘤陰影の検出処理

この演習では,検出処理として,以下の手順で処理を行なうプログラムを構築します. もちいる原画像は,演習Aで作成したサンプリング間隔0.4mm,濃度分解能8ビットの画像です.プログラムの流れは,
  1. 画像の読み込み(演習1, 演習A
  2. 画像の平均値と標準偏差の算出(演習6, 演習6-2
  3. 2値化処理(演習6, 演習6-2
  4. 2値画像のファイルへの保存(演習1, 演習A
2値化のためのしきい値は,2で算出した値に基づきます.それは,main関数の中で計算しています.
プログラムの例
メイン関数:main.c 平均値算出関数:get_average.c 分散算出関数:get_var.c

コンパイル方法
Makefileを用意してあるので,単に「make」と入力するだけで可能です.

実行方法
proc mammo01s.raw 512 512 mammo01sb.raw procが実行ファイル名
mammo01s.rawが入力画像のファイル名
512 512は幅と高さ.演習Aで半分に再サンプリングしています.
mammo01sb.rawは出力のファイル名.2値画像になっている事に注意してください.

処理前の画像表示
x8view mammo01s.raw 512 512

処理後の画像表示
x8view mammo01sb.raw 512 512


演習B−1
しきい値を{平均+標準偏差の1.5倍,2倍と自由に変化させてみましょう.ポイントは,腫瘤陰影らしい領域ができるだけ孤立して白く表示されるような値を見つける事です.
まず,mphantoms.raw, nphantoms.rawの2枚の人工画像を使って実験してみましょう.

演習B−2
しきい値の変数を#defineを使ってmain関数の先頭部分に分かりやすく表示しましょう.

演習B−3
画像の画素値の平均値と標準偏差を画像の背景(真っ黒の部分)を無視して計算するように改造しましょう.

余裕のある人:演習B−4
画像全体からしきい値を求める事をやめて,中心領域がその周辺よりも一定値以上白い場合には白とするようなプログラムを作成しましょう.