CTスキャンのアルゴリズムを実装しよう(二分の一)
病院で脳の断面とかを撮るために使うやつ。
(wikiペディアから引用。)
ここでは、そのアルゴリズムについて要点をまとめてみます。
「二分の一」でふわっとした説明をして、「二分の二」で実装なんかの話をします。
いろんな方向から見たシルエットから、全体を推定(復元)する。」
というものです。
「上から見たら円、横から見たら長方形です。どんな立体でしょう?」
というクイズと似ています。
1章 CTスキャンの理論的説明
1.1 都合の良かった人体、次節へのつなぎ
まず、人体が都合がよかったという話をします。
それは「人体は、組織が違うとX線の透過率が異なる」ということです。
これは、
「X線の透過率の分布が分かれば、それはすなわち組織の分布が分かるということ」
を意味します。
以下の節では、そのために必要な数学について説明します。
余談ですが、CTスキャンは人間の内部の組織に関する知識を持ちません。
というか、検査対象が人間であるという事すら知りません。
ただ、検査対象が入っていく“あの円形の空間”内部のX線透過率分布を可視化しているだけなのです。人間の場合は、たまたま組織ごとにX線の透過率が違ったために、組織を見るという問題を、X線の透過率分布を知るという(より簡単な)問題に置き換えられただけなのです。
「ある関数を周波数空間に写像する」
という操作のことです。
ここで重要なのは、もとの関数とその周波数空間への写像は情報を失うことなく行き来できるということです。
1.3 ラドン変換
ラドン変換は、
「ある関数をある方向から見たときの投影を計算する」
「ある関数をある方向から見たときの投影を計算する」
という操作のことです。
投影というと何か難しい感じがしますが、「できた影をみる」程度に思ってください。
1.2と1.3で必要な数学を説明しました。
これらが投影定理によってつながることを説明します。
投影定理とは、
fの二次元フーリエ変換Fのθ方向の断面と等しい」
ということです。
もったいぶった感じがしますが、ひとまず分かったことを整理しましょう。
・人間の体の断面は二次元のX線透過率分布関数fだ
・fはそのまま体の組織の分布として考える事ができる
・g(θ)から簡単にフーリエ変換G(θ)を得ることができる
・G(θ)はfの二次元フーリエ変換Fのθ方向の断面と等しい
・fとFは二次元(逆)フーリエ変換により自由に行き来できる
それでは、人間の体の断面を見るための手順を示しましょう
---これは人間の体の断面を二次元X線透過率分布関数fとして見たときの、
θ方向の投影(ラドン変換)g(θ)を得ることに相当する。
② g(θ)をフーリエ変換してG(θ)を得る
③ ①と②の処理を全方向に対して行う
④ ③の操作によって得られたGはFに等しいので、これを二次元逆フーリエ変換してfを得る。
すなわち、人間の断面がえられたことになる。