輪切り画像を計算する 〜 CTスキャンの原理 〜

今回はCTスキャンに数学的な工夫があるんですよ〜っていう話題です。

 

CTスキャンは、病院等にある次のような雰囲気の機械です(画力があまりないので伝わるか自信がないのですが)。

 :20180717230800j:plain

 丸っこい穴が特徴的ですね。この機械に体を通すと、体を”輪切りにした”画像を得ることができます。もちろん実際に輪切りにしているわけではなく(死んでしまう!)、次のようなアイディアで”輪切り画像”を計算しています。

 

CTスキャンでは微弱のX線を利用します。X線は様々な物体を通り抜ける性質がありますが、物質によって通り抜けやすさが異なります。そこで実際にX線を体内を通過するように放出し、その体内通過後のデータを計測します。これにより体内の何らかの情報がわかるのでは?、というわけです。

 :20180717230903j:plain

しかしもちろん、一方の方向からX線を当てるだけだと、深さの情報が失われます。X線を通しにくい何か異質な物体があったとしても、それがお腹側にあるのか、背中側にあるのかについては分からないのです。そこで、より詳しい情報を得るために

「X線の体内通過後の計測を、グルグル回りながらいろんな角度でやったらいいんじゃね?」

となるのは自然な発想ですよね。実は、このアイディアで体の断面図が”完全に”求められるのです。

 :20180717232806j:plain

上図にあるように \displaystyle  (Rf)(u,\theta) は角度 \theta のときのX線体内通過後の1次元データです(これは観測で求められる!)。これを各角度で計測し、次のような計算によって体の断面図の2次元データ f(x,y) が計算できます。

 

CTスキャンの原理

 \displaystyle  f(x,y)=(2\pi)^{-\frac32}\int_{0}^{2\pi}\int_{0}^{\infty} \mathcal{F}_u(Rf)(r,\theta)e^{ir(x\cos\theta+y\sin\theta)}r dr d\theta …(⭐︎)

 右辺の \displaystyle \mathcal{F}_u (r, \theta ) は関数 \displaystyle (Rf)(u,\theta) を変数 \displaystyle  u についてフーリエ変換した

  \displaystyle  \frac{1}{\sqrt{2\pi}}\int_{-\infty}^{\infty}(Rf)(u,\theta)e^{-iru}du

を表し、 \displaystyle  rは生きのこる変数になります。フーリエ変換や、(⭐︎)の数学的な説明はまた別記事で扱うことにして、今回は紹介にとどめます。

 

 (⭐︎)は要するに、観測可能なデータ \displaystyle  (Rf)(u,\theta) から数学的な計算を施すことで元の断面図 \displaystyle  f(x,y) が計算できるということです。かなり刺激的!!

 

では今回はこの辺で。後回しにしてばっかりですみません。とりあえず近いうちにフーリエ変換ぐらいはまとめておきたいですね。