20世纪70年代中期,在医学领域出现了一种神奇装置,名为“计算机辅助 X 射线断层成像仪”(简称CAT或CT),它能够在不损伤病人的情况下,提供人体从头到脚各部位的断层X射线图像。利用CT,医生可以轻而易举地观察到人体内部哪怕是极其微小的病变和病灶分布,能够及早采取正确的治疗措施,从而拯救无数患者的生命。

这个神奇装置是如何发明的呢?这就要从科马克接受的一次任务说起。

1955年,还是开普敦大学物理学讲师的科马克接到一项任务,要为南非一家医院的放射科监测肿瘤患者接受放射性同位素治疗的剂量。接受治疗的患者体内的同位素剂量及其分布会受到严格的控制。这是因为如果同位素剂量太小,将达不到理想的疗效;剂量太大,则会危害患者的健康。同时,同位素的浓度应在肿瘤组织内较高,在健康组织内尽可能低。

科马克想,是否可以通过体外测量同位素发出的射线,来确定其在体内的浓度分布,以帮助医师确定最佳治疗方法?他很快发现这其实是一个数学问题,如果这个问题解决了,很多问题都会迎刃而解。1963年,他发表了名为“函数的直线积分表示及其放射学应用”的开创性论文,通过自己的努力解决了这个数学问题。

这篇论文中包括研制CT的完整理论,而且也提到了三个实际应用:①确定二维区域内 X 射线吸收率的变化;②确定物质中正电子湮灭的非均匀分布;③确定恒定成分物质中的密度变化。

其实,早在1917年,奥地利数学家拉东就发表过一篇论文,文中提出一种变换方法,即对于一个定义在一定区域上的函数f,如何从该函数在以不同角度穿过该区域的直线上的积分值,来求得其分布解的变换方法。这个方法后来被称为“拉东变换”。科马克的工作其实就是重新发现“拉东变换”,并把它用于放射医学。

人体内部不同的组织具有不同的X射线吸收率。所以,如果能够知道人体内X射线吸收率的分布,就可以重建体内组织的图像了,这正是CT所要做的。从数学的角度来看,一根直线上的X射线平均吸收率就相当于在该直线上对于吸收率函数的积分值。因此,如果能根据函数在直线上的积分值来求出函数在各点的值,那么,就可以实现CT的功能了。这正是科马克在1963年的那篇论文中所完成的工作。

图像重建
由已知弦图求解CT图像可利用的算法:
直接矩阵求解法(Direct matrix inversion)
迭代法( iterative)
傅里叶重建法(Fourier reconstruction)
反投影法(Back-projection)
滤波反投影法(Filtered back projection)

1、Radon变换揭示了函数和投影之间的关系。

中间圆环是我们想要求的物体,左边是发射源能够发射一种射线,右边为感应器能够感应到射线的强弱,假设物体上每一点对射线的衰减程度为函数f(x,y) ,也可以称f(x,y)为密度函数,根据射线穿过物体的衰减程度可以得到物体在该方向上每一点的衰弱强度(intensity),如上图所示,相当于每个方向上都可以测量出该物体的“厚度”,我们的目的就是,根据不同方向上的物体的“厚度”求出物体上每一点的衰减程度.

如上图所示,转换为数学表达可以表示为一种线积分,直线 L 穿过 f(x,y),所对应的强度(intensity)就是函数f(x,y)在直线 L上的线积分

我们的目标是根据不同的线 L求出 f(x,y)的表达式,但定义里面包含f(x,y)的积分,想要求 f(x,y)的具体形式就要把该积分去掉,前人就想到了用傅立叶变换

前面的描述中说的是“在某一个方向上的每一个点的”衰减程度 → 某一个方向上的每一个点都可以表示为一条直线 L,那么我们需要用该方向来定义直线L,

先来看看 L的定义:

如上图所示,我们设直线方程为 y = kx + b ,直线 L远离原点的法线方向为n→=(cos⁡(θ),sin⁡(θ)),原点到直线的距离为 P ,则如上图公式所示,直线 L可表示为:

