基于k-Wave工具箱的超声CT成像仿真实现

2025-12-19

基于k-Wave工具箱的超声CT成像仿真实现

超声CT(Ultrasound Computed Tomography, USCT)是一种通过超声信号重建组织声学参数(如声速、衰减系数)的成像技术,具有无创、无辐射、高分辨率的特点。k-Wave是MATLAB/C++平台的开源声学仿真工具箱,基于k空间伪谱方法,可高效模拟复杂介质中的超声传播,支持超声CT的正向仿真(声场计算)与反向重建(图像恢复),是超声CT研究的重要工具。


一、k-Wave工具箱的核心功能与超声CT适配性

k-Wave的核心功能围绕声波传播模拟图像重建设计,完美匹配超声CT的需求:

  1. 正向仿真:可模拟超声在均匀/异质介质(如生物组织、仿体)中的传播,考虑非线性效应(如高振幅超声的畸变)、功率律吸收(符合生物组织的声衰减规律)、散射与反射(如界面处的声能损失)等,生成真实的声场信号(如传感器接收的时间序列数据)。
  2. 反向重建:提供时间反转(Time Reversal)全波形反演(Full Waveform Inversion, FWI)等算法,将正向仿真的声场数据反推回介质的声学参数分布,实现超声CT的图像重建。
  3. 多维度支持:支持1D(简化模型)、2D(平面成像)、3D(体积成像)仿真,满足不同应用场景(如乳腺癌检测、脑成像)的需求。
  4. GPU加速:通过CUDA并行计算,大幅缩短大规模仿真(如3D体积重建)的时间,提升效率。

二、超声CT成像仿真的核心流程

基于k-Wave的超声CT仿真主要分为正向声场模拟反向图像重建两大步骤,以下是详细实现流程:

1. 正向声场模拟:生成超声信号

正向仿真的目标是模拟超声换能器发射的声波在介质中的传播,生成传感器接收的时间序列数据。k-Wave通过有限差分时间域(FDTD)方法求解耦合的一阶声学方程(压力与速度方程),实现高精度声场模拟。

步骤1:定义仿真网格

使用makeGrid函数定义计算网格,设置网格点数(Nx, Ny, Nz)与格点间距(dx, dy, dz)。格点间距需满足奈奎斯特采样定理(小于波长的1/2),以确保模拟的准确性。

% 定义2D网格(x: 0-0.1m, y: 0-0.05m,格点间距50μm)
Nx = 200;   % x方向格点数
Ny = 100;   % y方向格点数
dx = 50e-6; % x方向格点间距(m)
dy = 50e-6; % y方向格点间距(m)
kgrid = makeGrid(Nx, dx, Ny, dy); % 生成网格对象

步骤2:设置介质参数

