逆投影とは?
SPECT画像を作るのは
1)投影データに2次現で前処理フィルタを施す。
2)投影データから作りたい断層面を選ぶ(スライス面の決定)。
3)そのスライス面に再構成フィルタを施す。
4)再構成フィルタを施したスライス面を逆投影する。
の手順でおこないます。
では、選んだスライス面を実際に逆投影するのはどのようにしたらよいのでしょうか?
固定座標と回転座標の考え方
固定座標とはSPECT画像を表示させる画面であると理解してください。回転座標とは検出器で収集したデータの画面であると思ってください。
逆投影とは、検出器で収集されたデータを、固定座標とした面に投影することです。
下の図で説明します。
aは側面の投影データです。例えば60枚の投影データを得たとしますと、aのような角度毎の投影データ60枚できます。そこで、得たい断層面を決定(a図の1〜3)し、その角度毎のスライスデータをcのように固定座標に逆投影すれば、bに示すSPECT断層面ができあがります。
このとき必要となるのが、固定座標と回転座標の考え方です。私たちは投影データから逆投影して、固定座標にSPECT断層画像をつくる訳ですから、投影データが得られている座標(回転座標)とSPECT断層面が出来あがる座標(固定座標)の関係がわかっていないと困ります。
しかし、この2つの座標は数学的にわかっていますからよいわけです。
上の図で説明します。
固定座標はSPECT断層画像を表示させるところで、回転座標は検出器が投影データを収集するところです。上の図の下段にそれぞれの座標系を書いておきましたが、回転座標(s、t)と固定座標(x、y)の関係は
s=xcosθ+ysinθ
t=−xsinθ+ycosθ
の関係があります。
しかし、逆投影するのは検出器のS座標にある投影データですから、s=xcosθ+ysinθの関係式さえわかっていればよいことになります。
下の図には、0°の角度における投影データ(0°のs座標のプロファイルカーブ)と90°の角度における投影データ(90°のs座標のプロファイルカーブ)を書いておきましたが、これが60角度分あるということです。この角度毎のs座標投影データを固定座標に逆投影すればSPECT断層画像は出来あがります。
では実際に計算してみます。
s=xcosθ+ysinθ
角度0°におけるs座標をf(s、0°)として、固定座標の(10、10)のf(s、0°)を計算します。
f(s、0°)=10cosθ+10sinθ=10×cos0°+10×sin0°=10×1+10×0=10
となりました。
この意味はs座標(スライスデータ)の10ピクセル番は固定座標の(10、10)に相当していますから、逆投影するカウント値は10番目のピクセルのカウント値を返せばいいと言うことになります。
ここで注意してください。
いまの10ピクセル番目は検出器のピクセルの中心を0ピクセルとして考えて導き出された答えですから、128のスライスデータを用いたなら、中心は64ピクセル番目ですから、この10ピクセルは(64+10)ピクセル番目=74ピクセル番目を意味しています。
また、固定座標の中心も(0、0)にしてあります。
128×128で数例を計算しておきますので、上の式に代入して確認してください。
(例)
固定座標(10,10)としたときの回転角度0°の回転座標(s、0°)の計算
s=xcosθ+ysinθ(x=固定座標のx軸、y=固定座標のy軸、θ=回転角度)に 固定座標(x=10、y=10) 回転角0°を代入して計算する
*回転座標(s、0°)=10×cos0°+10×sin0°=10×1+10×0=10
*s座標軸のピクセルは、10番ピクセルに64ピクセルを足して74番ピクセルが答え
*逆投影するカウント値は、74番目のピクセルのカウント値を固定座標の(10、10)に返せばよい
固定座標(x、y) | 回転座標(s、0°) | s座標軸のピクセル | 逆投影するカウント値 |
(−20,−20) | -20 | −20+64=44 | 44番目のカウント値を固定座標(−20,−20)に返す |
(-10,-20) | -10 | −10+64=54 | 54番目のカウント値を固定座標(−10,−20)に返す |
(-10,-10) | −10 | −10+64=54 | 54番目のカウント値を固定座標(−10,−10)に返す |
(0,-20) | 0 | 0+64=64 | 54番目のカウント値を固定座標(−10,−10)に返す |
(0,-10) | 0 | 0+64=64 | 64番目のカウント値を固定座標(0,-10)に返す |
(0,0) | 0 | 0+64=64 | 64番目のカウント値を固定座標(0,0)に返す |
(0,10) | 0 | 0+64=64 | 64番目のカウント値を固定座標(0,10)に返す |
(0,20) | 0 | 0+64=64 | 64番目のカウント値を固定座標(0,20)に返す |
(10,10) | 10 | 10+64=74 | 74番目のカウント値を固定座標(10,10)に返す |
(10,20) | 10 | 10+64=74 | 74番目のカウント値を固定座標(10,20)に返す |
(20,20) | 20 | 20+64=84 | 84番目のカウント値を固定座標(20,20)に返す |
回転角度が0°、90°、180°、270°のときはS座標軸のピクセルは整数で答えがでるのですが、回転角度45°のような角度がついたときにはどうなるのでしょうか?
回転角45°のときの計算を上の表のようにして考えてみます。
固定座標(x、y) | 回転座標(s、45°) | s座標軸のピクセル | 逆投影するカウント値 |
(−20,−20) | −27.5245 | −27.5245+64=36.47549 | 36.47549番目のカウント値を固定座標(−20,−20)に返す |
(-10,-20) | −22.2713 | −22.2713+64=41.72871 | 41.72871番目のカウント値を固定座標(−10,−20)に返す |
(-10,-10) | −13.7623 | −13.7623+64=50.23774 | 50.23774番目のカウント値を固定座標(−10,−10)に返す |
(0,-20) | −17.0181 | −17.0181+64=46.98193 | 46.98193番目のカウント値を固定座標(0,−20)に返す |
(0,-10) | −8.50904 | -8.50904+64=55.49096 | 55.49096番目のカウント値を固定座標(0,−10)に返す |
(0,0) | 0 | 0+64=64 | 64番目のカウント値を固定座標(0,0)に返す |
(0,10) | 8.50904 | 8.50904+64=72.50904 | 72.50904番目のカウント値を固定座標(0,10)に返す |
(0,20) | 17.0181 | 17.0181+64=81.01807 | 81.01807番目のカウント値を固定座標(0,20)に返す |
(10,10) | 13.7623 | 13.7623+64=77.76226 | 77.76226番目のカウント値を固定座標(10,10)に返す |
(10,20) | 22.2713 | 22.2713+64=86.27129 | 86.27129番目のカウント値を固定座標(10,20)に返す |
(20,20) | 27.5245 | 27.5245+64=91.52451 | 91.52451番目のカウント値を固定座標(20,20)に返す |
逆投影するカウント値をみてください。何番目のピクセルを固定座標に返しているのでしょうか?
固定座標(10、10)に返すピクセルは77.76226番目となっています。
しかし、s座標軸(ピクセル)は整数でしか表せません。上の図のbのようにs座標軸(検出器)は128×128マトリックスの画像であったならs座標軸は128個の整数でしか表せません。
計算では77.76226番目のピクセルのカウント値を固定座標(10、10)に返せばよいとの結果がでたわけですが、s座標軸には77.76226番のピクセルは存在しないのです。
では、この存在しない77.76226番目のピクセルに相当するカウント値をどのように求めたらよいのでしょうか????
近傍補間とは?
1つ目の考え方は近傍補間と呼ばれる方法です。
これは近いほうのピクセル番のカウント値を代用する方法です。計算で求めた77.76226番目のピクセルは77番目のピクセルと78番目のピクセルの間に位置しています。仮に77番目ピクセルのカウント値が10カウント、78番目のピクセルのカウント値が20カウントであったとしたら77.76226番目のピクセルは77番より78番に近いから、78番目のカウント値20を77.76226番目のカウントであるとしてしまおうとの考えです。したがって、77.76226番目のカウント値は、78番目の20カウントで代用するわけです。
直線補間とは?
一般的にはこの考え方が主流です。
これは隣り合うピクセルのカウント値が直線的に変化すると仮定してsにおける値を比例計算で求めるものです。
簡単なことです。でも言葉で書いたらごちゃごちゃしますので上の計算した数値を用いて書きます。
77番目のピクセルのカウント値をp(m)=10とします。次のピクセルは78番目です。このカウント値をp(m+1)=20とします。
これは1ピクセル増えたことでカウント値はp(m+1)−p(m)=20−10=10カウント増加しています。
計算で求めたSの値は77.76226でしたので77番目のピクセルからは77.76226−77=0.76226ピクセル増えたことになりますから、単なる比例計算で、1ピクセルでカウント値は10カウント増えたのだから、0.76226ピクセル増えるとカウントはどれだけになるのかを求めるだけです。
1 : 10 = 0.76226 : 何カウント増える?
何カウント増える?=10×0.76226=7.6226
となりますから77番目のカウント値10に増えたカウント値7.6226を加えた値(10+7.6226=)17.6226が直線補間で求めた値となりますから、17.6226を固定座標の(10、10)に返せばよいことになります。
言葉で説明するとこうなりますが、計算式を用いると以下のように表せますからおぼえておいてください。
(1−dm)×p(m)+dm×p(m+1)
(dmはs座標の値とそれを挟む最初のピクセルの距離です。)
(計算例)
p(m)=10 で p(m+1)=20として、sが77.76226であったなら m=77、m+1=78になりますから
dm=77.76226−77=0.76226となります。したがって
(1−0.76226)×10 + 0.76226×20 =17.6226
となり答えは同じになります。