前回の記事では,CTの投影がRadon変換によって与えられることを示し,
それをmatlab のコードにより実装しました.
具体的には,投影領域に対して,ある角度で投影した際,以下のように与えられることを説明しました.
それをmatlab のコードにより実装しました.
具体的には,投影領域に対して,ある角度で投影した際,以下のように与えられることを説明しました.
\begin{align} p(r,\theta) = \int_{D} f(x,y) \delta(r-x\cos\theta - y\sin\theta)dxdy \end{align}
ここで$\delta$はデルタ関数と呼ばれるもので,0になる部分で1,他の部分で0になるようなものです
CTの原理①~ラドン変換~ - IMACEL Academy -人工知能・画像解析の技術応用に向けて-|LPixel(エルピクセル)
CTの原理に関して詳しく説明します.今回はRadon変換についてです.
本記事で考えている題材は,いろいろな角度から投影が得られたとき,Objectを完全に復元できるのか?という問題です.
結論をいうと,出来ます.これには,投影切断面定理と呼ばれる以下の定理を用います.
投影切断面定理
投影切断面定理とはCTの投影とその領域の2次元フーリエ変換とを結びつける定理です. 具体的には, CTの投影のフーリエ変換が,領域の2次元フーリエ変換の断面に一致するという定理です. 領域の2次元フーリエ変換が分かれば,逆フーリエ変換をすることで元の領域を得ることができますので, 投影から完全に復元できたことになります.
ここでは具体的な式変形は割愛させていただきます.興味のある方は調べてみてください.
Matlabによる実装
以下,Matlabのコードで実装してみました.
なお,Matlab の関数にはFilter Back Projection と呼ばれる処理を行う関数が入っており,上の定理に加え,周波数領域で空間フィルタをたたみ込むことで,高周波成分のノイズの拡大を防いでいます.
https://uk.mathworks.com/help/images/ref/iradon.html
なお,Matlab の関数にはFilter Back Projection と呼ばれる処理を行う関数が入っており,上の定理に加え,周波数領域で空間フィルタをたたみ込むことで,高周波成分のノイズの拡大を防いでいます.
https://uk.mathworks.com/help/images/ref/iradon.html
1. まず画像をロードします.
P = phantom(128); imshow(P)
Matlab コード1