<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="bbPress/1.0.2" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>k-Wave User Forum &#187; Topic: 3D UltraSound Delay and Sum (DAS) and image reconstruction</title>
		<link>http://www.k-wave.org/forum/topic/3d-ultrasound-delay-and-sum-das-and-image-reconstruction</link>
		<description>Support for the k-Wave MATLAB toolbox</description>
		<language>en-US</language>
		<pubDate>Wed, 13 May 2026 00:23:58 +0000</pubDate>
		<generator>http://bbpress.org/?v=1.0.2</generator>
		<textInput>
			<title><![CDATA[Search]]></title>
			<description><![CDATA[Search all topics from these forums.]]></description>
			<name>q</name>
			<link>http://www.k-wave.org/forum/search.php</link>
		</textInput>
		<atom:link href="http://www.k-wave.org/forum/rss/topic/3d-ultrasound-delay-and-sum-das-and-image-reconstruction" rel="self" type="application/rss+xml" />

		<item>
			<title>Bradley Treeby on "3D UltraSound Delay and Sum (DAS) and image reconstruction"</title>
			<link>http://www.k-wave.org/forum/topic/3d-ultrasound-delay-and-sum-das-and-image-reconstruction#post-6899</link>
			<pubDate>Sat, 22 Jun 2019 20:38:02 +0000</pubDate>
			<dc:creator>Bradley Treeby</dc:creator>
			<guid isPermaLink="false">6899@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Have you looked at the &#60;a href=&#34;https://www.ustb.no&#34;&#62;Ultrasound Toolbox&#60;/a&#62;? That might have something useful (I haven't used it myself).
&#60;/p&#62;</description>
		</item>
		<item>
			<title>souradiprockz on "3D UltraSound Delay and Sum (DAS) and image reconstruction"</title>
			<link>http://www.k-wave.org/forum/topic/3d-ultrasound-delay-and-sum-das-and-image-reconstruction#post-6861</link>
			<pubDate>Mon, 27 May 2019 12:13:41 +0000</pubDate>
			<dc:creator>souradiprockz</dc:creator>
			<guid isPermaLink="false">6861@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Okay thanks for the beamforming part. What about image reconstruction?&#60;br /&#62;
how can we reconstruct the image using sensor data ('delay and sum algorithm') in K wave toolbox?
&#60;/p&#62;</description>
		</item>
		<item>
			<title>bencox on "3D UltraSound Delay and Sum (DAS) and image reconstruction"</title>
			<link>http://www.k-wave.org/forum/topic/3d-ultrasound-delay-and-sum-das-and-image-reconstruction#post-6563</link>
			<pubDate>Thu, 16 Aug 2018 23:58:22 +0000</pubDate>
			<dc:creator>bencox</dc:creator>
			<guid isPermaLink="false">6563@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi nitai, &#60;/p&#62;
&#60;p&#62;Here's a simple 2D example demonstrating beamforming, in case it's helpful. The principles are identical in 3D. &#60;/p&#62;
&#60;p&#62;Best wishes,&#60;br /&#62;
Ben&#60;/p&#62;
&#60;pre&#62;&#60;code&#62;%--------------------------------------------------------------------------
% Simulate time series from a linear detection array
%--------------------------------------------------------------------------

% create the computational grid
PML_size = 20;          % size of the PML in grid points
Nx = 128 - 2*PML_size;  % number of grid points in the x (row) direction
Ny = 128 - 2*PML_size;  % number of grid points in the y (column) direction
dx = 0.05e-3;            % grid point spacing in the x direction [m]
dy = 0.05e-3;            % grid point spacing in the y direction [m]
kgrid = kWaveGrid(Nx, dx, Ny, dy);

% define the properties of the propagation medium
medium.sound_speed = 1500;           % [m/s]

% create the time array
[kgrid.t_array, dt] = makeTime(kgrid, medium.sound_speed);

% define the sensor array
N_elements = 16;          % number of elements in the detector array
element_spacing = 3;      % spacing between elements [pixels]
sensor.mask = zeros(Nx, Ny);
sensor.mask((Nx/2 + 1 - N_elements*element_spacing/2) : element_spacing :(Nx/2 + N_elements*element_spacing/2), 1) = 1;

% create initial pressure distribution consisting of a few points
source_spacing_x = 20;    % x spacing between source points [pixels]
source_spacing_y = 30;    % y spacing between source points [pixels]
source.p0 = zeros(Nx,Ny);
source.p0(Nx/2+1 , Ny/2+1 - source_spacing_y) = 1;
source.p0(Nx/2+1 , Ny/2+1) = 1;
source.p0(Nx/2+1 , Ny/2+1 + source_spacing_y) = 1;
source.p0(Nx/2+1 - source_spacing_x, Ny/2+1) = 1;
source.p0(Nx/2+1 + source_spacing_x, Ny/2+1 - source_spacing_y) = 1;

% smooth the initial pressure distribution and restore the magnitude
source.p0 = smooth(kgrid, source.p0, true);

