DRR(Digitally Reconstructured Radiograph)分类及原理

DRR(Digitally Reconstructured Radiograph),全称为数字重建放射影像,其是通过将三维 (3D) 图像(Volume)透视投影到二维 (2D) 图像平面上而生成的射线照相图像的模拟。DRR被广泛应用于CT模拟定位、图像引导放射治疗(IGRT)及计算机辅助外科等领域。

目前,DRR重建算法主要采用光线投射法(Ray casting)实现。光线投射是一种经典体绘制方法,在计算机图形学和三维可视化方面得到了广泛的应用,其采用光线投射的原理来模拟X线穿透人体并经过人体组织吸收后衰减而产生DRR图像的过程。

Digitally reconstructed radiographs (DRR) are a simulation of radiographic images produced through a perspective projection of the three-dimensional (3D) image (volume) onto a two-dimensional (2D) image plane.

分类

按照计算机硬件实现分类:

  • 基于CPU的
  • 基于GPU的:部分并行化操作放在GPU上进行

按照插值的对象不同进行分类:

  • 基于CT的(CT-based):将模拟的光源和CT中每个体素值(Voxel)连线,连线再延伸至模拟的X光探测器(Detector),在模拟的Detector上重新建立坐标系网格,在每个pixel的内部,按照距离插值求积分,重建出DRR。
  • 基于探测器的(Detector-based):将模拟的光源和模拟的X光探测器(Detector)上每个pixel连线,连线会经过放在两者之间的CT的,按照连线经过的体素进行插值,求取整个连线经过的体素的总和,重建出DRR。

光线投射生成DRR的方法

传统的直接插值法

直线插值方法的的主要过程是:从X线出束口发出多条X射线穿过三维体数据;在每条射线上进行等间距采样,并利用三线性插值方法由距离采样点最近的8个体素计算出该采样点的CT值对应的衰减系数;然后从前至后对所有采样点的衰减系数进行累加,得到该条射线对应成像平面的像素点的灰度值。针对每条射线重复上述过程后,将计算得到的所有像素点合成为一幅完整的DRR图像。基于光线投射方法的DRR生成如图所示:

SAD 为 X 射线源点到体数据等中心的距离,SFD 为 X 射线源点到 DRR 成像平面的距离。从 X 射线源点出发的射线条数与 DRR 图像的像素点个数相同,两者之间是一一对应的关系。为了简化采样计算过程从而提高采样效率本文选择等步长和三线性插值来计算采样点的 CT 值。该方法也是基于探测器的(Detector-based)的一种DRR生成方式。

换一种方法说,传统直接插值的光线投射算法,其具体实现过程可以描述为:首先利用计算机模拟一个虚拟点光源,用来表示传统 X 射线光源,然后从该点发射出若干条虚拟 X 射线,射线穿过三维数据集,照射到垂直与射线中线的投影面板上。投影面板上所有射线的投影点即是 DRR 图像的所有像素点。在投射过程中, X 射线按照既定的步长穿过三维数据集,当射线每经过一个 CT 切片,算法都会模拟真实 X 射线穿过人体时的衰减而得到一个 CT 值,如果射线与切片的交点恰巧不是像素点的时候就需要通过插值算法来估算出此时的 CT 值。最终将每条射线上所有交点的 CT 值累加,通过一定的转换方式将累加值转换成图像灰度,就获得了 DRR 图像。

总之,在传统直接插值的光线投射算法的实现过程中,需要获得每条射线与三位体数据的交点的 CT 值,若交点恰巧没有位于体素点上,则需要通过插值的方式来估算出该点的 CT 值,这个的过程需要大量的插值和求整运算,所以大大降低了 DRR 图像的生成速度,因此会有多种方式来加速该射线生成方式,例如通过三维 Bresenham 直线生成算法改进来快速的生成一条射线

Bresenham 直线生成算法

Bresenham 算法是一种高效的直线生成算法,传统的 Bresenham 算法应用在二维空间内,其原理如图所示:图中点 A, D, E 为实际像素点,点 B 为实际直线与 AD 连线的交点。 该算法所要完成的任务就是判断将点 B 绘制在 D 点,还是绘制在 A 点。最为简洁的方法就判断 AB 与 BD 的距离,如果 AB>BD,则将 B 绘制在 D点,反之将其绘制在 A 点。另外一种辨别方法就是判断点 B 与点 C 的坐标大小,若B>C,则绘制在 A 点,若B<C ,则绘制在 D 点。