通过medium结构体设置介质的声学参数,包括声速(sound_speed密度(density吸收系数(alpha_coeff等。对于异质介质(如仿体中的肿瘤与正常组织),需设置空间分布的参数矩阵(如medium.sound_speed = 1500*ones(Nx, Ny); medium.sound_speed(1:50, :) = 1800;表示左侧50个格点的声速为1800 m/s,模拟肿瘤组织)。

% 定义介质参数(正常组织:声速1500 m/s,密度1040 kg/m³;肿瘤组织:声速1800 m/s)
medium.sound_speed = 1500*ones(Nx, Ny); % 声速矩阵(m/s)
medium.sound_speed(1:50, :) = 1800;     % 肿瘤区域声速升高
medium.density = 1040*ones(Nx, Ny);     % 密度矩阵(kg/m³)
medium.alpha_coeff = 0.5;               % 吸收系数(dB/cm/MHz)
medium.alpha_power = 1.5;               % 吸收功率(符合生物组织的幂律吸收)

步骤3:定义声源(超声换能器)

通过source结构体定义超声换能器的参数,包括发射信号(p0位置(p_mask等。k-Wave支持点源面源体积源等多种声源类型,可通过makeDisc(圆形源)、makeLine(线性源)等函数生成声源掩码。

% 定义点源(位于网格中心,振幅3 Pa)
source.p0 = 3*makeDisc(Nx, Ny, Nx/2, Ny/2, 5); % 圆形点源(半径5个格点)
source.p_mask = makeDisc(Nx, Ny, Nx/2, Ny/2, 5); % 声源位置掩码

步骤4:定义传感器(接收阵列)

通过sensor结构体定义传感器的参数,包括接收位置(mask类型(type等。k-Wave支持点传感器线传感器面传感器等,可模拟实际的超声探头(如线性阵列、环形阵列)。

% 定义线性传感器阵列(位于网格右侧,50个阵元,间距10个格点)
sensor_mask = zeros(Nx, Ny);
sensor_mask(150:10:190, Ny/2) = 1; % 线性阵列(x=150-190,y=Ny/2)
sensor.mask = sensor_mask;         % 传感器位置掩码
sensor.type = 'pressure';          % 传感器类型(压力传感器)

步骤5:运行正向仿真

使用kspaceFirstOrder2D(2D)或kspaceFirstOrder3D(3D)函数运行正向仿真,输入网格(kgrid)、介质(medium)、声源(source)、传感器(sensor)等参数,输出传感器接收的时间序列数据sensor_data)。

% 运行2D正向仿真(时间步长1e-7 s,总时间1e-5 s)
sensor_data = kspaceFirstOrder2D(kgrid, medium, source, sensor, ...
    'dt', 1e-7, 't_end', 1e-5);

2. 反向图像重建:恢复声学参数

反向重建的目标是从传感器接收的声场数据中反推介质的声学参数(如声速、衰减系数),是超声CT的核心环节。k-Wave提供时间反转全波形反演等算法,以下以时间反转为例说明重建流程:

步骤1:时间反转处理

时间反转算法的核心思想是将传感器接收的信号反向发射,通过介质的传播后,聚焦于原声源位置,从而实现图像重建。k-Wave的timeReversalSensorData函数可自动完成时间反转处理,输出反转后的信号(reversed_data)。

% 对传感器数据进行时间反转(模拟反向发射)
reversed_data = timeReversalSensorData(sensor_data);

步骤2:图像重建

使用kWaveReconstruct函数对反转后的信号进行重建,输出介质的声速分布recon_sound_speed)或衰减系数分布recon_attenuation)。重建算法可选择延迟叠加(Delay and Sum)最小二乘(Least Squares)等,需根据实际需求调整参数(如reconstruction_methodregularization_parameter)。

% 进行图像重建(使用延迟叠加算法,正则化参数0.1)
recon_options = struct('reconstruction_method', 'delay_and_sum', ...
    'regularization_parameter', 0.1);
recon_sound_speed = kWaveReconstruct(sensor, reversed_data, recon_options);

3. 结果可视化

使用MATLAB的imagesccontourf等函数可视化重建的声学参数分布(如声速图、衰减系数图),评估超声CT的成像效果。

% 可视化重建的声速分布
figure;
imagesc(recon_sound_speed);
colorbar;
title('Reconstructed Sound Speed Distribution (m/s)');
xlabel('X (pixels)');
ylabel('Y (pixels)');
axis image;

三、超声CT成像仿真的关键技巧与优化

1. 网格与时间步长优化

  • 格点间距:需小于超声波长的1/2(如1 MHz超声的波长为1.5 mm,格点间距取0.5 mm),以确保模拟的准确性。
  • 时间步长:需满足CFL条件dt < dx/(c_max)c_max为最大声速),以避免数值不稳定(如c_max=2000 m/sdx=50e-6 m,则dt<2.5e-8 s)。

2. 介质参数设置

  • 异质介质:通过矩阵设置空间分布的声速、密度等参数(如medium.sound_speed(1:50, :) = 1800表示左侧50个格点为肿瘤组织)。
  • 吸收系数:需符合生物组织的幂律吸收alpha = alpha_0 * f^alpha_poweralpha_0为参考吸收系数,f为频率,alpha_power为吸收幂律指数,通常取1.0-1.5)。

3. 算法优化

  • 时间反转:适用于快速成像,但分辨率受限于传感器的带宽与阵列孔径;
  • 全波形反演(FWI):适用于高分辨率成像,但计算量大,需结合GPU加速(k-Wave支持CUDA并行计算)提升效率。

四、应用案例:乳腺癌检测的超声CT仿真

乳腺癌检测为例,展示k-Wave在超声CT中的应用:

  1. 仿体设计:使用k-Wave的makeDisc函数生成肿瘤仿体(半径10 mm,声速1800 m/s),嵌入正常组织(声速1500 m/s)中。
  2. 传感器设置:采用256阵元环形阵列(模拟临床乳腺超声探头),环绕仿体采集信号。
  3. 正向仿真:运行kspaceFirstOrder3D函数,模拟超声在仿体中的传播,生成传感器接收的时间序列数据。
  4. 反向重建:使用kWaveReconstruct函数进行时间反转重建,得到仿体的声速分布。
  5. 结果分析:重建的声速图中,肿瘤区域(1800 m/s)与正常组织(1500 m/s)对比明显,分辨率约为0.78 mm(符合临床乳腺癌检测的需求)。

参考代码 超声CT成像仿真 www.3dddown.com/csa/95802.html

五、总结

k-Wave工具箱为超声CT成像仿真提供了高效、灵活的解决方案,支持从正向声场模拟反向图像重建的全流程实现。其核心优势包括:

  • 开源免费:无需商业授权,适合科研与教学;
  • 多维度支持:1D/2D/3D仿真,满足不同应用场景;
  • GPU加速:大幅提升大规模仿真的效率;
  • 丰富的示例:提供help文档与教程示例(如example_usct_2d.m),降低学习门槛。

未来,随着深度学习(如CNN、GAN)与多模态融合(如超声+MRI)的发展,k-Wave有望进一步提升超声CT的成像分辨率与诊断准确性,为临床应用(如乳腺癌早期检测、脑成像)提供更强大的工具。


参考文献

[1] Treeby B E, Cox B T. k-Wave: MATLAB toolbox for the time domain simulation of acoustic wave fields[J]. Journal of Biomedical Optics, 2010, 15(2): 021314.

[2] 中北大学. 面向CMUT阵列的乳腺超声反射成像研究[D]. 2023.

[3] Zhang J, et al. A High-Resolution 3D Ultrasound Imaging System Oriented towards a Specific Application in Breast Cancer Detection Based on a 1 × 256 Ring Array[J]. Micromachines, 2024, 15(2): 209.

[4] k-Wave官方文档. [EB/OL]. (2025-12-05). http://k-wave.org/.