CT图像重建算法------迭代投影模型之距离驱动算法(Distance-Driven Model,DDM)

article/2025/3/2 3:16:36

一、图像重建算法分类

CT图像重建算法主要有3类:1、反投影法;2、迭代重建算法;3、解析法:包括滤波反投影法和傅里叶变换法

二、迭代重建算法分类

迭代重建算法在求解的过程中需要不断地求解矩阵元素,目前系统矩阵的建模方式主要分为4种,分别为
(1)像素驱动模型(2)射线驱动模型(3)距离驱动模型(4)面积积分模型。

(1)像素驱动模型(PDM)通常应用在FBP重建反投影的计算;

(2)射线驱动模型(RDM)多用于迭代算法中的正向投影算法,这种模型下,射线不再看作是有宽度的,它的原理是通过对射线经过的像素进行加权求和来模拟线积分。根据不同的加权模型,其算法实现也不同。
  包括:Joseph算法(使用线性插值)、Siddon算法(使用临近插值,也是射线驱动模型中最经典算法)
  其中Joseph算法使用线性插值模型,其重建质量比Siddon算法要理想,但由于计算量大导致重建速度较慢。
(3)距离驱动模型(DDM)相较于前两种模型较为先进。这种模型下考虑到了像素与探测器单元的宽度。另还有改进的距离驱动模型(IDDM);

(4)面积积分模型(AIM)将射线穿过像素时与像素单元边界形成的图形面积作为权因子。
本文主要介绍迭代重建算法中的距离驱动投影算法

三、距离驱动算法原理

距离驱动算法与Joseph算法相似,只是计算权重的方式不同。
同样的,先从二维平面来说,如图1所示:
在这里插入图片描述
                      图1 距离驱动算法原理图
  对于二维平面来说,距离驱动的思想是图像像素沿着射线方向可以映射到探测器上的一个确定位置,因此可以计算出图像像素映射和探测器像素的重叠长度,将重叠长度归一化后作为累加权重即得到投影值。对于三维情况下,就相当于计算射线穿过的某体素的体积映射到探测器平面上的面积。
  对于投影轴的选择,同样的:
  若射线更平行于Y轴,则在Y轴上求和,在X轴上插值。也就是在X轴上投影,最后在Y轴方向求和。
  反之,若射线更平行于X轴,则在X轴上求和,在Y轴上插值。也就是在Y轴上投影,最后在X轴方向求和。
在这里插入图片描述
                         图2 射线的两种情况

  以在X轴投影为例,二维情况下,重建图像被看作一个给定大小的网格像素图像(m*n),像素大小为p。在模拟投影过程中,首先连接焦点和探测器像素中心,并将射线映射到每一行/列像素的中心线(映射轴),比如在X轴投影,则将映射轴设为每一列的行的中心线,如图2所示。
在这里插入图片描述

                           图3 虚拟投影轴示意图
  焦点与探测器上某一像素的左右边界中心点连线可以得到两条射线L1、L2,这两条射线将与虚拟投影轴相交于两点coord1、coord2,遍历体素所有的映射点,即体素边界中点,计算两个映射点之间的距离,然后用这些长度来决定图像像素对探测器像素的贡献值。
在这里插入图片描述
                      图4 距离驱动投影值计算方式示意图
假如对于一个虚拟轴上所有点映射结果如图4所示:
在这里插入图片描述
                      图5 距离驱动映射点细节放大图
其中P1、P2表示体素边界中心点,D1-D11表示探测器上各边界与焦点连线与虚拟投影轴的交点,则此行图像像素对探测器像素的贡献就可以写成:
在这里插入图片描述
  上式表达的意思是,探测器像素D3,4部分得到的投影值是全部由P1,2贡献的;而探测器像素D5,6部分的投影值是由体素P1,2和P2,3两部分体素的贡献组成的,而具体贡献值为多少,就由体素边界点的位置距离决定,也就是P2-D5、D6-P2,这个值也就是线性插值计算像要求得的权因子。具体过程为(以X轴插值为例):
  1)判断相交,寻找交点
  首先确定采样角以及所要使用的探测器像素确定射线L,而后判断L是否与重建区域相交,若相交,相交在哪一层像素的中心点所在平面上,并求出交点坐标。判断相交的方式为遍历重建区域每一层像素中心点平面,也就是每一层中心点的纵坐标,判断射线是否与当前遍历的层相交,若相交则求出交点坐标,若不想交则继续遍历下一层。
  (2)计算权因子
  对于有交点的那一层,开始利用上述方式计算权因子。
