MATLABで画像再構成

X線CT、MRIとか、”ミューオンで火山のレントゲン写真”でも使われている画像処理の基礎となる「画像再構成」。

MATLABで画像再構成の動作確認をしたくてつくったプログラムをUP。「あ、っぽい画像でた。終了~」というかんじで個人的に最低限の動作を確認しただけのものなので、UIもコードもほんとうに適当です笑。が、このまま捨てるのももったいないので。処理の各部、FFTの理解が不完全で、どこか間違っていると思いますのご注意を。

FBP法と、2次元フーリエ変換法(座標変換アルゴリズム3種)で、合計4つのサンプルについて。画像回転、座標変換、FFTとか逆FFTの関数はMATLAB備えつけのものを使用しています。それぞれオリジナルの関数にリプレイスできますね。入力はサイノグラム。出力は再構成された画像。

 

1.FBP(=Filtered Back Projection)法 画像変換はMATLABの関数を使用 (FBP_with_MATLAB_image_TRANS_func.zip)。意外ときれいな結果。投影するデータを回転するのではなく、投影されたデータのほうを回転しているので、再構成画像が180度回転したものとなっています。

画像再構成 FBP法

 

2.2次元フーリエ変換法 直交座標-極座標変換にMATLABの関数を使用 (2DFFT_with_MATLAB_coord_TRANS_func.zip)。へぇー、って感じ。

画像再構成 2次元フーリエ変換法 MATLABの座標変換関数を使用

 

3.2次元フーリエ変換法 直交座標-極座標変換変換(座標変換&データ補完)に「Excelによる画像再構成入門」で紹介されているアルゴリズムを利用しています (2DFFT_with_StudyBook's_coord_TRANS_func.zip) 。参考書座標変換&補完のExcel式が正しくMATLABに変換できているか自信ありません。とりあえず画像出た笑 表示がカラーであることに意味はないです。

画像再構成 2次元フーリエ変換法 Excelによる画像再構成入門の座標変換関数を使用

 

4.2次元フーリエ変換法 直交座標-極座標変換変換部分を自分で書いたもの(2DFFT_with_ORIGINAL_coord_TRANS_func.zip) 。ある座標について系を変換後、その値を周囲8点にコピペして補完したつもり、という安直な考え方。精度もよくないし、そのうえ処理にとても時間がかかるという代物。周波数が低い部分はデータ数が多いので、↓のようなサンプルデータならおおまかな画像は得られる。周波数が高い部分にノイズが多いのが弱点。

画像再構成 2次元フーリエ変換法オリジナル(笑)の座標変換関数を使用

 

1.MATLABを起動し、

2.MATLABプロンプトで「guide」と入力しリターン

3.「GUIDEのクイックスタート」というポップアップウィンドウの「既存のGUIを開く」で

4.参照から untitled.fig(もしくはuntitled1.fig)を選択する

5.figファイルのウィンドウが開いたら、緑色の再生ボタンを押してプログラムを実行

6.「・・・MATLABパスが見つかりません」と警告メッセージが表示される場合は 「パスに追加」を押す

★計算が終わるまで沈黙します。計算が終わると結果表示のウィンドウが開きます。

★結果表示まで数十秒~数分かかります(MATLABがハングしたと思って強制終了しないように注意)

 

添付サイズ
2DFFT_with_MATLAB_coord_TRANS_func.zip307.88 KB
2DFFT_with_StudyBook's_coord_TRANS_func.zip320.11 KB
2DFFT_with_ORIGINAL_coord_TRANS_func.zip307.49 KB
FBP_with_MATLAB_image_TRANS_func.zip311.92 KB