% set the input arguments: force the PML to be outside the computational
% grid; switch off p0 smoothing within kspaceFirstOrder2D
input_args = {&#38;#39;PMLInside&#38;#39;, false, &#38;#39;PMLSize&#38;#39;, PML_size, &#38;#39;Smooth&#38;#39;, false, ...
    &#38;#39;PlotPML&#38;#39;, false, &#38;#39;PlotLayout&#38;#39;, true, &#38;#39;PlotScale&#38;#39;, [-0.25 0.25]};

% run the simulation
sensor_data = kspaceFirstOrder2D(kgrid, medium, source, sensor, input_args{:});

%--------------------------------------------------------------------------
% Form the A-lines
%--------------------------------------------------------------------------

% Reconstruction grid. Define the points for the A-line
% (ie. the distance from the central element to each pixel on the A-line)
pixel_distances = (0:0.25:Nx-1)*dy;      % [m]

% find the distances of the elements from the element at x=0
element_distances = kgrid.x_vec(sensor.mask(:,1)==1);   % [m]

% distance of single focus from array
focal_distance = (Ny/2+1)*dy;      % [m]

% Calculate which time points need to be summed together to synthesise
% focussing. For each pixel in the A-line, we need to choose one time point
% for each element. Uses Pythagoras&#38;#39; theorem.
A_line_onefocus = zeros(size(pixel_distances));
A_line_focussed = zeros(size(pixel_distances));
for loop = 1:N_elements

    % time points which give just one focal point at focal_distance
    time_points1 = ( sqrt( focal_distance.^2 + element_distances(loop).^2 ) - focal_distance + pixel_distances ) / medium.sound_speed;  

    % time points which focus all along the line x = 0
    time_points2 =  sqrt( pixel_distances.^2 + element_distances(loop).^2 ) / medium.sound_speed; 

    % convert time shifts to time indices (+1 as matlab indexing starts at 1 not 0)
    time_indices1 = round( time_points1 / dt ) + 1;
    time_indices2 = round( time_points2 / dt ) + 1;

    % sum the time series to make the A-lines
    A_line_onefocus = sensor_data(loop,time_indices1) + A_line_onefocus;
    A_line_focussed = sensor_data(loop,time_indices2) + A_line_focussed;

end

% SIMPLE SUM, A-line formed as sum, no time delays
A_line_sum = sum(sensor_data);

% NO FOCUSSING, A-line from just the sensor at x=0
A_line_unfocussed = sensor_data(N_elements/2,:);

figure
subplot(3,1,1)
plot(kgrid.y_vec,source.p0(Nx/2+1,:))
set(gca,&#38;#39;XLim&#38;#39;,[min(kgrid.y_vec) max(kgrid.y_vec)])
title(&#38;#39;sources on the x=0 axis&#38;#39;)
grid on

subplot(3,1,2)
plot(medium.sound_speed*kgrid.t_array + min(kgrid.y_vec), A_line_unfocussed)
set(gca,&#38;#39;XLim&#38;#39;,[min(kgrid.y_vec) max(kgrid.y_vec)])
title(&#38;#39;A-line from single unfocussed element&#38;#39;)
grid on

subplot(3,1,3)
plot(medium.sound_speed*kgrid.t_array + min(kgrid.y_vec), A_line_sum,&#38;#39;k&#38;#39;)
hold on
plot(pixel_distances + min(kgrid.y_vec), A_line_onefocus,&#38;#39;r-&#38;#39;)
plot(pixel_distances + min(kgrid.y_vec), A_line_focussed,&#38;#39;b--&#38;#39;)
set(gca,&#38;#39;XLim&#38;#39;,[min(kgrid.y_vec) max(kgrid.y_vec)])
title(&#38;#39;A-lines with focussing&#38;#39;)
legend(&#38;#39;simple sum&#38;#39;,&#38;#39;one focus&#38;#39;,&#38;#39;multi-focus&#38;#39;)
xlabel(&#38;#39;x [m]&#38;#39;)
grid on&#60;/code&#62;&#60;/pre&#62;</description>
		</item>
		<item>
			<title>nitai on "3D UltraSound Delay and Sum (DAS) and image reconstruction"</title>
			<link>http://www.k-wave.org/forum/topic/3d-ultrasound-delay-and-sum-das-and-image-reconstruction#post-6548</link>
			<pubDate>Sun, 12 Aug 2018 07:20:56 +0000</pubDate>
			<dc:creator>nitai</dc:creator>
			<guid isPermaLink="false">6548@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;does anyone know anything about it?&#60;br /&#62;
will be very helpful&#60;br /&#62;
thanks
&#60;/p&#62;</description>
		</item>
		<item>
			<title>nitai on "3D UltraSound Delay and Sum (DAS) and image reconstruction"</title>
			<link>http://www.k-wave.org/forum/topic/3d-ultrasound-delay-and-sum-das-and-image-reconstruction#post-6532</link>
			<pubDate>Tue, 24 Jul 2018 08:33:37 +0000</pubDate>
			<dc:creator>nitai</dc:creator>
			<guid isPermaLink="false">6532@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hello&#60;br /&#62;
We are trying to apply beam forming using delay and sum on 3d ultrasound data (which we simulated using k-wave). is there any code doing it? In addition, is there any prepared code which does an interpolation between the sampled data after beam forming) in order to reconstruct the image? thanks
&#60;/p&#62;</description>
		</item>

	</channel>
</rss>
