Matlab去除CT扫描图像环形伪影的实现方法

news/2026/1/25 16:12:54/文章来源:https://www.cnblogs.com/trymybug/p/19530015

CT扫描图像中的环形伪影(Ring Artifacts)主要由探测器通道响应不一致、数据采集偏差或硬件缺陷引起,表现为图像中同心圆环状的亮度/对比度异常,严重影响图像质量和诊断准确性。Matlab提供了多种去除环形伪影的方法,涵盖投影域滤波图像域变换高级算法(如小波变换),以下是具体实现步骤和代码示例:


一、基础方法:投影域高斯滤波(适合轻度伪影)

该方法通过在投影域(而非图像域)对原始数据进行滤波,抵消探测器通道的不一致性,步骤简单且易实现。

1. 方法原理

  • 投影数据平均:对同一角度的多个投影数据进行平均,降低随机噪声。

  • 高斯滤波:对平均后的投影数据应用高斯滤波,平滑通道间的响应差异。

  • 坏点校正:用滤波后的投影数据减去原始投影数据与滤波结果的差值,校正通道不一致性。

2. Matlab代码实现

function cor_proj = ProjFilter_Ring_Artifacts(projections, Num_angles)% 输入:projections(投影数据,维度:det_col_count × Num_angles × det_row_count)%       Num_angles(投影角度数量)% 输出:cor_proj(校正后的投影数据)% 1. 计算投影数据的平均值(按角度平均)[X, Y] = size(projections(:, 1, :));  % X:探测器列数,Y:探测器行数R = zeros(X, Y);                     % 初始化平均投影矩阵for i = 1:Num_anglesR = R + squeeze(projections(:, i, :));  % 累加每个角度的投影数据endR = R / Num_angles;  % 平均投影% 2. 高斯滤波(平滑投影数据)core = fspecial('gaussian', [5, 5], 1);  % 5×5高斯核,标准差1R2 = filter2(core, R);                  % 滤波后的投影% 3. 坏点校正(校正通道不一致性)diff = R - R2;  % 原始投影与滤波结果的差值(坏点信号)cor_proj = single(zeros(X, Num_angles, Y));  % 初始化校正后的投影for i = 1:Num_angles% 用原始投影减去坏点信号,得到校正后的投影cor_proj(:, i, :) = squeeze(projections(:, i, :)) - diff;end
end

3. 使用示例

% 加载原始投影数据(假设projections为3D矩阵,维度:det_col × angles × det_row)
load('ct_projections.mat');  
Num_angles = size(projections, 2);  % 投影角度数量% 调用函数校正环形伪影
cor_proj = ProjFilter_Ring_Artifacts(projections, Num_angles);% 重建校正后的CT图像(使用滤波反投影算法,如iradon)
theta = linspace(0, 180, Num_angles);  % 投影角度范围
recon_img = iradon(cor_proj, theta);   % 重建图像% 显示原始与校正后的图像
figure;
subplot(1, 2, 1); imshow(recon_img_original, []); title('原始图像(含环形伪影)');
subplot(1, 2, 2); imshow(recon_img, []); title('校正后图像(环形伪影缓解)');

二、中级方法:极坐标变换+傅里叶低通滤波(适合中度伪影)

该方法通过将直角坐标系的环形伪影转换为极坐标系的线性伪影,再用傅里叶变换去除高频噪声,步骤稍复杂但效果更稳定。

1. 方法原理

  • 极坐标变换:将CT图像从直角坐标(x, y)转换为极坐标(r, θ),环形伪影变为垂直方向的线性伪影

  • 傅里叶变换:对极坐标下的图像进行傅里叶变换,得到频谱图。

  • 低通滤波:设计二维低通滤波器,去除频谱图中的高频成分(对应线性伪影)。

  • 逆变换:对滤波后的频谱图进行傅里叶逆变换,再转换回直角坐标,得到校正后的图像。

2. Matlab代码实现