可以看到 θ 即为上图所说的方向, P 为该方向上的每一点放射源,则根据 (θ,P) 可以定义 拉东变换

如果我们希望获得这个切片的全貌,我们可能需要从多个角度进行多次扫描,通过一维构建二维,在这里我们可以把对应的和制作成一个二维坐标系来绘图,叫做Sinogram:

右图为Sinogram图,纵坐标为度数(360度等间距划分为300个间隔),横坐标自然是线到原点的距离。也就是说我们通过300次扫描(绕着切片一周)获得了Sinogram。从左边切片到有右边切片的过程我们叫做前向投影Forward Project。

2. 傅里叶切片定理 Fourier Slice Theorem

我们通过不同角度的投射得到了Sinogram。但是请注意,医疗实践中我们对于上图中的左图的信息是一无所知的,我们仅仅获得了右边的Sinogram(也就是说左边是空白)。那么我们如何通过Sinogram获得左边的图呢?

在此假设大家都明白傅里叶变换及其逆变换(如果不清楚的可以寻找相关资料,此为一信号处理方面十分重要的应用),即将时空域的信号转为频率域信号以及将频率域信号复转为时空域信号。傅里叶切片定理规定了如下几个要素:

我们知道我们希望求出f(x,y),那么这个f(x,y)根据某种投影(如拉东变换)再进行一维傅里叶变换,等价于这个f(x,y)的二维傅里叶变换的切片

