基于Radon变换的SR-CT断层图像重建系统
项目简介
本项目是一个基于MATLAB开发的同步辐射计算机断层扫描(SR-CT)数据处理与图像重建仿真系统。该系统利用数学上的Radon变换及其逆变换原理,模拟了从物体横断面到投影数据的生成过程,并实现了利用不同滤波器的反投影算法(FBP)将投影数据还原为横断面图像的功能。系统内置了图像质量评估模块和详细的可视化分析界面,适用于理解CT成像原理、测试重建算法性能以及进行无损检测数据处理的模拟实验。
功能特性
- 体模生成模拟:自动生成标准的Modified Shepp-Logan体模,用于模拟该分辨率下的物体横断面,作为“金标准”图像。
- 正向投影仿真 (Radon变换):模拟平行束X射线在0到179度范围内的扫描过程,生成正弦图(Sinogram)。
- 噪声模拟:在投影数据中添加高斯白噪声(强度系数0.02),以模拟实际SR-CT实验中可能受到的电子噪声或光子统计噪声影响。
- 多算法图像重建:基于滤波反投影(FBP)算法,实现了三种不同频域滤波器的重建效果对比:
*
Ram-Lak滤波器:保留高频信息,分辨率高但对噪声敏感。
*
Shepp-Logan滤波器:在频域进行平滑加窗,抑制高频噪声。
*
Cosine滤波器:提供更强的平滑效果。
- 图像质量量化评估:自动计算重建图像(Shepp-Logan结果)与原始图像之间的均方误差(MSE)和峰值信噪比(PSNR)。
- 多维度可视化分析:通过2x3的图表布局,直观展示原始图、带噪正弦图、不同滤波器的重建结果、误差分布图以及中心剖面线对比。
系统要求
- 软件环境:MATLAB R2016a 或更高版本。
- 工具箱依赖:Image Processing Toolbox (图像处理工具箱) —— 用于支持 phantom, radon, iradon 等核心函数。
使用方法
- 启动MATLAB环境。
- 将工作目录切换至项目所在文件夹。
- 直接运行主函数。
- 程序将在控制台输出初始化信息及重建质量指标(MSE和PSNR),并弹出一个包含六幅子图的窗口展示分析结果。
---
代码实现逻辑与算法分析
该系统的核心逻辑封装在单一的主流程函数中,具体实现步骤如下:
1. 参数设置与环境初始化
程序首先清理工作区(
clc,
clear,
close all)以确保无干扰运行。随后定义了关键仿真参数:
- 图像分辨率:设置为 256x256 像素。
- 扫描角度:定义了
theta 向量,范围覆盖 0度至179度,步长为1度,模拟180个投影角度。
2. 输入数据生成 (Phantom)
利用MATLAB内置的
phantom 函数生成 'Modified Shepp-Logan' 头部模型。这一步模拟了SR-CT中待扫描物体的理想横断面密度分布,作为后续计算重建误差的参考基准。
3. 正向过程:Radon变换与噪声添加
- Radon变换:调用
radon 函数对原始图像进行离散Radon变换。该函数计算图像矩阵在指定角度 theta 下的投影,返回投影数据矩阵(即正弦图) sinogram 和径向坐标 xp。 - 噪声注入:为了更贴近实际物理实验,程序构造了高斯白噪声矩阵,其强度为最大投影值的2%,并叠加到原始正弦图上,生成
sinogram_noisy。
4. 逆向过程:图像重建 (FBP算法)
利用
iradon 函数实现滤波反投影算法。为了对比滤波器性能,代码中分别执行了三次重建:
- Ram-Lak:使用线性插值和Ram-Lak滤波器。此结果边缘最锐利,但图像中的颗粒噪声也最明显。
- Shepp-Logan:本项目的主要评估对象,使用Shepp-Logan滤波器平衡了分辨率与降噪需求。
- Cosine:使用余弦窗函数,进一步平滑图像。
5. 后处理与质量评估
- 数值修正:对Shepp-Logan重建结果执行
max(0, ...) 操作,去除因吉布斯效应或计算误差产生的负值,符合X射线吸收系数非负的物理事实。 - 误差计算:计算原始图像与修正后的Shepp-Logan重建图像之间的绝对差值矩阵,生成
error_map。 - 指标计算:通过辅助函数
calculate_metrics 计算 MSE 和 PSNR。其中 PSNR(峰值信噪比)是衡量重建质量的关键指标,数值越高代表重建图像失真越小。
6. 结果可视化
程序创建一个2行3列的绘图窗口,详细展示以下内容:
- 原始图像:标准的Shepp-Logan体模。
- 带噪正弦图:使用 'hot' 热力图展示的正向投影数据,横轴为角度,纵轴为径向位置。
- Ram-Lak重建:展示高频保留较多的重建结果。
- Shepp-Logan重建:展示综合性能较好的重建结果,并在标题中标注了计算出的PSNR值。
- 误差分布图:通过 'jet' 彩色映射展示重建图像与原始图像的差异,蓝色代表低误差,红色代表高误差。
- 剖面线对比:提取图像中心水平行的数据,在同一坐标系下绘制原始值(蓝实线)和重建值(红虚线)的波形图,直观反映边缘拟合程度和内部平滑度。
关键函数说明
radon(I, theta): 计算图像矩阵沿指定方向的投影,模拟X射线穿过物体的衰减积分。iradon(R, theta, interp, filter, ...): 执行逆Radon变换。本系统利用其内置的FBP算法,将一维投影数据反投影回二维图像空间。imagesc(...): 用于显示具有缩放颜色的图像数据,配合 colormap 和 colorbar 实现数值的可视化。calculate_metrics(img1, img2): 自定义的辅助函数,用于计算两幅图像之间的均方误差和峰值信噪比,是量化评估重建算法精度的工具。