function corrected_img = Polar_FFT_RingRemoval(img)% 输入:img(原始CT图像,灰度图)% 输出:corrected_img(校正后的图像)% 1. 极坐标变换(将环形伪影转为线性伪影)[rows, cols] = size(img);center = [rows/2, cols/2];  % 图像中心(极坐标原点)max_radius = min(center);   % 最大半径(避免超出图像边界)% 生成极坐标网格[r, theta] = meshgrid(linspace(0, max_radius, rows), linspace(0, 2*pi, cols));x = center(1) + r .* cos(theta);  % 极坐标转直角坐标y = center(2) + r .* sin(theta);% 插值得到极坐标下的图像polar_img = interp2(img, x, y, 'bilinear', 0);  % 双线性插值,边界填充0% 2. 傅里叶变换(获取频谱图)fft_img = fft2(polar_img);               % 二维傅里叶变换fft_shift = fftshift(fft_img);           % 频谱中心化% 3. 设计低通滤波器(去除高频噪声)[rows_p, cols_p] = size(polar_img);mask = zeros(rows_p, cols_p);center_p = [rows_p/2, cols_p/2];radius = min(center_p) * 0.8;  % 低通滤波器半径(保留低频成分)for i = 1:rows_pfor j = 1:cols_pif sqrt((i - center_p(1))^2 + (j - center_p(2))^2) < radiusmask(i, j) = 1;  % 低通区域(保留)endendendfft_filtered = fft_shift .* mask;  % 滤波后的频谱% 4. 逆傅里叶变换(回到空间域)ifft_shift = ifftshift(fft_filtered);  % 频谱去中心化polar_corrected = real(ifft2(ifft_shift));  % 逆傅里叶变换(取实部)% 5. 极坐标逆变换(回到直角坐标)[r, theta] = meshgrid(linspace(0, max_radius, rows), linspace(0, 2*pi, cols));x = center(1) + r .* cos(theta);y = center(2) + r .* sin(theta);corrected_img = interp2(polar_corrected, x, y, 'bilinear', 0);  % 插值回直角坐标% 归一化到0-255(灰度图范围)corrected_img = mat2gray(corrected_img);
end

3. 使用示例

% 加载原始CT图像(灰度图)
img = imread('ct_image_with_rings.png');
img = rgb2gray(img);  % 转为灰度图(如果是RGB)% 调用函数去除环形伪影
corrected_img = Polar_FFT_RingRemoval(img);% 显示结果
figure;
subplot(1, 2, 1); imshow(img, []); title('原始图像(含环形伪影)');
subplot(1, 2, 2); imshow(corrected_img, []); title('校正后图像(环形伪影去除)');

三、高级方法:投影域小波变换(适合重度伪影)

该方法通过在投影域对数据进行小波分解,去除高频噪声(对应环形伪影),再重构投影数据,效果更优但计算复杂度较高。

1. 方法原理

  • 子投影分割:将原始投影数据分割为多个子投影,消除相邻探测器通道的相关性。

  • 小波分解:对每个子投影进行小波分解,得到近似分量(低频)和细节分量(高频)。

  • 滤波处理:对近似分量和垂直细节分量进行加权均值滤波,去除环形伪影。

  • 小波重构:将滤波后的小波系数重构为新的子投影,合并后得到校正后的投影数据。

2. Matlab代码实现

