[傅里叶变换及其应用学习笔记] 三十. 拉东变换

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。另外还有一些其它的注意事项,有兴趣可以去查看本课程的笔记

时间: 2024-10-19 00:42:08

[傅里叶变换及其应用学习笔记] 三十. 拉东变换的相关文章

【Unity 3D】学习笔记三十四:游戏元素——常用编辑器组件

常用编辑器组件 unity的特色之一就是编辑器可视化,很多常用的功能都可以在编辑器中完成.常用的编辑器可分为两种:原有组件和拓展组件.原有组件是编辑器原生的一些功能,拓展组件是编辑器智商通过脚本拓展的新功能. 摄像机 摄像机是unity最为核心组件之一,游戏界面中显示的一切内容都得需要摄像机来照射才能显示.摄像机组件的参数如下: clear flags:背景显示内容,默认的是skybox.前提是必须在render settings 中设置天空盒子材质. background:背景显示颜色,如果没

马哥学习笔记三十二——计算机及操作系统原理

缓存方式: 直接映射 N路关联 缓存策略: write through:通写 write back:回写 进程类别: 交互式进程(IO密集型) 批处理进程(CPU密集型) 实时进程(Real-time) CPU: 时间片长,优先级低IO:时间片短,优先级高 Linux优先级:priority 实时优先级: 1-99,数字越小,优先级越低 静态优先级:100-139,数据越小,优先级越高 实时优先级比静态优先级高 nice值:调整静态优先级   -20,19:100,139   0:120 ps

【Unity 3D】学习笔记三十二:游戏元素——游戏光源

游戏光源 在3D游戏中,光源是一个非常具有特色的游戏组件.用来提升游戏画面质感的.如果没有加入光源,游戏场景可能就会显得很昏暗.在unity中提供了三种不同的光源类型:点光源,聚光灯,平行光. 点光源 顾名思义,点光源是从一个点向周围散发出光的光源,就像电灯一样.创建点光源在hierarchy视图中点击create--point light: 创建完以后,点击点光源对象,在右侧inspector视图中可以看到点光源的所有信息: type:光源的类型.有point(点光源),directional

angular学习笔记(三十)-指令(5)-link

这篇主要介绍angular指令中的link属性: link:function(scope,iEle,iAttrs,ctrl,linker){ .... } link属性值为一个函数,这个函数有五个参数:scope,iEle,iAttrs,ctrl,linker scope:指令所在的作用域,这个scope和指令定义的scope是一致的.至于指令的scope,会在讲解scope属性的时候详细解释 iEle:指令元素的jqLite封装.(也就是说iEle可以调用angular封装的简版jq的方法和属

angular学习笔记(三十)-指令(6)-transclude()方法(又称linker()方法)-模拟ng-repeat指令

在angular学习笔记(三十)-指令(4)-transclude文章的末尾提到了,如果在指令中需要反复使用被嵌套的那一坨,需要使用transclude()方法. 在angular学习笔记(三十)-指令(5)-link文章也提到了link函数的第五个参数linker. 这篇文章就来讲解一下transclude()方法(linker()方法),是怎么使用的,另外,它也是compile函数的第三个参数,用法一样. 下面就通过自己写一个简易的模拟ngRepeat的指令cbRepeat,来了解linke

angular学习笔记(三十)-指令(7)-compile和link(2)

继续上一篇:angular学习笔记(三十)-指令(7)-compile和link(1) 上一篇讲了compile函数的基本概念,接下来详细讲解compile和link的执行顺序. 看一段三个指令嵌套的代码: html: <body> <div ng-controller="compileCtrl"> <level-one> <level-two> <level-three> hello,{{name}} </level-

马哥学习笔记三十——tomcat

Java体系结构包含四个独立却又彼此相关的技术: Java程序设计语言 Java API Java Class文件格式 JVM: Java Virtual Machine JVM的实现方式: 1.一次性解释器,解释字节码并执行: 2.即时编译器(just-in-time complier) 依赖于更多内存缓存解释后的结果 3.自适应编译器 缓存20%左右代码,提高80%左右的速度: 运行时数据区: 线程私有内存区: 程序计数器 java虚拟机栈 线程共享内存区: 方法区 堆:java自动内存回收

angular学习笔记(三十)-指令(2)

本篇主要讲解指令中的 restrict属性, replace属性, template属性 这三个属性 一. restrict: 字符串.定义指令在视图中的使用方式,一共有四种使用方式: 1. 元素: E 2. 属性: A 3. 样式类: C 4. 注释: M restrict的值可以是上面四个字母的任意一个或多个的组合. 不指定的话默认为A. 二. replace: 布尔值.是否将指令元素替换,可以有两个值: 1.true: 替换整个使用指令的元素 2.false: 不替换整个使用指令的元素,而

angular学习笔记(三十)-指令(10)-require和controller

本篇介绍指令的最后两个属性,require和controller 当一个指令需要和父元素指令进行通信的时候,它们就会用到这两个属性,什么意思还是要看栗子: html: <outer‐directive> <inner‐directive></inner‐directive> </outer‐directive> 这里有两个指令,一个outer-directive指令元素,它里面又有一个inner-directive指令元素. js: app.directiv