Effacer les filtres
Effacer les filtres

Delay and Sum beamforming (ultrasound beamforming)

70 vues (au cours des 30 derniers jours)
Stephen Dokodzo
Stephen Dokodzo le 30 Mar 2021
Commenté : Nidhi Singh le 20 Fév 2023
Hi everyone,
How do I convert the discrete samples in to distance in order to find the Rx_delay of this basic beamformer?
Here is my code. I would appreciated any suggestions.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%
% This function performs DAS beamforming for the RF data reveiced
% from a plane wave transmission without beamsteering (0 degrees).
%
% For each pixel (xj,zj), distances are calculated by summing the
% distance from the transmiter to the point and distance from point
% to the receiving element as follows:
% total distance = TX delay path + RX delay path
% TX_delay = zj
% RX_delay = sqrt(zj^2 + (xj-x)^2)
%
%
% "RF_data128" contains received signal from each channel
% "z_start" is the imaging depth starting point
% "z_stop" is the imaging depth ending point
% "image_width" is the required imaging width
% "delta_x" is the lateral step size between each lines of the image
% "pitch" is the distance between the centres of adjacent elements
% "c" is the sound speed
% "fs" is the sampling frequency
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [Beamformed_DATA, z_axis, x_axis] = Basic_Beamformer(RF_data128, z_start, z_stop, image_width, delta_x, pitch, c, fs)
tic
% Receive data parameters
delta_t = 1/fs; % Sampling interval (time)
delta_d = c * delta_t; % Sampling interval (distance)
receive_depth = size(RF_data128,1); % Receive samples (depth)
N_elements = size(RF_data128,2); % Number of receive channels = Number of elements
% Image data parameters
delta_z = delta_d/2;
x_axis = -image_width/2 : delta_x : image_width/2; % Define image x-axis (lateral)
z_axis = z_start: delta_z : z_stop; % Define image z-axis (axial)
Beamformed_DATA = zeros(length(z_axis), length(x_axis)); % Allocate memeory for the Beamformed Data
% Calculate the diagonal length as the maximum image dimension (in samples)
max_dimension = round(sqrt(image_width^2 + z_stop^2)/(delta_z));
% Zero padding according to the maximum image dimension
RF_data128_padded = [RF_data128; zeros(max_dimension-receive_depth, N_elements)];
% Delay calculations and Beamforming
for channel = 1 : N_elements % Beamform every channel
channel_location = channel*pitch;
for zj = 1 : length(z_axis) % Calculate the beamformed data for each pixel (depth)
TX_delay = zj*delta_z; % Distance from the transmitter to the points
for xj = 1 : length(x_axis) % Calculate the beamformed data for each pixel (lateral)
RX_delay =sqrt(zj^2 + (xj-x)^2)*delta_x ; % Distance from the point to the receiver
RF_address = round((TX_delay + RX_delay)/delta_d);
Beamformed_DATA(zj, xj) = Beamformed_DATA(zj, xj) + RF_data128_padded(RF_address, channel);
end
end
end
toc

Réponses (1)

Shoaib Salim
Shoaib Salim le 8 Avr 2021
It shows the error " variable x is undefined"

Catégories

En savoir plus sur Beamforming and Direction of Arrival Estimation dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by