function corrected_proj = Wavelet_Proj_RingRemoval(projections, L)% 输入:projections(原始投影数据,维度:det_col × angles × det_row)%       L(子投影数量,通常取4)% 输出:corrected_proj(校正后的投影数据)[det_col, Num_angles, det_row] = size(projections);corrected_proj = zeros(det_col, Num_angles, det_row);  % 初始化校正后的投影% 1. 将投影数据分割为L个子投影(消除相邻通道相关性)sub_projs = cell(L, 1);  % 存储子投影for l = 1:L% 按列分割(每隔L列取一列)sub_projs{l} = projections(:, mod(1:Num_angles, L) == l, :);end% 2. 对每个子投影进行小波分解与滤波wavelet = 'db4';  % 小波基(Daubechies 4)level = 1;        % 小波分解层数(1层足够)for l = 1:Lsub_proj = sub_projs{l};  % 当前子投影(det_col × angles × det_row)[det_col_sub, Num_angles_sub, det_row_sub] = size(sub_proj);% 初始化滤波后的子投影sub_proj_filtered = zeros(det_col_sub, Num_angles_sub, det_row_sub);% 对每个探测器行进行处理(逐行小波分解)for row = 1:det_row_subrow_data = squeeze(sub_proj(:, :, row));  % 当前行的投影数据(det_col × angles)% 小波分解(1层)[cA, cH, cV, cD] = dwt2(row_data, wavelet);  % cA:近似分量,cH:水平细节,cV:垂直细节,cD:对角线细节% 对近似分量和垂直细节分量进行加权均值滤波psi = 0.3;  % 调节因子(平衡局部均值与原始值)cA_filtered = weighted_mean_filter(cA, psi);  % 近似分量滤波cV_filtered = weighted_mean_filter(cV, psi);  % 垂直细节分量滤波% 重构小波系数(用滤波后的分量替换原始分量)row_data_filtered = idwt2(cA_filtered, cH, cV_filtered, cD, wavelet);% 存储滤波后的行数据sub_proj_filtered(:, :, row) = row_data_filtered;end% 将滤波后的子投影存入校正后的投影corrected_proj(:, mod(1:Num_angles, L) == l, :) = sub_proj_filtered;end
end% 辅助函数:加权均值滤波(用于小波分量)
function filtered = weighted_mean_filter(matrix, psi)[rows, cols] = size(matrix);filtered = zeros(rows, cols);N = 1;  % 局部均值窗口大小(3×3窗口,N=1)for i = 1:rowsfor j = 1:cols% 计算局部均值(3×3窗口)window = matrix(max(1, i-N):min(rows, i+N), max(1, j-N):min(cols, j+N));local_mean = mean(window(:));% 加权均值滤波(psi×局部均值 + (1-psi)×原始值)filtered(i, j) = psi * local_mean + (1 - psi) * matrix(i, j);endend
end

3. 使用示例

% 加载原始投影数据(假设projections为3D矩阵)
load('ct_projections.mat');  
L = 4;  % 子投影数量(通常取4)% 调用函数校正环形伪影
corrected_proj = Wavelet_Proj_RingRemoval(projections, L);% 重建校正后的CT图像(使用iradon)
theta = linspace(0, 180, size(corrected_proj, 2));  % 投影角度范围
recon_img = iradon(corrected_proj, theta);   % 重建图像% 显示结果
figure;
subplot(1, 2, 1); imshow(recon_img_original, []); title('原始图像(含环形伪影)');
subplot(1, 2, 2); imshow(recon_img, []); title('校正后图像(环形伪影去除)');

四、方法选择与优化建议

方法 适合场景 优点 缺点
投影域高斯滤波 轻度环形伪影 步骤简单、计算快 对重度伪影效果有限
极坐标+傅里叶滤波 中度环形伪影 效果稳定、保留边缘信息 需要坐标变换,计算复杂度中等
投影域小波变换 重度环形伪影 效果好、针对性强(去除高频噪声) 计算复杂、需要调整小波参数

优化建议

  1. 参数调整

    • 高斯滤波的核大小(如fspecial('gaussian', [7,7], 2))可根据伪影严重程度调整(核越大,平滑效果越强)。

    • 小波变换的基函数(如'db4'改为'sym8')和分解层数(如level=2)可尝试不同组合,寻找最优效果。

  2. 多方法组合

    • 先用投影域高斯滤波去除轻度伪影,再用极坐标+傅里叶滤波处理残留伪影,最后用小波变换优化细节。
  3. 硬件加速

  • 对于大规模数据,可使用Matlab的parfor循环(并行计算)加速投影域处理,或使用GPU加速(如gpuArray)。

参考代码 Matlab去除CT扫描得到的图像的环形伪影 www.youwenfan.com/contentcnq/65736.html

五、注意事项

  1. 数据预处理

    • 输入的投影数据需进行平场校正(Flat-field Correction)和暗场校正(Dark-field Correction),去除硬件本身的噪声(如探测器的暗电流)。

    • 图像数据需转为灰度图(如果是RGB),并确保像素值在0-255范围内。

  2. 结果验证

  • 校正后的图像需与原始图像对比,评估环形伪影的去除效果(如计算伪影区域的信噪比(SNR)或结构相似性(SSIM))。

  • 避免过度滤波导致图像细节丢失(如边缘模糊),可通过调整滤波参数(如高斯核大小、小波分解层数)平衡去伪影效果与细节保留。


