超声成像发射声场仿真(Ultrasound Emit Field Simulation)

超声成像发射声场仿真(Ultrasound Emit Field Simulation)

​ 根据超声波阵面的实现方式可以将超声成像分为平面波(plane wave)成像、扩散波(diverging wave)成像、聚焦(focus)成像。为了实现上述成像方式需要施加不同的发射延时形成相应的波阵面。不同的波阵面形成的发射声场表现不同,了解不同成像方式的声场有助于我们加深超声成像的了解。

​ 此处以Field II软件仿真不同成像方式发射声场。发射延时可以使用Filed II自带函数生成,由于实际工程需要发射延时是由工程师去计算配置的,下文列出了发射延时的计算方式。

​ Field_II是丹麦超声专家J. A. Jensen等利用声学原理设计的一个超声系统。它可以仿真超声探头所形成的声场和超声图像等。这里默认已经对Filed _II有一定了解。

一、平面波发射声场

1、线阵探头/相控阵探头

​ 上图是线阵/相控阵平面波正常发射和偏转发射的示意图,对于平面波没有聚焦的概念,因此只要使激励阵元的延时形成平面波就可以。

​ 对于正常发射各阵元发射延时全为0,对于偏转发射(包括正常发射)延时计算为:
$$
x⋅sin(v)
$$
​ 角度为负往左偏转,角度为正往右偏转,对于以后的扫描偏转方向沿用这一规则。

​ 当计算完成发射延时,就可以进行声场仿真。

​ 首先需要对配置探头参数进行配置,参数如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
clear all
close all
clc
plt = 1;%是否绘制
f0 = 7500000;
N_elements = 128;
width = 0.17e-3;
height = 5e-3;
kerf = 0.03e-3;
focus = 20e-3;
fs = 200e6;
Th = xdc_linear_array (N_elements, width, height, kerf, 1, 10,[0,0,focus]);
Rh = xdc_linear_array (N_elements, width, height, kerf, 1, 10,[0,0,focus]);
if plt
probeplt(Th);
end

​ 设置脉冲相应、阵元位置及平面波发射角度

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
%设置2个周期高斯脉冲相应、1个周期激励脉冲
dt = 1/fs;
t0 = (-1/f0): dt:(1/f0);
impulse_response = gauspuls(t0, f0);
impulse_response = impulse_response-mean(impulse_response);
pulse_duration = 1;
te = 0:dt:pulse_duration/f0;
excitation = square(2*pi*f0*te);
%设置脉冲相应
xdc_impulse (Th, impulse_response);
xdc_impulse (Rh, impulse_response);
%设置激励脉冲
xdc_excitation (Th, excitation);
%发射角度
steer_angle = [-15,0,15];
%阵元位置
if strcmp(probetype,'linear')
x_ele = ([0:N_elements-1]-(N_elements-1)/2).*pitch;
probe_xyz = [x_ele',zeros(length(x_ele),1),zeros(length(x_ele),1)];
end

计算发射声场

1
2
3
4
5
6
7
8
9
10
11
12
13
14
%设置发射声场显示区域
x = linspace(-2e-2,2e-2,128);
z = linspace(0,4e-2,256);

emit_field = zeros(256,128,length(steer_angle));
for i = 1:length(steer_angle)
%实际工程中发射变迹通过发射波形去控制,以后再实施,这里不做发射变迹
xdc_apodization(Th,0,ones(1,N_elements));
%设置平面波发射延时
delay(i,:) = plane_wave_tranmit_delay(probe_xyz,steer_angle(i)*pi/180,c,probetype);
xdc_times_focus(Th,0,delay(i,:));
%计算发射声场
emit_field(:,:,i) = emit_field_calc(Th,x,z);
end

无偏转平面波延时设置也可以通过下面进行

1
2
xdc_center_focus(Th,[0,0,0]);
xdc_focus(Th,0,[0,0,0]);

发射声场field II计算函数

1
2
3
4
[xi,zi] = meshgrid(x,z);
xi = xi(:);
zi = zi(:);
emit_field = calc_hp(Th,[xi,zeros(length(xi),1),zi]);

从上图可以看出发射延时有负数,实际工程中会给一个t进行补偿,保证延时大于0。

2、凸阵

​ 上图是线阵/相控阵平面波正常发射和偏转发射的示意图

​ 对于正常发射各阵元发射延时全为0,对于偏转发射(包括正常发射)延时计算为:
$$
R⋅cos(\theta_p-\theta_e)
$$
​ $\theta_p$为平面波偏转角度,$\theta_e$为阵元相对中间线的夹角

​ 另一种计算发射延时方法是计算定点到阵元$n$波阵面(与波阵面垂直)的切线,通过切线可以计算出阵元到波阵面的距离,然后转化为发射延时。

​ 代码框架与上面一致,结果为

二、扩散波发射声场

扩散波与平面波都可以通过一次发射获取较大的图像视野,与平面波不同的是扩散波虚拟了一个点源

1、线阵探头/相控阵探头

此处定义虚拟源的半径为$r$,偏转角度为$\theta$ ,虚拟源位置通过三角函数计算,各阵元到虚拟源的距离也确定了。

2、凸阵

凸阵原理与线阵类似

三、聚焦波发射声场

1、线阵探头

聚焦声场的延时使用Field II 自带函数计算,聚焦深度3cm,发射线为中心线,发射延时计算

1
2
xdc_center_focus(Th,[fcous_x,0,0]);
xdc_focus(Th,0,[fcous_x,0,fcous_z]);

或是通过自行计算的延时导入Filed II

1
2
delay = fcous_wave_tranmit_delay(probe,loc_x,fcous_depth,steer_angle*pi/180,c);
xdc_times_focus(Th,0,delay);

偏转-15自行计算与Fileld II延时对比,符合预期

2、凸阵探头

代码框架与上面一样,发射线为中心线,聚焦深度4cm,结果为

3、相控阵探头

相控阵探头发射线永远位于中心线处,聚焦延时修改为

1
2
xdc_center_focus(Th,[0,0,0]);
xdc_focus(Th,0,[fcous_x,0,fcous_z]);

发射线为中心处,角度为[-30,0,30],聚焦深度6cm,结果为

总结

设置不同的发射延时,可以实现不同的成像方式,同时将自己计算的发射延时与Field II做对比有助于验证发射延时的正确性。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!