(3)
  当某一采样角度下,当前探测器像素对应的射线在某一层的插值结算结束后,即寻找下一个相交的层继续计算;
  当所有层遍历结束后,转换到下一个探测器像素,继续以上步骤;
  当所有探测器像素均计算完毕后,就继续下一个采样角度的所有计算。
  至此,一个简单的维距离驱动算法过程执行完毕。

四、三维距离驱动算法

同样的,三维距离驱动算法原理是与二维一致的,探测器由单排变成多排,同样不考虑探测器的高度,三维CT系统光束一般为锥束,结果原理图如图6所示,只是需要考虑两个观察角度下的权因子,三维与二维不同的需要改动的部分有:
在这里插入图片描述
(图仅为示意图,实际坐标系建立需根据自己,本人建立的坐标系是S、O、D三点在Y轴上,探测器长边沿Y轴,短边沿Z轴)
(1)对于三维算法中,探测器两边界对应的射线产生的投影值是由两个平面共同决定的,例如在X轴投影的情况下,需要观察XOY平面和YOZ两个平面产生的权重,两者进行相乘运算才得到最终的权因子;
(2)在计算权因子时,存在探测器接收到1个、2个甚至3个体素的共同作用,在编写程序时需要注意考虑多体素情况,不要漏下中间体素。
(3)边界情况与Joseph算法相比较简单,只需要判断交点是否在重建区域内部即可,不存在最大允许距离。即探测器边界射线的交点在重建区域外侧(不包括重合情况)就认为不相交。
(4)在计算权因子过程中,涉及到计算探测器上各体素投影的贡献值,这个值是根据在探测器像素中投影的长度占比确定的,因此,若有多个体素对同一探测器像素有影响时,涉及到计算多端距离,这时线段计算的顺序是没有要求的,即从负轴-正轴或是从正轴-负轴都可以。如图中所示,从左向右计算和从右向左计算都可,因为最终需要将每一段的距离与另一个视角所得距离分别相乘,即卷积运算,运算结果在最终的权因子计算中进行加和,因此不分先后。
在这里插入图片描述


http://chatgpt.dhexx.cn/article/VsmuP8Yt.shtml

相关文章

图像复原和重建技术

1、常见的图像噪声模型  图像复原是将图像退化的过程加以估计,并补偿退化过程造成的失真,以便获得未经干扰退化的原始图像或原始图像的最优估值,从而改善图像质量的一种方法。  典型的图像复原方法是根据图像退化的先验知识建立一个退化模型,以此模…

数字图像处理——第五章 图像复原与重建

数字图像处理——第五章 图像复原与重建 文章目录 数字图像处理——第五章 图像复原与重建写在前面1 图像退化/复原过程的模型2 噪声模型2.1 高斯噪声2.2 椒盐噪声 3 仅有噪声的复原——空间滤波3.1 均值滤波器3.2 统计排序滤波器3.3 自适应滤波器 4 用频率域滤波消除周期噪声5…

机器人群控避障算法ORCA

最优互补避碰ORCA算法 建议参考资料 ORCA-有关机器人群碰撞避免算法解读(柳朦朦) 导航动态避让算法RVO的优化ORCA(Optimal Reciprocal Collision Avoidance)-漫漫之间n Reciprocal n-body Collision Avoidance英文PDF 避障算法-VO、RVO 以及 ORCA&a…

限流算法的原理

计数器算法 在一定时间内,对处理的请求数进行计数,每次到达时间临界点则计数器清零。在一定时间间隔内,若计数器数字超限,则进行限流。 该算法的问题是,在两端临界点附加可能出现两倍的流速。 滑动窗口算法 基于计…

A*算法图解

A*(A-star)算法是一种静态网路中求解最短路径最有效的直接搜索算法。在电子游戏中最主要的应用是寻找地图上两点间的最佳路线。在机器人领域中,A*算法常用于移动机器人路径规划。 为了便于理解,本文将以正方形网格地图为例进行讲解…

a 算法原理 java_最短路径A*算法原理及java代码实现(看不懂是我的失败)

算法只要懂原理了,代码都是小问题,先看下面理论,尤其是红色标注的(要源码请留下邮箱,有测试用例,直接运行即可)A*算法百度上的解释:A*[1](A-Star)算法是 算法只要懂原理了,代码都是小问题&#…

A*算法原理简析