六、总结

Matlab提供了多种去除CT图像环形伪影的方法,从基础的投影域滤波到高级的小波变换,覆盖了不同程度的伪影场景。用户可根据伪影严重程度选择合适的方法,并通过参数调整和多方法组合优化效果。对于重度伪影,推荐使用投影域小波变换;对于轻度伪影投影域高斯滤波足以应对。实际应用中,需结合数据预处理(如平场校正)和结果验证,确保校正后的图像满足诊断要求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1215078.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《把脉行业与技术趋势》-100-电动机——永不落幕的能源转换艺术

电动机&#xff08;Electric Motor&#xff09;是将电能转化为机械能&#xff08;旋转或直线运动&#xff09;的核心电磁能量转换装置&#xff0c;被誉为“工业心脏”和“电气化文明的基石”。以下从原理本质、核心结构、主流类型、性能指标、现代演进与前沿趋势六大维度&#…

麻省理工学院人工智能领域有影响力人物

麻省理工学院人工智能领域有影响力人物摘要&#xff1a;麻省理工学院&#xff08;Massachusetts Institute of Technology&#xff0c;MIT&#xff09;作为全球人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;研究的策源地与核心阵地&#xff0c;自20世…

幽冥大陆(一百11)酒店智能门锁系统Larkdll接口函数——东方仙盟筑基期

代码 一.版权说明 Larkdll.dll函数与本公司门锁管理软件配套发行&#xff0c;不属于免费提供技术服务。所有使用 DLL公司必须经过本公司授权。非法拷贝使用所带来的后果本公司概不负责。 二.函数定义 function integer opencomm( integer com) library "larkdll.dll&qu…

未来之窗昭和仙君(六十三)可编程子窗口操作功能—东方仙盟练气期

可编程子窗口操作功能说明书 cyberwin_fairyalliance_webquery 未来之窗昭和仙君 一、功能概述 本功能提供了一系列方法用于操作元素的子节点&#xff0c;特别是针对 iframe 元素的处理&#xff0c;能够获取元素的所有子节点&#xff08;包括文本节点、注释节点、iframe 内容…

基于开源AI大模型S2B2C商城系统的无人店铺售卖难点解决方案研究

摘要&#xff1a;本文聚焦无人店铺售卖过程中面临的客户与商品识别、交易判断、商品识别与支付流程等难点&#xff0c;深入探讨人工智能视觉技术结合开源AI大模型S2B2C商城系统在解决这些难题中的应用。通过分析该系统在客户画像构建、商品管理、交易监控及支付流程优化等方面的…

Linux驱动学习笔记:spi-imx.c收发消息的核心流程

spi-imx.c 分析策略与核心流程 一、spi-imx.c分析顺序 1. probe函数 → 理解初始化做了什么 2. 回调函数注册 → 找到关键回调 3. 数据传输路径 → 跟踪实际传输流程 4. 硬件操作细节 → 理解寄存器操作二、核心关键&#xff1a;spi-bitbang.c 的介入 重大发现 /* spi_imx_…

内核日志分析:__spi_pump_messages的Caller_Optimization和KWorker_Thread

SPI测试内核日志分析 [ 900.082769] [SPICORE_TRACE] __spi_sync: > Enter. [ 900.088086] [SPICORE_TRACE] __spi_sync: the master of this device is: spi0 (Bus Number: 0). [ 900.096874] [SPICORE_TRACE] __spi_sync: master->transfer spi_queued_transfer, Qu…

2025年市场上优质的非标钣金定制企业哪个好,行业内专业的非标钣金定制哪个好睿意达诚信务实提供高性价比服务

非标钣金定制行业作为制造业细分领域,近年来伴随工业4.0与智能制造浪潮快速崛起。随着光伏、通信、医疗等产业对定制化设备需求的激增,具备柔性生产能力与工艺精度的企业逐渐占据市场主导地位。然而,行业集中度低、…

Flutter for OpenHarmony:从零开始认识基础组件

Flutter for OpenHarmony&#xff1a;从零开始认识基础组件 作者&#xff1a;灰灰勇闯IT 时间&#xff1a;2026年1月 适用环境&#xff1a;OpenHarmony 4.0 Flutter for OpenHarmony SDK 本文目标&#xff1a;帮助初学者快速掌握在 OpenHarmony 上使用 Flutter 构建 UI 的核心…

