CTの詳しい原理について話していこうと思います.
CTというと,既に完成された技術のように思いますが,「投影回数を少なくしたい!」かつ,「様々な方向から投影できない!」という場合にも対応できるように,より精密に断面を再構成する技術が求められています.
CTというと,既に完成された技術のように思いますが,「投影回数を少なくしたい!」かつ,「様々な方向から投影できない!」という場合にも対応できるように,より精密に断面を再構成する技術が求められています.
目次
・CT とは
・CTの原理
・Radon変換のmatlab のプログラム
・CTの原理
・Radon変換のmatlab のプログラム
1. CT とは
CTとは,Computed Tomography の頭文字をとったもので,コンピュータ断層撮像法と訳されます. CT検査とは,X線をつかって身体の断面を撮影する検査です. X線を照射し,断面を通過したデータを集め,画像処理を行うことで,断面を再構成します.
CTの応用分野は非常に広く,医療系であれば「カテーテルX線血管造影法」,「CTアンジオグラフィ」,「三次元欠陥撮影」(参考文献[1]),工業系であれば「非破壊検査」,「CAE」,「デジタルエンジニアリング」などがあります.
64列マルチディテクターCTを用いた冠動脈CT検査
参考文献[2]
2. CTの原理
さて,それではCTの原理について説明していきましょう.
CTは,X線を目的の物体に照射し,それの減衰を見ることによって,物体の形状を再構成する手法です.
投影する領域全体での減衰率$f(x,y)$を復元します.
図の角度$\theta$から$\Omega$へ投影し,それにより得られる積分量は以下のように記述されます.
\[
p(r,\theta) = \int_\Omega f(x,y) \delta(r-x \cos \theta - y\sin\theta)d xdy
\]
様々な角度$\theta$からの投影により,$f(x,y)$を完全に求めることが目的です.
この$p(r,\theta)$が観測量です.
関数$p(r,\theta)$を$f(x,y)$のラドン変換と呼びます.
この$\delta(r)$というのはディラックのデルタ関数と呼ばれる関数であり,可積分な関数$f(x)$
に対して
\[
\int_{-\infty}^{\infty} \delta(x) f(x) dx = f(0)
\]
となるようなものです.
$\delta$の中身が$0$になるところだけ出現すると考えてもらってよいです.
上での積分は,デルタ関数の定義から,物体を$\theta$方向から投影した総和が得られることがわかります.
3. Radon 変換のプログラム
以下,少しだけmatlab のコードを載せたいと思います.
ラドン変換などの原理の理解の一助となれば幸いです.
ラドン変換などの原理の理解の一助となれば幸いです.
まず,サンプルデータをロードします.
P = phantom(256); imshow(P)
load_phantom.mat
Phantom データ
次にラドン変換をしてみます.
theta = 0:10:170; %% 投影する角度の設定 [R,xp] = radon(P,theta);
radon.mat
表示してみます.
figure, imagesc(theta,xp,R); colormap(hot); colorbar xlabel('\theta'); ylabel('x\prime');
plot.mat
様々な方向からの投影が得られたと思います.
プロットしてみるとなかなか面白いですね!
プロットしてみるとなかなか面白いですね!
4. 再構成方法
さて,Radon変換によって投影が得られました. では,投影からどうやって元の画像を復元するのでしょうか?
主に以下のような手法があります.
・投影切断面定理を用いる方法
・スパースモデリング
スパースモデリングは近年急速に流行っている手法なので,聞いたことがあるかもしれません. これらに関しては次の記事で説明していこうと思います.