引言 。 A算法是一种启发式的搜索算法,它是基于深度优先算法和广度优先算法的一种融合算法,按照一定规则确定如何选取下一个节点。在介绍A算法之前,需要了解一下什么是启发式搜索算法,深度优先算法以及广度优先算法。 启发式搜…

A*算法原理

A* 算法 概述 虽然掌握了 A* 算法的人认为它容易,但是对于初学者来说, A* 算法还是很复杂的。 搜索区域(The Search Area) 我们假设某人要从 A 点移动到 B 点,但是这两点之间被一堵墙隔开。如图 1 ,绿色是 A ,红色是 B…

A Star算法原理及其实现

A -Star算法 A*(A-Star)算法是一种求解最短路径最有效的直接搜索方法,也是许多其他问题的常用启发式算法。 一、简介 二、寻路方式 三、运行机制 四、常用估价算法 五、示例 一、简介 A*(A-Star)算法是一种求解最短路径最有…

sift算法原理,按步骤记录

sitf算法是一种描述图像特征的,重要的,基础的方法。主要由以下几个步骤构成: 0.尺度空间理论 尺度空间理论认为,人眼在认知画面时,在不同的尺度上使用的是不同特征,例如观察树叶时使用的是小尺度特征&…

DQN算法流程及原理

相关名词解释: Agent:智能体;s—state:状态(放在格子游戏中,就是智能体的位置坐标(x,y))a—action:智能体采取的动作(例如上下左右)r—reward:奖励&#xff…

D*算法原理与程序详解(Python)

提示:前文写了D搜索算法,是一种贪心算法。 文章目录 一、D*算法是什么?二、原理以及代码步骤1.原理分析2.代码解释 总结 一、D*算法是什么? D*算法也是用于机器人路径规划问题的启发式方法,它是一种局部规划方法&…

unityA星寻路算法基础原理

作者: 风不停息丶 文章目录 🧑‍💻A星寻路简介👉代码基础架构👍代码实现格子类寻路管理类效果 结尾总结 🧑‍💻A星寻路简介 A*寻路就是用来计算玩家行进路径的,通过它可以计算出避开…

【YOLO系列】YOLO.v1算法原理详解

YOLO(You Only Look Once)系列算法原理 前言 :详细介绍了yolo系列目标检测算法的原理和发展过程。 系列: 【YOLO系列】YOLO.v1算法原理详解 【YOLO系列】YOLO.v2算法原理详解 【YOLO系列】YOLO.v3算法原理详解 【YOLO系列】YOLO.v4 & YOLO.v5算法原…

A*算法原理与实现

前言 A*算法最初发表于1968年,由Stanford研究院的Peter Hart, Nils Nilsson以及Bertram Raphael发表。它可以被认为是Dijkstra算法的扩展。 由于借助启发函数的引导,A*算法通常拥有更好的性能。 一、 A*吸取了Dijkstra 算法中的cost_so_far,为…

激光SLAM之NDT算法(1)算法原理

/在激光SLAM之NDT算法(2)-建图中我会给出实测可用的建图代码,并予以解释代码结构,这里就先讲讲原理吧!!!/ 无人车激光SLAM系统简单可以分为建图和定位两部分,无人车的定位问题,实际上就是要找出无人车当前在地图的那个位置&#x…

A*算法的原理及应用

A*算法的原理 A* 算法是一种高效的启发式搜索算法,在二维的栅格地图上寻路效果好,它通过估算节点的代价评估函数值并作为节点的综合优先级,当选择下一个需要遍历的节点时,再选取综合优先级最高的节点,逐步地找到最优路…

Bresenham 画圆算法原理

文章目录 前言Bresenham 画圆算法原理两个近似构造判别式圆与网格点的关系关系由来关系含义p i p_i pi​ 递推画圆程序伪码圆与网格点的关系图示前言 首先简要介绍一下生成圆的方法: 直接利用圆的方程生成圆利用圆的对称性生成圆方法一由于会涉及到浮点运算等因素,不采取该方…

Js中读取、移除属性及隐藏组件方法研究

添加、移除组件属性方法: $(".class名").attr("属性名","属性值");//设置指定属性 $(".class名").attr("属性名");//读取指定属性值 or document.getElementById("id值").getAttribute("属性名…

js获取属性值,自定义属性,修改移除属性值

补充&#xff1a;由于不清楚一些属性是内置属性还是自定义属性 所以h5规定 自定义属性使用date-开头作为属性并赋值 案例1: <body><div date-index"1"></div> </body> <script>var div document.querySelector(div);console.log(div…