得物Java面试被问:RocketMQ的消息轨迹追踪实现

一、核心设计理念 1.1 追踪目标 text 复制 下载 四大追踪维度&#xff1a; 1. 生产轨迹&#xff1a;消息从哪个应用、哪个机器、什么时间发送 2. 存储轨迹&#xff1a;消息在Broker的存储状态、投递时间 3. 消费轨迹&#xff1a;消息被哪个消费者、何时消费、消费结果 4. 事…

期货交易平台数据分析系统开题报告

期货交易平台数据分析系统开题报告 一、选题背景 随着金融市场全球化、数字化进程加速&#xff0c;期货市场作为资本市场的重要组成部分&#xff0c;交易量持续攀升&#xff0c;交易品种不断丰富&#xff0c;涵盖农产品、金属、能源、金融衍生品等多个领域。期货交易具有杠杆性…

基于大数据+Hadoop的智能电网环境下的电能质量监测系统开题报告

基于大数据Hadoop的智能电网环境下的电能质量监测系统开题报告 一、选题背景 随着全球能源转型进程加速&#xff0c;智能电网作为能源互联网的核心组成部分&#xff0c;正朝着数字化、智能化、高效化方向快速发展。智能电网整合了新能源发电、储能设备、智能配电、用电终端等…

浙江洁净车间厂家深度评测:百级洁净度的关键考量,净化工程公司/无尘室/无尘车间/净化工程/净化车间,洁净车间施工哪家靠谱

在半导体、生物医药、精密制造等高技术产业中,百级洁净车间(ISO 5级)是保障产品良率、控制污染风险的核心基础设施。其洁净度标准要求每立方米空气中≥0.5μm的微粒数不超过3520颗,远高于普通万级(ISO 8级)或十万…

2026年重庆等地值得选的安全阀在线检测仪服务商排名

本榜单依托特种设备检验检测领域全维度市场调研与真实行业口碑,深度筛选出五家标杆企业,为安全阀校验机构、工业企业选型提供客观依据,助力精准匹配适配的服务伙伴。 TOP1 推荐:北京朗岄科技有限公司 推荐指数:★…

2026年电镀金加工推荐厂家怎么选,鼎亚电子优势明显

在精密电子制造领域,电镀金加工的精度、稳定性与交付效率直接影响终端产品的性能与市场竞争力。面对市场上工艺水平参差不齐的电镀服务商,企业如何找到能匹配超薄、超厚、超宽等特殊规格需求的电镀金定制加工厂家?以…

2026年金属带材电镀生产企业排行榜,十大厂家有谁?

本榜单依托全维度市场调研与真实行业口碑,深度筛选出五家标杆企业,为精密零部件、金属带材加工企业选型提供客观依据,助力精准匹配适配的金属带材电镀服务伙伴。 TOP1 推荐:无锡鼎亚电子材料有限公司 推荐指数:★…

2026年慢走丝机床品牌排名揭晓,上海汉霸数控以硬核实力上榜!

本榜单依托全维度市场调研与真实行业口碑,深度筛选出五家标杆企业,为企业选型提供客观依据,助力精准匹配适配的慢走丝加工服务伙伴。 TOP1 推荐:上海汉霸数控 推荐指数:★★★★★ | 口碑评分:国产慢走丝设备标杆…

成都婚纱摄影怎么选?2025-2026年度真实口碑排行榜单

成都婚纱摄影怎么选?2025-2026年度真实口碑排行榜单最近帮朋友选婚纱照,把成都市场上热门的几家机构跑了一遍,也翻遍了各大平台的真实评价,整理出这份排名。不是广告,纯属个人调研分享,希望能帮到正在备婚的你。…

2026年润滑油泵服务商厂家排名揭晓,宁波迪奥机械名列前茅!

本榜单依托全维度市场调研与真实行业口碑,深度筛选出五家工业润滑系统标杆企业,为工业企业选型提供客观依据,助力精准匹配适配的服务伙伴。 TOP1 推荐:宁波迪奥机械有限公司 推荐指数:★★★★★ | 口碑评分:国内…