Physics - Scanning

This exercise summarizes the concepts see so far to create our first 2D ultrasound image!

Related materials:

by Alfonso Rodriguez-Molares (alfonso.r.molares@ntnu.no) 21.07.2016

Contents

Broadband Fresnel model for rectangular transducers

Based on the Fresnel approximation for rectangular transducer and neglecting the constant factors we can define the following LTI system to model the wave propagation for a rectangular transducer placed at $\mathbf{s}$ and a evaluation point placed at $\mathbf{r}$,

$h(t,\mathbf{s},\mathbf{r}) = \frac{\delta(t-r/c_0)}{4\pi r} \, D(\theta,\phi)$

where $r$ is the distance between $\mathbf{s}$ and $\mathbf{r}$, where

$D(\theta,\phi) = \textmd{sinc} \left( \frac{ka}{2} \sin \theta \cos \phi \right) \textmd{sinc} \left( \frac{kb}{2} \sin \theta \sin\phi \right)$

is the element directivity and

$\theta=\arctan\left(\frac{r_x-s_x}{r_z-s_z}\right)$

$\phi=\arctan\left(\frac{r_y-s_y}{r_z-s_z}\right)$

This simple model can be (and will be) used to simulate many aspects of the ultrasound imaging process.

Let us define a Gaussian-modulated RF signal

$v(t) = \cos \left(2\pi f t \right) e^{-2.77 \left(1.1364 \, t \, \Delta f\right)^2}$.

where $f$= 4 MHz, $\Delta f=0.6 f$, and $F_s$=80 MHz. Consider a transducer $a$=2 mm wide, $b$=5 mm tall. The transducer is at the origin of coordinates with its face pointing downwards (towards positive z). Consider that a point scatterer exists at $\mathbf{r}$=(0,0,20) with reflection coefficient $\Gamma$=1.

% The two way impulse response is the convolution of h(t) multiplied by Gamma, with yields
%
% $h(t,\mathbf{s},\mathbf{r}) = \frac{\delta(t-2r/c_0)}{(4\pi r)^2} \, D^2(\theta,\phi)$

f=4e6;                              % transducer frequency [MHz]
Deltaf=0.6*f;                       % pulse bandwidth [MHz]
c0=1540;                            % speed of sound [m/s]
lambda=c0/f;                        % wavelength [m]
k=2*pi*f/c0;                        % wavenumber [rad/m]
Fs=80e6;                            % sampling frequency [Hz]
t=0:(1/Fs):2*40e-3/c0;              % time vector [s]
depth=t*c0/2;                       % depth vector [m]
a=2e-3;                             % element width [m]
b=5e-3;                             % element height [m]
Gamma=1;                            % reflaction coefficient [unitless]

% some geometrical variables
s=[0 0 0];                  % source position [m]
r=[0 0 20e-3];          % receive position [m]
theta=atan2(r(1)-s(1),r(3)-s(3));
phi=atan2(r(2)-s(2),r(3)-s(3));
distance=norm(s-r,2);

% the 2-way Fresnel model for rectangular elements
directivity = sinc(k*a/2.*sin(theta).*cos(phi)/pi).*sinc(k*b/2.*sin(theta).*sin(phi)/pi);
s_r=directivity.^2.*Gamma/(4*pi*distance)^2*cos(2*pi*f*(t-2*distance/c0)).*exp(-2.77*(1.1364*(t-2*distance/c0)*Deltaf).^2);

figure3 = figure('Name','background','Color',[1 1 1]);
plot(depth*1e3,s_r,'b','linewidth',1); grid on; axis tight;
box('on');
xlabel('z [mm]');
ylabel('signal [unitless]')
title({'Received signal'});
set(figure3,'InvertHardcopy','off');
xlim(distance*[0.9 1.1]*1e3);

Scanning

Let us place the source at (-20, 0 ,0) mm and move it along the x axis in 512 increments of 0.0781 mm.

x_axis=-20e-3:0.0781e-3:20e-3;            % positions of the source

for nx=1:length(x_axis)
    s=[x_axis(nx) 0 0];                  % source position [m]
    theta=atan2(r(1)-s(1),r(3)-s(3));
    phi=atan2(r(2)-s(2),r(3)-s(3));
    distance=norm(s-r,2);

    % the 2-way Fresnel model for rectangular elements
    directivity = abs(sinc(k*a/2.*sin(theta).*cos(phi)/pi).*sinc(k*b/2.*sin(theta).*sin(phi)/pi));
    s_r(nx,:)=directivity.^2.*Gamma/(4*pi*distance)^2*cos(2*pi*f*(t-2*distance/c0)).*exp(-2.77*(1.1364*(t-2*distance/c0)*Deltaf).^2);
end

% convert to intensity values
envelope=abs(hilbert(s_r.'));
envelope_dB=20*log10(envelope./max(envelope(:)));

figure3 = figure('Name','background','Color',[1 1 1]);
imagesc(x_axis*1e3,depth*1e3,envelope_dB); axis tight equal;
box('on');
xlabel('x [mm]');
ylabel('z [mm]')
title({'Received signal'});
set(figure3,'InvertHardcopy','off');
caxis([-60 0]); colorbar; colormap gray;
% Yes.
a=20e-3;                    % transducer width [m]

for nx=1:length(x_axis)
    s=[x_axis(nx) 0 0];                  % source position [m]
    theta=atan2(r(1)-s(1),r(3)-s(3));
    phi=atan2(r(2)-s(2),r(3)-s(3));
    distance=norm(s-r,2);

    % the 2-way Fresnel model for rectangular elements
    directivity = abs(sinc(k*a/2.*sin(theta).*cos(phi)/pi).*sinc(k*b/2.*sin(theta).*sin(phi)/pi));
    s_r(nx,:)=directivity.^2.*Gamma/(4*pi*distance)^2*cos(2*pi*f*(t-2*distance/c0)).*exp(-2.77*(1.1364*(t-2*distance/c0)*Deltaf).^2);
end

% convert to intensity values
envelope=abs(hilbert(s_r.'));
envelope_dB=20*log10(envelope./max(envelope(:)));

figure3 = figure('Name','background','Color',[1 1 1]);
imagesc(x_axis*1e3,depth*1e3,envelope_dB); axis tight equal;
box('on');
xlabel('x [mm]');
ylabel('z [mm]')
title({'Received signal'});
set(figure3,'InvertHardcopy','off');
caxis([-60 0]); colorbar; colormap gray;
% Lateral resolution increases with the transducer width.

The Fresnel approximation is only valid for points in the far field, which starts beyond

$z_{far} > \frac{a^2}{4 \lambda}$

% case 1
a=2e-3;
z_far=a^2/4/lambda
if(20e-3>z_far) disp('Yes!'); else disp('Nope'); end

% case 2
a=20e-3;
z_far=a^2/4/lambda
if(20e-3>z_far) disp('Yes!'); else disp('Nope'); end
z_far =

    0.0026

Yes!

z_far =

    0.2597

Nope