第9回CADセミナー@岐阜 演習C/偽陽性削除処理

検出処理と合わせて重要となる偽陽性削除処理を構築します.これは,

  1. 前処理
  2. 中間処理
  3. 後処理
の中の中間処理に該当します.

削除の方針は,以下のようにします.

まず,検出処理後の2値画像に対してラベリング処理(演習8)を行ない,そのラベル毎に本物の腫瘤陰影といえるか否かを以下の条件で判定します.また,非常に小さな領域が多数発生する場合には,膨張収縮処理(演習7)が必要になります.

注意:この処理の入力には,演習Bで作業した2値画像を用いず,演習Aで作成した解像度を落とした画像を利用します.

したがって,処理の流れは
  1. 画像読み込み(演習B
  2. 偽陽性削除処理
  3. ラベル画像の保存
となります.


プログラムの例
メイン関数:main.c ラベリング関数:labeling.c 中心と大きさを調べる関数:center_and_size.c 円形度を調べる関数:roundshape.c

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

実行方法
proc mammo01s.raw 512 512 mammo01sl.raw procが実行ファイル名
mammo01.rawが入力画像のファイル名
512 512は幅と高さ
mammo01sl.rawは出力のファイル名. 「l」はラベル画像を表すことにする.

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

処理後の画像表示
xlabelview mammo01sl.raw 512 512 ラベル数(もしくは適当)
ラベル毎に濃淡を変えて表示する.


演習C−1
ラベル内の(原画像の)画素値の平均を求める関数を作成しましょう.

演習C−2
任意のラベル番号がついたラベルを消すプログラムを作成しましょう.

演習C−3
ラベルの面積(大きさ),円形度,画素値の平均のそれぞれの3つの値が,それぞれともある一定の値以上の値であるラベルだけ残すようなプログラムを作成しましょう.そして,そのラベル画像を出力するようにしましょう.
これができれば,もっとも簡単な偽陽性削除ができるようになります.

解答例 演習C−1:画素値の平均を求める関数:labelpixvalue.c
演習C−2:任意のラベル番号がついたラベルを消す関数:remove_label.c
演習C−3:メイン関数:main.c
この中で特徴量を配列に保存しています.
保存した特徴量の配列から判定を行なう関数:fp_reduction.c