【图像重建】使用FDK的三维谢普洛根幻影重建(Matlab代码实现)

简介: 【图像重建】使用FDK的三维谢普洛根幻影重建(Matlab代码实现)

👨‍🎓个人主

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

💥1 概述

Feldkamp,Davis and Kress(1984)提出一种基于圆轨道锥束重建的近似算法,这就 是我们现在的 FDK 算法。目前 FDK 是圆轨道锥束重建中最实用的算法。当锥角小于 5 度 的时候,可以得到不错的重建效果,但是随着锥角的增大 FDK 会带来越来越严重的伪影。 (图 4.1)

image.gif 编辑

锥束重建的几何结构如图 4.2 所示。

image.gif 编辑 image.gif 编辑

当扫描轨道在一个平面内时,比如圆轨道,锥束的投影数据是不完备的[8],因此只能进行近似重建。FDK算法实际上是二维扇束滤波反投影算法的三维推广,它首先对偏离中心平面的投影数据进行加权,然后利用类似与扇束算法的滤波反投影对物体进行重建。它具体过程可以分为以下两步[1]: 首先对投影数据进行加权滤波:

image.gif 编辑

在探讨使用FDK(Feldkamp, Davis, and Kress)算法进行三维谢普洛根幻影(Shepp-Logan Phantom)图像重建的研究时,我们可以从以下几个方面进行概述:

一、FDK算法概述

FDK算法是一种基于圆轨道锥束重建的近似算法,它实际上是二维扇束滤波反投影算法的三维推广。该算法在锥角较小(如小于5度)时,能够取得较好的重建效果。然而,随着锥角的增大,FDK算法可能会带来较为严重的伪影。FDK算法的具体过程主要包括对投影数据的加权滤波和滤波反投影重建两个步骤。

二、三维谢普洛根幻影

谢普洛根幻影(Shepp-Logan Phantom)是一种常用于计算机断层成像(CT)研究和算法验证的标准测试图像。该图像由多个椭圆和圆形组成,具有明确的边界和不同的灰度值,非常适合用于评估图像重建算法的性能。

三、使用FDK算法进行三维谢普洛根幻影重建的步骤

  1. 生成投影数据
  • 首先,使用Radon变换(或类似的投影方法)对三维谢普洛根幻影进行投影,生成一系列的投影数据。这些投影数据可以模拟CT扫描过程中探测器接收到的X射线强度信息。
  1. 加权滤波
  • 对投影数据进行加权滤波处理。这一步是为了校正由于扫描几何结构(如圆轨道扫描)导致的数据不完备性,并减少重建过程中的伪影。
  1. 滤波反投影重建
  • 使用滤波后的投影数据进行反投影重建。这一步骤类似于二维扇束滤波反投影算法,但需要在三维空间中进行。通过反投影,可以将投影数据转换回三维图像空间,从而得到重建后的三维谢普洛根幻影图像。

四、研究恩典

在使用FDK算法进行三维谢普洛根幻影重建的研究中,可以重点关注以下几个方面来体现研究的恩典(即研究的意义和价值):

  1. 算法性能评估
  • 通过与原始三维谢普洛根幻影图像进行对比,评估FDK算法在重建精度、伪影抑制等方面的性能。这有助于了解FDK算法在实际应用中的优缺点,并为其改进提供依据。
  1. 参数优化
  • 研究不同参数(如锥角、滤波器类型等)对FDK算法重建效果的影响,通过优化参数来提高重建图像的质量。这有助于发挥FDK算法的潜力,并推动其在更广泛领域的应用。
  1. 算法拓展与应用
  • 探索将FDK算法应用于其他类型图像或场景的可能性,如医学CT成像、工业无损检测等。通过拓展算法的应用范围,可以进一步推动相关领域的发展,并为社会带来更大的福祉。

综上所述,使用FDK算法进行三维谢普洛根幻影重建的研究不仅有助于评估算法性能、优化参数,还可以推动算法在更广泛领域的应用和发展。这一研究对于推动计算机断层成像技术的进步具有重要意义。

📚2 运行结果

image.gif 编辑

image.gif 编辑

部分代码:

n=180;%num of views,options 180,36,10

I = phantom(256);

M = 256;

% 对投影做傅里叶变换

R=radon(I,0:179);

width=length(R);

filter=2*[0:round(width/2-1), width/2:-1:1]'/width;

% 每一列做傅里叶变换

r_fft=fft(R,width);

% 每一列做傅里叶变换后滤波

r_fft_filter=r_fft.*filter;

%滤波后反变换(real取实部)

proj_ifft=real(ifft(r_fft_filter));

theta=linspace(0.5*pi,1.5*pi,180);

%反投影到x轴,y轴

fbp = zeros(256); % 假设初值为0

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]刘亮. 基于FDK的高精度锥束CT重建算法研究[D].中北大学,2007.

[2]郑晗. 用GPU加速基于FDK的全三维图像重建[C]//中国生物医学工程学会医学物理分会(Chinese Society of Medical Physics),北美华人医学物理师协会(North American Chinese Medical Physicist Association).长城2008国际医学物理大会资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取【请看主页然后私信】

相关文章
|
8天前
|
传感器 算法 安全
基于分布式模型预测控制DMPC的单向拓扑结构下异构车辆车队研究(Matlab代码实现)
基于分布式模型预测控制DMPC的单向拓扑结构下异构车辆车队研究(Matlab代码实现)
|
7天前
|
传感器 机器学习/深度学习 算法
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
|
10天前
|
负载均衡 算法 调度
基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)
基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)
82 11
|
10天前
|
机器学习/深度学习 传感器 算法
基于全局路径的无人地面车辆的横向避让路径规划研究[蚂蚁算法求解](Matlab代码实现)
基于全局路径的无人地面车辆的横向避让路径规划研究[蚂蚁算法求解](Matlab代码实现)
|
10天前
|
算法 安全 BI
基于粒子群算法的多码头连续泊位分配优化研究(Matlab代码实现)
基于粒子群算法的多码头连续泊位分配优化研究(Matlab代码实现)
|
7天前
|
机器学习/深度学习 并行计算 算法
基于二进制粒子群优化(BPSO)最佳PMU位置(OPP)配置研究(Matlab代码实现)
基于二进制粒子群优化(BPSO)最佳PMU位置(OPP)配置研究(Matlab代码实现)
|
8天前
|
机器学习/深度学习 运维 算法
【储能选址定容】基于多目标粒子群算法的配电网储能选址定容(Matlab代码实现)
【储能选址定容】基于多目标粒子群算法的配电网储能选址定容(Matlab代码实现)
|
10天前
|
机器学习/深度学习 数据采集 算法
基于VMD-CPA-KELM-IOWAl-CSA-LSSVM碳排放的混合预测模型研究(Matlab代码实现)
基于VMD-CPA-KELM-IOWAl-CSA-LSSVM碳排放的混合预测模型研究(Matlab代码实现)
|
7天前
|
机器学习/深度学习 数据采集 传感器
基于多尺度集成极限学习机回归(Matlab代码实现)
基于多尺度集成极限学习机回归(Matlab代码实现)
|
7天前
|
机器学习/深度学习 算法 Java
基于灰狼优化算法(GWO)解决柔性作业车间调度问题(Matlab代码实现)
基于灰狼优化算法(GWO)解决柔性作业车间调度问题(Matlab代码实现)

热门文章

最新文章