2018年6月6日 更新

CTの原理②〜投影切断面定理とCT再構成の実装〜

CT (Computed Tomography)の投影切断面定理に関して説明します. また投影が少なくなったとき,どのような挙動を示すのかを数値実験を交えながら紹介します.

11,923 view お気に入り 0

2. 投影を計算します.

theta_0 = pi;  % 全方向からの投影
M = 100;  % 投影角度数.この場合,0からpi までで100方向から投影した.
theta_k = theta_0/M;
[Radon_mat,xp] = radon(P,(0:1:M-1)*theta_k * 180/pi);
plot(Radon_mat);
Matlab コード2
 (4805)

全ての投影をプロットしたもの.

3. 逆変換を計算します.

I1 = iradon(Radon_mat,(0:1:M-1)*theta_k * 180/pi);

%% plot
pcolor(I1);
hold on;
shading flat; shading interp; axis equal tight;
colormap(gray);
Matlab コード3
 (4808)

復元結果
元に戻りましたね!

十分な投影がなければ?

今回は,100方向から投影を行いました.では,投影の回数を減らすとどうなのでしょうか. 現実は,CTの撮像をする際,放射線の被曝の問題があります. 放射線の被曝を防ぐため, 投影の回数をできるだけ減らすことが重要な課題になっているわけです.

これに関して数値実験を行ってみました. 上のtheta_0 やMを変更するだけですぐチェックできます.

下の画像は上の設定したMを60,40,20,10 と変更した結果です. 投影の回数が減ると,誤差が目に見えるようになってくることがわかります.

このような誤差のことを,アーチファクトと呼びます.

 (4812)

どうやって解決するの?

先ほど述べた通り,投影回数が少ない場合は多くの問題であり得ます.ここで用いられるのがスパースモデリングです.次の記事ではスパースモデリングを実装し,その威力を確かめてみます.
27 件

関連する記事 こんな記事も人気です♪

スパースモデリング ~少量データから画像を復元~

スパースモデリング ~少量データから画像を復元~

matlab のコードをもとに,スパースモデリングとは何かについて説明します.今回はスパースモデリングの説明です.
ImageJ Plugin で数値計算をしてみる #5

ImageJ Plugin で数値計算をしてみる #5

非情報科学研究者 (特に生物系研究者) が ImageJ plugin を作るために超えるべき壁やTipsをまとめます。今回は、面積の平均値や中央値、分散を出力するためのコードをご紹介します。
湖城 恵 | 10,167 view
Extracting Straight Lines〜画像から境界線を効率よく求める方法〜

Extracting Straight Lines〜画像から境界線を効率よく求める方法〜

本記事では,IEEE Transactions on Pattern Analysis and Machine Intelligence に投稿された,「Extracting Straight Lines」の論文を説明し,実装を行います.1986年に投稿された少し古めの論文ですが,アイディアは非常に面白いです.
ディジタル画像処理~pythonによる空間フィルタリングpart1~ 

ディジタル画像処理~pythonによる空間フィルタリングpart1~ 

ディジタル画像処理を解説します.今回は,代表的な空間フィルタリングをpythonで実行してみました。
亀谷 桃子 | 13,744 view
量子アニーリングを駆使して数独を解いてみた

量子アニーリングを駆使して数独を解いてみた

先日,量子アニーリングの勉強会に参加して来ました.そのアウトプットとして,今回,数独ソルバーを作ってみます.
井上 大輝 | 4,246 view

この記事のキーワード

この記事のキュレーター

エルピクセル編集部 エルピクセル編集部