X射线断层摄影术(Tomography)
在商业上有两种不同的成像方法:CT、MRI,两种方法在实现方法上有部分相通的地方,这里讲述的是CT。
假设上图为一个身体剖面图,内含有各种粘性物质,如骨头、肌肉、血管、脊髓等,用可变密度函数$\mu(x_1,x_2)$来描述。如果我们知道$\mu$是什么,则代表我们可以知道该身体剖面的状况。
关于$\mu$,在笔记中教授推荐我们去阅读一本书《Naked to the Bone: Medical Imaging in the Twentieth Centry》,作者是Bettyann Kevels,书中有一段是这么描述$\mu$的:
Dimmer and dimmer What happens when light passes through murky water? It gets dimmer and dimmer the farther it goes, of couse – this is not a trick question. If the water is the same murkiness throughout, meaning, for example, uniform density of stuff floating around in it, then it's natuarl to assume that the intensity of light decreases by the same percent amount per length of path traveled. Through absorption, scattering, etc., whatever intensity comes in, a certain percentage of that intensity goes out; over a given distance the murky water removes a percentage of light, and this percentage depends only on the distance traveled and not where the starting and stopping points are. We're assuming here that light is traveling in a straight line through the water.
Constant percent change characterizes exponential growth, or decay, so the attenuation of the intensity of light passing through a homogeneous medium is modeled by
$I=I_0e^{-\mu x}$
where $I_0$ is the initial intensity, $x$ is the distance traveled, and $\mu$ is a (positive) “murkiness constant”, $x$ has dimension of length and $\mu$ has dimension 1/length and units “murkiness/length”. $\mu$ is constant because we assume that the medium is homogeneous. We know the value of $I_0$, and one measurement of $x$ and $I$ will determine $\mu$. In fact, what we do is to put a detector at a known distance $x$ and measure the intensity when it arrives at the detector.
越来越暗 当光线穿过浑浊的水时会发生什么呢?光线穿过的浑水越远,就会变得越暗,当然,这是个显而易见的问题。如果水有着相同的浑浊度呢?相同的浑浊度意味着有均匀密度的东西漂浮在水中,那么很自然地就能假设光的强度在没穿过相同单位长度时都会有相同百分比的衰减。光在入射时,无论光的强度是多少,都会由于吸收,散射等原因,在出射时只剩下相当于入射光一定比率的强度,在通过一定距离的浑水时,当中一定比例的光会被消除,而这个比例只依赖于光传播的距离而非入射点出射点。在这里我们认为光是直线传播的。
光强度的变化是呈指数性的增长,或者说衰减的,因此光在均匀介质中传播时,它的光强度衰减模型如下
$I=I_0e^{-\mu x}$
其中$I_0$是初始光强度,$x$是传播距离,$\mu$是(正值)浑浊系数,$x$是以长度(length)为单位,$\mu$以长度的倒数(murkiness/length)为单位,$\mu$是一个常数,因为我们假设介质是均匀的。我们已知$I_0$,$x$可以通过测量得到,$I$决定了$\mu$是多少。实际上,我们要做的就是在一个已知的距离$x$处放置一个光强度的测量仪器。
Now suppose the water is not uniformly murky, but rather the light passes through a number of layers, each layer of uniform murkiness. If the i'th layer has murkiness costant $\mu_i$ and is length $\Delta x_i$, and if there are $n$ layers, then the intensity of light that reaches the detector can be modeled by
$\displaystyle{I=I_0 exp\left( –\sum_{i=1}^{n}\mu_i\Delta x_i \right)}$
Clearly, if the murkiness is describled by a function $\mu(x)$, then the intensity arriving at the detector is modeled by
$\displaystyle{ I=I_0 exp\left( –\int_L \mu(x) dx \right) }$
where $L$ is the line the light travels along. It's common to call the number
$p=\displaystyle{ \int_L \mu(x)dx = –ln\left( \frac{I}{I_0} \right) }$
现在假设水不是均匀浑浊的,那我们就可以把光通过的部分当成很多浑浊的小块组成。如果第$i$块的浑浊度为$\mu_i$,并且它的长度为$\Delta x_i$,一共有$n$个小块,那么光强度模型变成
$\displaystyle{I=I_0 exp\left( –\sum_{i=1}^{n}\mu_i\Delta x_i \right)}$
如果这条光线上的水的浑浊度用$\mu(x)$来表示的话,那么光强度模型会进一步变成
$\displaystyle{ I=I_0 exp\left( –\int_L \mu(x) dx \right) }$
$L$代表光线(光通过的轨迹),通常来说,下面这个数字就是衰减系数
$p=\displaystyle{ \int_L \mu(x)dx = –ln\left( \frac{I}{I_0} \right) }$
拉东变换(The Radon Transform)
我们在成像的时候,是需要知道整个身体剖面的密度,即$\mu(x_1,x_2)$,那么上面的式子就变成
$\displaystyle{ \mathcal{R}_L\mu = \int_L \mu(x_1,x_2)dx_1dx_2 }$
这个式子代表了对$\mu$进行拉东变换,其中$\mathcal{R}$表示拉东变换,变量为直线$L$,对不同的直线进行变换会得到不同的结果。
那么对直线上的部分进行积分该怎么表示呢?
1. 设定一个式子来表示直线
笛卡尔坐标系:
$kx_1+b=x_2$
不同的$k$与$b$可以得到不同的直线,但是实际上这种表示方式并不适用于求解当前问题
角坐标系:
直线到原点的距离为$\rho$,法向量的角度为$\phi$。
如何同这两个值来表示直线?
单位法向量为$\underline{n}(cos\phi,sin\phi)$,直线上的任意一点为$x_1,x_2$。
它们有个规律:直线上所有的点在单位法向量上的投影为$\rho$,即有
$\rho=\underline{n}\cdot\underline{x} = x_1cos\phi + x_2 sin\phi$
2. 设定一个表示在直线上积分的式子
我们需要表示出在该直线上积分,也就是说需要从$\mu(x_1,x_2)$中抽取出该直线位置上的值,可以用脉冲函数实现,设想一下该直线上全是脉冲函数,表示如下
$\delta(\rho-x_1 cos\phi-x_2 sin\phi)$
运用$\delta$的采样特性就能得到$\mu(x_1,x_2)$在该直线位置上的部分
$\mu(x_1,x_2)\delta(\rho-x_1 cos\phi –x_2 sin\phi)$
那么拉东变换最终变成
$\mathcal{R}_L \mu=\mathcal{R}\mu(\rho,\phi) = \displaystyle{ \int_{-\infty}^{\infty}\int_{-\infty}^{\infty}\mu(x_1,x_2)\delta(\rho-x_1cos\phi-x_2sin\phi)dx_1dx_2 } \qquad (-\infty<\rho<\infty,0\leqslant \phi < \pi)$
用向量形式表示为
$\displaystyle{ \mathcal{R}\mu(\rho,\underline{n})=\int_{\mathbb{R}^2}\mu(\underline{x})\delta(\rho-\underline{x}\cdot\underline{n})d\underline{x} }$
拉东逆变换(Inverting the Radon Transform)
在医学图像成像时,是通过x射线穿过人体来实现的,射线穿过人体后会衰减,然后被仪器测量到,也就是说我们已经知道了拉东变换的结果,需要通过这个结果还原出射线穿过的人体剖面,这个还原的过程被称为拉东逆变换。
拉东变换后有两个变量:直线与原点的距离$\rho$,直线的法向量角度$\phi$。
现在令$\phi$不变,即穿过人体剖面的射线角度固定,那么有唯一的变量$\rho$
此时对$\mathcal{R}\mu$进行傅里叶变换(变量为$\rho$)
$\begin{align*}
\mathcal{F}_{\rho}\mathcal{R}\mu(r,\phi)&=\int_{-\infty}^{\infty}e^{-2\pi i r\rho}\mathcal{R}\mu(\rho,\phi)d\rho \\&=\int_{-\infty}^{\infty}e^{-2\pi i r\rho}\left(\int_{-\infty}^{\infty}\int_{-\infty}^{\infty}\mu(x_1,x_2)\delta(\rho-x_1cos\phi-x_2sin\phi)dx_1dx_2 \right )d\rho\\&=\int_{-\infty}^{\infty}\int_{-\infty}^{\infty}\mu(x_1,x_2)\left(\int_{-\infty}^{\infty}\delta(\rho-x_1cos\phi-x_2sin\phi)e^{-2\pi i r\rho}d\rho \right )dx_1dx_2\\&=\int_{-\infty}^{\infty}\int_{-\infty}^{\infty}\mu(x_1,x_2)e^{-2\pi ir(x_1cos\phi+x_2sin\phi)}dx_1dx_2 \qquad (\delta\ shift\ property)\\&=\int_{-\infty}^{\infty}\int_{-\infty}^{\infty}\mu(x_1,x_2)e^{-2\pi i(x_1rcos\phi+x_2rsin\phi)}dx_1dx_2\\&=\int_{-\infty}^{\infty}\int_{-\infty}^{\infty}\mu(x_1,x_2)e^{-2\pi i(x_1\xi_1+x_2\xi_2)}dx_1dx_2 \qquad \left(letting\ \begin{cases} \xi_1=rcos\phi \\ \xi_2=rsin\phi \end{cases} \right )\end{align*}$
用向量形式表示为
$\displaystyle{ \mathcal{F}_{\rho}\mathcal{R}\mu(\underline{\xi})=\int_{\mathbb{R}^2}e^{-2\pi i\underline{x}\cdot\underline{\xi}}\mu(\underline{x})d\underline{x} }$
如此一来就变成了对$\mu(x_1,x_2)$进行二维傅里叶变换,即
$\mathcal{F}_{\rho}\mathcal{R}\mu(r,\phi)=\mathcal{F}\mu(\xi_1,\xi_2) \qquad \begin{cases} \xi_1=rcos\phi \\ \xi_2=rsin\phi \end{cases}$
那么对这个结果进行傅里叶逆变换就能得到原来的人体剖面图$\mu$
医学图像成像流程总结
1. 以人的身体为中心,两边分别有x射线源以及接收传感器,而且可以绕中心旋转,可变角度为$0\leqslant \phi < \pi$
2. 一簇角度为$\phi$的并行x射线从源发射到传感器接收,其中穿过的部分为人体剖面,密度未知,用$\mu(x_1,x_2)$表示。
传感器接收到的数据可用来计算出x射线的衰减,用$g_{\phi}(\rho)$表示,其中$\phi$表示某固定角度,$\rho$表示该簇并行的x射线中某一束射线与中心点的距离
3. 角度$\phi$需要从$0$到$\pi$变换,而对于每一个角度$\phi$都需要计算$\mathcal{F}g_{\phi}(r)$,也就是$g_{\phi}(\rho)$的傅里叶变换
4. 由于
$\mathcal{F}g_{\phi}(r)=\mathcal{F}\mu(\xi_1,\xi_2) \qquad \begin{cases} \xi_1=rcos\phi \\ \xi_2=rsin\phi \end{cases}$
$r$本身就是变量,有$-\infty<r<\infty$,那么我们通过改变角度$\phi$(从$0$到$\pi$)即可得到任意$\xi_1,\xi_2$,因此能涵盖$\mathcal{F}\mu(\xi_1,\xi_2)$的所有范围。
5. 最后对上述结果进行二维傅里叶逆变换就可以复原人体剖面图像$\mu$
$\mu(\underline{x}) = \displaystyle{ \int_{\mathbb{R}^2}e^{2\pi i\underline{x}\cdot\underline{\xi}}\mathcal{F}\mu(\underline{\xi})d\underline{\xi} }$
当然,实际的数据操作肯定是离散的,因此运用的是DFT。另外还有一些其它的注意事项,有兴趣可以去查看本课程的笔记