知乎上面也有个专栏很形象地介绍了该过程:https://zhuanlan.zhihu.com/p/106155534

使用Bresenham 算法,就能够快速的获得这条直线与三维数据集的交点序列,这个序列中的每一个像素点都是最接近真实直线与三维数据集的每一个交点,这样就省去了“传统直接插值的光线追踪算法”的插值和求整运算,只需要进行少量的浮点运算,就能够获得每一条射线上交点的总的 CT 值,大大加快了 DRR 图像的生成速度。

SiddonJacobs的光线追踪算法

该方法在itk remote module中的TwoProjectionRegistration有进行实现(链接:https://github.com/InsightSoftwareConsortium/ITKTwoProjectionRegistration),该库也可以直接在编译安装itk的过程中直接build

该方法最初由R. L. Siddon在文章"Fast calculation of the exact radiological path for a 3-dimensional CT array"中介绍,然后由F. Jacobs, E. Sundermann, B. D. Sutter, and I. Lemahieu在文章"A fast algorithm to calculate the exact radiological path through a pixel or voxel space"进行了改进。如果要看得很细节,可以参考后者的文章"A fast algorithm to calculate the exact radiological path through a pixel or voxel space"

光线追踪算法究其细节,就是要获得该条射线穿过了哪儿些体素,然后同时要获得这些体素的CT值以及光线穿过该体素时候经过的长度。

SiddonJacobs算法的优势之处就在于,使用α来表示该条射线归一化的长度,其值为0则表示该点是在光源点,其值为1则表示该点是在Detector上的像素点,使用该α可以同时追踪光线和在CT上的像素位置。

下面来详细说明该图,每个方块代表一个体素(图上为了方便只写2D情况,3D下可以很简单地类比过去),每一条横线代表一个x平面,每一条纵线代表一个y平面,p1为光源,p2为Detector上的像素点。在最开始,只知道CT上每个x y平面的物理空间位置以及p1和p2点的物理空间位置,并不清楚入射点出射点的坐标,甚至不清楚光线是否与CT相交。

  1. 首先,通过文章"A fast algorithm to calculate the exact radiological path through a pixel or voxel space"里的公式,将所有的α求出来,α由两个数组构成,分别是“光线与全部x平面的交点” 以及 “光线与全部y平面的交点”,利用该公式,α又同时能反过来算出是与哪儿个x平面或者哪儿个y平面相交(这点很重要,因为最后求和的时候,需要累加光线与体素相交的长度及其对应的CT值,CT值就需要知道是哪儿个像素才行)。

  2. 其次,将全部的α升序排列,然后邻位相减,这样就可以得到每小段长度的比例。

  3. 最后,将上述邻位相减的α值,依次乘以光线总长度,依次得到每小段光线的真实长度;再通过第一步骤计算α的公式,依次反过来拿回每小段光线经过像素的坐标,从而得到每小段光线经过像素的CT值,将两个数组对应相乘,再求和,即可得到该条光线的模拟x光射线的数值。

DRR(Digitally Reconstructured Radiograph)分类及原理相关推荐

  1. DRR(Digitally Reconstructured Radiograph)在医学影像处理的应用

    本文由Markdown语法编辑器编辑完成. 1. DRR图像的概念 DRR(Digitally Reconstructured Radiograph),全称为数字重建放射影像.它是指射野方向或从类似模 ...

  2. 主流激光雷达分类及原理

    主流激光雷达分类及原理 1. 机械式激光雷达 2. 混合固态激光雷达 2.1 MEMS 振镜激光雷达 2.2 旋转扫描镜激光雷达 2.3 楔形棱镜旋转 2.4 二维扫描振镜激光雷达 3. 纯固态激光雷 ...

  3. 机器学习 鸢尾花分类的原理和实现(一)

    机器学习 鸢尾花分类的原理和实现(一) 前言: 鸢尾花数据集是机器学习中的经典小规模数据集.通过查阅资料和视频进行学习,将整个实验的学习心得和实验过程分享,希望对喜爱机器学习并入门的新手提供帮助,同时 ...

  4. 【转】什么是场效应管(FET)-场效应管(FET)分类、原理、用途等知识详解

    什么是场效应管(FET)-场效应管(FET)分类.原理.用途等知识详解 场效应管和双极晶体管不同,它属于仅以电子或空穴中的一种载子动作的晶体管.按照结构.原理可以分为:1.接合型场效应管 2.MOS型 ...

  5. 【机器学习】总结了九种机器学习集成分类算法(原理+代码)

    大家好,我是云朵君! 导读: 本文是分类分析(基于Python实现五大常用分类算法(原理+代码))第二部分,继续沿用第一部分的数据.会总结性介绍集成分类算法原理及应用,模型调参数将不在本次讨论范围内. ...

  6. 总结了九种机器学习集成分类算法(原理+代码)

    公众号后台回复"图书",了解更多号主新书内容作者:云朵君来源: 数据STUDIO 导读: 本文是分类分析(基于Python实现五大常用分类算法(原理+代码))第二部分,继续沿用第一 ...

  7. 计算机机房空调原理,机房空调分类以及原理

    机房空调分类以及原理 2013.10.29 机房空调按是否自带冷源方式可以分为直接膨胀式(DX)机组和通冷型(CW)机组,DX机组自身具有制冷系统.CW机组自身不带制冷系统,需要利用冷水机组提供低温冷 ...

  8. 压力变送器的定义、分类、原理、特点和作用

    压力变送器的定义.分类.原理.特点和作用 一般来说,压力变送器主要由测压元件传感器(也称作压力传感器).测量电路和过程连接件三部分组成. 它能将测压元件传感器感受到的气体.液体等物理压力参数转变成标准 ...

  9. 一篇读懂分布式架构下的负载均衡技术:分类、原理、算法、常见方案等

    1.引言 关于"负载均衡"的解释,百度词条里:负载均衡,英文叫Load Balance,意思就是将请求或者数据分摊到多个操作单元上进行执行,共同完成工作任务. 负载均衡(Load ...

最新文章

  1. 机器学习算法python实现
  2. dbus-launch(转)
  3. acctmod-ftp.sh
  4. 有人质疑面向对象编程?
  5. SecureCRT上传和下载文件(下载默认目录)
  6. The Reflection And Amplification Attacks NTP Reply Flood Attack Based On NTP
  7. IIS 6.0曝远程代码执行漏洞 安全狗可拦截
  8. android intent服务器,使用android intent从服务器打开pdf文件
  9. PostgreSQL使用pgAdmin3不能编辑表里的数据
  10. EC6110M/T-Q21A/C/E-EC6108V9/V9C/V9U/V9A/V9E/V9I/V92/V97-V9C悦me/CA全系列包
  11. 微信小程序+PHP实现登录注册(手把手教程)
  12. pytorch实现resnet50
  13. 为什么要有红黑树?什么是红黑树?
  14. Thinkpad T430 Win8 换 Win7
  15. 基于php抑郁症自检测及初级自治疗网站
  16. 为什么很多聪明的人,却一辈子在社会最底层?
  17. 魅族 刷机android 6.0,乐视X900+安卓6.0 魅族Flyme6刷机包 最新6.7.12.29R付费纯净版
  18. 发个谷歌,百度网盘,谷歌学术可用的网站
  19. 从GMT时间转换到当地时间(北京时间)
  20. 无源定位入门(三)AOA(2)测角代码(MUSIC和ROOT—MUSIC)

热门文章

  1. python 自相关序列(ACF)
  2. 若依分离版的文件上传
  3. 第一个项目(奶茶APP)
  4. 【Windows】【Audio】Windows 11 声音配置
  5. 计算机发展史上最著名的两位鼻祖
  6. 【Try to Hack】防火墙(一)
  7. linux时间校对工具adjtimex
  8. S3C2440 与 NAND FLASH(K9F1208)的接线分析
  9. 机场生产运行数据统计指标-第三篇-客货邮行类
  10. 潜水员 ← 二维费用的背包问题