在这里解释切片:我们将原函数f(x,y)进行二维傅里叶变换后得到频率域坐标系(可以当作将原来的XY坐标系转移到某种UV坐标系),其切片为按照参数方程在该空间上选定的值,即(该θ角度可以理解成拉东变换的投影角度

为了获取 f(x,y)  ,基于我们已经知道的Sinogram(对应上图的 P θ) ,我们可以得到多角度的切片,根据这些切片重新组合较为完整的(实际上我们不可能也不需要填充整个二维傅里叶空间,只需要有限测量的几个投影即可)二维傅里叶空间,再将其进行逆变换获得到f(x,y)

傅立叶变换

在积分形式下得出函数的表达式第一想到的就是傅立叶变换,因为傅立叶变换及其性质里面就有把积分约掉的方法,这里用到的是傅立叶变换的卷积性质,为了能说清楚,自己也清楚一下

卷积:

CT成像:在医学图像成像时,是通过x射线穿过人体来实现的,射线穿过人体后会衰减,然后被仪器测量到,也就是说我们已经知道了拉东变换的结果,需要通过这个结果还原出射线穿过的人体剖面,即拉东逆变换。

其余还有反投影,滤波反投影方法等,反投影算法出现星状伪影的现象,用滤波反投影运用了卷积,弥补了反投影算法的缺陷............

CT图像重建的更多相关文章

  1. DICOM-RT:放疗领域中的各种影像

    背景: DICOM-RT系列博文着眼于DICOM3.0中对放疗领域的补充标准,即DICOM-RT.为了方便兴许对DICOM-RT中相关IOD.SOP概念的理解,专栏最近做了放疗相关知识点的普及. PS ...

  2. [转] 中国压缩传感资源(China Compressive Sensing Resources)

    昨天查压缩感知的资料,无意间看到一位浙大女神Rachel Zhang的博客,果断关注了.我感觉应该向她好好学习.下面转自她的CSDN博客.网址是http://blog.csdn.net/abcjenn ...

  3. 医学CT图像特征提取算法(matlab实现)

    本科毕设做的是医学CT图像特征提取方法研究,主要是肺部CT图像的特征提取.由于医学图像基本为灰度图像,因此我将特征主要分为三类:纹理特征,形态特征以及代数特征,每种特征都有对应的算法进行特征提取. 如 ...

  4. DICOM图像像素值(灰度值)转换为CT值

    CT值的单位是Hounsfield,简称为Hu,范围是-1024-3071.用于衡量人体组织对X射线的吸收率,设定水的吸收率为0Hu. 在DICOM图像读取的过程中,我们会发现图像的像素值有可能不是这 ...

  5. 关于统计变换(CT/MCT/RMCT)算法的学习和实现

    原文地址http://blog.sina.com.cn/s/blog_684c8d630100turx.html 刚开会每周的例会,最讨厌开会了,不过为了能顺利毕业,只能忍了.闲话不多说了,下面把上周 ...

  6. ct任务添加与中控机批量后台操作

    ct 任务nohup sh ./bin/start.sh </dev/null >/dev/null 2>&1 & 中控机批量 for h in `get_hosts ...

  7. CT值及CT常用窗宽、窗位 [转]

    一.常用CT值 CT值的含义是:每个反应管内的荧光信号达到设定的域值时所经历的循环数.研究表明,每个模板的Ct值与该模板的起始拷贝数的 对数存在线性关系,起始拷贝数越多,Ct值越小.利用已知起始拷贝数 ...

  8. VTK三维重建(2)-根据脚部骨骼CT的三维重建和显示

    [效果演示] 根据脚部的骨骼CT扫描的照片,利用VTK完成读取和三维重建. [程序实现] void main () { vtkRenderer *aRenderer = vtkRenderer::Ne ...

  9. ssh -CT -o BatchMode=yes 用户名@主机名

  10. CT 来值班,让您安心过新年!

    春节,盼了整整一年的节日,我们一定要抛开工作,狠狠的开心,狠狠的幸福,但是作为苦逼的运维,你们真的能完全抛开工作(对网站不闻不问)吗?OneAPM CT 24 小时监控您的网站,让您无忧无虑过新年. ...

随机推荐

  1. [转帖] 这grep咋还不支持\d呢(BRE,ERE,PCRE)

    https://www.cnblogs.com/codelogs/p/16060372.html 简介# 对于刚使用Linux不久的同学,肯定会遇到这个问题,就是用grep匹配数字时,发现\d匹配不了 ...

  2. 记一次 .NET某工控自动化系统 崩溃分析

    一:背景 1. 讲故事 前些天微信上有位朋友找到我,说他的程序偶发崩溃,分析了个把星期也没找到问题,耗费了不少人力物力,让我能不能帮他看一下,给我申请了经费,哈哈,遇到这样的朋友就是爽快,刚好周二晚上 ...

  3. js赋值的两种方式

    第一种 let obj=[ { value:undefined } ] obj[0].value.value='zahngsan' obj[0].value.label='张三' 机智的小伙伴,可能已 ...

  4. 为游戏接入ios sdk的oc学习笔记

    开发手机游戏,需要接入ios的sdk,截止2021年7月23日虽然swift已经推出一些年头,但对于大部分的渠道sdk,还是oc的代码. oc不仅仅用来开发ios,还是mac上的app开发语言 从新手 ...

  5. Spring声明式事务控制配置

    xml配置(配置文件) <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="h ...

  6. PicGo + Gitee 实现 Markdown 图床

    最近再研究图床,注册的阿里云域名备案还在审批,所以七牛云图床暂时没用,所以试下用PicGo+ Gitee PicGo - 基于 electron-vue 开发的图床工具 PicGo目前支持了微博图床, ...

  7. 全世界 LoRA 训练脚本,联合起来!

    来自社区的 SD-XL Dreambooth LoRA 微调最佳实践指南 太长不看版 我们把 Replicate 在 SDXL Cog 训练器中使用的枢轴微调 (Pivotal Tuning) 技术与 ...

  8. flash8.ocx或其附件之一不能正确注册

    运行书中自带光盘中的程序,在该程序的readme说明中,提到这类错误,解决方式是: 因为是免安装程序,需要运行"setup"文件夹下的setup.exe文件,安装控件.在安装完成后 ...

  9. 23.1 SEH之终止处理--《Windows核心编程》结构化异常处理

    (structured exception handing)SEH 包含终止处理和异常处理.本章讨论终止处理. 一.终止处理 终止处理程序确保不管一个代码块(被保护代码)如何退出的,另一个代码块(终止 ...

  10. NC15532 Happy Running

    题目链接 题目 题目描述 Happy Running, an application for runners, is very popular in CHD. In order to lose wei ...