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
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
元に戻りましたね!
十分な投影がなければ?
今回は,100方向から投影を行いました.では,投影の回数を減らすとどうなのでしょうか. 現実は,CTの撮像をする際,放射線の被曝の問題があります. 放射線の被曝を防ぐため, 投影の回数をできるだけ減らすことが重要な課題になっているわけです.
これに関して数値実験を行ってみました. 上のtheta_0 やMを変更するだけですぐチェックできます.
下の画像は上の設定したMを60,40,20,10 と変更した結果です. 投影の回数が減ると,誤差が目に見えるようになってくることがわかります.
このような誤差のことを,アーチファクトと呼びます.
どうやって解決するの?
先ほど述べた通り,投影回数が少ない場合は多くの問題であり得ます.ここで用いられるのがスパースモデリングです.次の記事ではスパースモデリングを実装し,その威力を確かめてみます.