<?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: Problem met when simulating small scatters</title>
		<link>http://www.k-wave.org/forum/topic/problem-met-when-simulating-small-scatters</link>
		<description>Support for the k-Wave MATLAB toolbox</description>
		<language>en-US</language>
		<pubDate>Wed, 13 May 2026 08:13:40 +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/problem-met-when-simulating-small-scatters" rel="self" type="application/rss+xml" />

		<item>
			<title>Bradley Treeby on "Problem met when simulating small scatters"</title>
			<link>http://www.k-wave.org/forum/topic/problem-met-when-simulating-small-scatters#post-7603</link>
			<pubDate>Sat, 13 Jun 2020 13:01:52 +0000</pubDate>
			<dc:creator>Bradley Treeby</dc:creator>
			<guid isPermaLink="false">7603@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi Vasiliki,&#60;/p&#62;
&#60;p&#62;If it appears in a completely homogeneous domain, then it's just the acoustic cross talk between the transducer elements. In other words, it is the signal emitted from each element that travels directly to the other elements. It's not an artefact per se, but built into the acoustics that you are simulating.&#60;/p&#62;
&#60;p&#62;At least in a numerical simulation, to eliminate it, you could run a simulation first in a homogeneous medium and store the cross talk signal. Then, for your imaging simulation, provided that the medium in which the transducer is embedded still has the same properties, you could subtract the cross talk signal using the data from the first simulation.&#60;/p&#62;
&#60;p&#62;Brad.
&#60;/p&#62;</description>
		</item>
		<item>
			<title>vasl12 on "Problem met when simulating small scatters"</title>
			<link>http://www.k-wave.org/forum/topic/problem-met-when-simulating-small-scatters#post-7583</link>
			<pubDate>Mon, 08 Jun 2020 14:20:12 +0000</pubDate>
			<dc:creator>vasl12</dc:creator>
			<guid isPermaLink="false">7583@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Image 1: empty domain&#60;br /&#62;
Image 2: 1540m/s background without noise&#60;br /&#62;
Image 3: 1540m/s background with noise only in the density domain&#60;br /&#62;
Image 4: difference image
&#60;/p&#62;</description>
		</item>
		<item>
			<title>vasl12 on "Problem met when simulating small scatters"</title>
			<link>http://www.k-wave.org/forum/topic/problem-met-when-simulating-small-scatters#post-7581</link>
			<pubDate>Mon, 08 Jun 2020 13:44:15 +0000</pubDate>
			<dc:creator>vasl12</dc:creator>
			<guid isPermaLink="false">7581@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi Brad,&#60;/p&#62;
&#60;p&#62;Thank you for the reply and your suggestion. I tried to simulate a completely homegeneous domain, but unfortunately the x shaped persists. I also simulated a single point scatterer with and without speckle and calculated the difference image between these two. The resulting image displays the desired speckle and no x-shaped artifact. It would seem that this indicates that the artifact is constant.&#60;br /&#62;
Regarding the cross-talk, we are using aperture growth with a constant f-number (1.75) which should reduce such artifacts. &#60;/p&#62;
&#60;p&#62;Any ideas?&#60;/p&#62;
&#60;p&#62;&#60;img src=&#34;https://i.ibb.co/H74PfSC/Screenshot-from-2020-06-08-12-06-21.png&#34; alt=&#34;Screenshot-from-2020-06-08-12-06-21&#34; /&#62;&#60;br /&#62;
&#60;img src=&#34;https://i.ibb.co/wyRqwg9/Screenshot-from-2020-06-05-12-46-23.png&#34; alt=&#34;Screenshot-from-2020-06-05-12-46-23&#34; /&#62;&#60;br /&#62;
&#60;img src=&#34;https://i.ibb.co/VpWzVd3/Screenshot-from-2020-06-05-12-46-29.png&#34; alt=&#34;Screenshot-from-2020-06-05-12-46-29&#34; /&#62;&#60;br /&#62;
&#60;img src=&#34;https://i.ibb.co/JqCJ59Y/Screenshot-from-2020-06-05-12-46-11.png&#34; alt=&#34;Screenshot-from-2020-06-05-12-46-11&#34; /&#62;
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Bradley Treeby on "Problem met when simulating small scatters"</title>
			<link>http://www.k-wave.org/forum/topic/problem-met-when-simulating-small-scatters#post-7573</link>
			<pubDate>Sat, 06 Jun 2020 21:07:05 +0000</pubDate>
			<dc:creator>Bradley Treeby</dc:creator>
			<guid isPermaLink="false">7573@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;HI Vasiliki,&#60;/p&#62;
&#60;p&#62;It is the cross-talk signal? In other words, the signal received from each element from the other elements? Try making you medium completely homogeneous and see if you still see it in the channel data.&#60;/p&#62;
&#60;p&#62;Brad.
&#60;/p&#62;</description>
		</item>
		<item>
			<title>vasl12 on "Problem met when simulating small scatters"</title>
			<link>http://www.k-wave.org/forum/topic/problem-met-when-simulating-small-scatters#post-7541</link>
			<pubDate>Wed, 03 Jun 2020 10:49:04 +0000</pubDate>
			<dc:creator>vasl12</dc:creator>
			<guid isPermaLink="false">7541@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hello,&#60;/p&#62;
&#60;p&#62;It seems that I also encounter a weird artifact close to the transducer.&#60;/p&#62;
&#60;p&#62;I am trying to simulate a 4cm depth volume with one point scatterer in the middle of the domain and noise on the density domain.&#60;br /&#62;
For this 3 plane waves are used with 96 firing elements and steering angles +8,0,-8 degrees.&#60;br /&#62;
&#60;img src=&#34;https://i.ibb.co/4Nc8F8J/Screenshot-from-2020-05-25-16-15-39.png&#34; alt=&#34;Screenshot-from-2020-05-25-16-15-39&#34; /&#62;&#60;/p&#62;
&#60;p&#62;As you can see in the pictures close to the transducer exists a bright X shape artifact, both in the case of applied noise in the density domain and when there is no applied noise.&#60;/p&#62;
&#60;p&#62;&#60;img src=&#34;https://i.ibb.co/sqq96tG/Screenshot-from-2020-06-03-11-34-20.png&#34; alt=&#34;Screenshot-from-2020-06-03-11-34-20&#34; /&#62;&#60;br /&#62;
&#60;img src=&#34;https://i.ibb.co/xhSq6GS/Screenshot-from-2020-06-03-11-34-34.png&#34; alt=&#34;Screenshot-from-2020-06-03-11-34-34&#34; /&#62;&#60;/p&#62;
&#60;p&#62;By examining the channel data for each plane wave it appears that the X shaped artifact exists there as well.&#60;/p&#62;
&#60;p&#62;&#60;img src=&#34;https://i.ibb.co/5GTSfrD/Screenshot-from-2020-05-27-16-01-34.png&#34; alt=&#34;Screenshot-from-2020-05-27-16-01-34&#34; /&#62;&#60;/p&#62;
&#60;p&#62;Any ideas where this is coming come from?&#60;/p&#62;
&#60;p&#62;Best,&#60;br /&#62;
Vasiliki
&#60;/p&#62;</description>
		</item>
		<item>
			<title>cryospherewang@163.com on "Problem met when simulating small scatters"</title>
			<link>http://www.k-wave.org/forum/topic/problem-met-when-simulating-small-scatters#post-7312</link>
			<pubDate>Mon, 23 Mar 2020 17:50:01 +0000</pubDate>
			<dc:creator>cryospherewang@163.com</dc:creator>
			<guid isPermaLink="false">7312@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi there, &#60;/p&#62;
&#60;p&#62;I just tried to play with kWave using different parameters and see what happened. Then when I was simulating a linear medium with a small scatter, which has a radius of 1 (i know this small radius does not make much sense and is not practical), I got some strange sensor data.&#60;/p&#62;
&#60;p&#62;Following is my code:&#60;/p&#62;
&#60;p&#62;'%% define medium, scatter and grid points&#60;br /&#62;
clc;&#60;br /&#62;
clearvars;&#60;/p&#62;
&#60;p&#62;% set the size of the perfectly matched layer (PML)&#60;br /&#62;
pml_x_size = 10;                % [grid points]&#60;br /&#62;
pml_y_size = 10;                % [grid points]&#60;br /&#62;
pml_z_size = 10;                % [grid points]&#60;/p&#62;
&#60;p&#62;% set total number of grid points not including the PML&#60;br /&#62;
Nx = 190 - 2*pml_x_size;      % [grid points]&#60;br /&#62;
Ny = 100 - 2*pml_y_size;      % [grid points]&#60;br /&#62;
Nz = 600 - 2*pml_z_size;      % [grid points]&#60;/p&#62;
&#60;p&#62;% define the properties of the propagation medium&#60;br /&#62;
c0=1500;&#60;br /&#62;
rho0=1040;&#60;/p&#62;
&#60;p&#62;tone_burst_freq = 3e6;&#60;br /&#62;
tone_burst_cycles = 4;&#60;br /&#62;
source_strength = 1e6;          % [Pa]&#60;/p&#62;
&#60;p&#62;% at least 3 points per wavelength is recommended&#60;br /&#62;
dx = c0/tone_burst_freq/4; % grid point spacing in the x direction [m]&#60;br /&#62;
dy = dx;&#60;br /&#62;
dz = dx;&#60;/p&#62;
&#60;p&#62;kgrid = kWaveGrid(Nz,dz,Nx, dx, Ny, dy);&#60;br /&#62;
kgrid.makeTime(c0, 0.3, (Nz * dz) * 2 / c0);&#60;/p&#62;
&#60;p&#62;input_signal = toneBurst(1/kgrid.dt, tone_burst_freq, tone_burst_cycles);&#60;br /&#62;
input_signal = (source_strength ./ (c0 * rho0)) .* input_signal;&#60;br /&#62;
%% Create The Transducer&#60;br /&#62;
% physical properties of the transducer&#60;br /&#62;
transducer.number_elements = 80;  	% total number of transducer elements&#60;br /&#62;
transducer.element_width = round(0.23e-3/dx);       % width of each element [grid points]&#60;br /&#62;
transducer.element_length = round(6.5e-3/dx);  	% length of each element [grid points]&#60;br /&#62;
transducer.element_spacing = round(0.04e-3/dx);  	% spacing (kerf  width) between the elements [grid points]&#60;br /&#62;
transducer.radius = inf;            % radius of curvature of the transducer [m]&#60;/p&#62;
&#60;p&#62;% calculate the width of the transducer in grid points&#60;br /&#62;
transducer_width = transducer.number_elements * transducer.element_width ...&#60;br /&#62;
    + (transducer.number_elements - 1) * transducer.element_spacing;&#60;/p&#62;
&#60;p&#62;% use this to position the transducer in the middle of the computational grid&#60;br /&#62;
transducer.position = round([1, Nx/2-transducer_width/2, Ny/2-transducer.element_length/2]);&#60;br /&#62;
%transducer_central.position = [y x z];&#60;/p&#62;
&#60;p&#62;% properties used to derive the beamforming delays&#60;br /&#62;
transducer.sound_speed = c0;                    % sound speed [m/s]&#60;br /&#62;
transducer.focus_distance = inf;              % focus distance [m]&#60;br /&#62;
transducer.elevation_focus_distance = 77e-3;    % focus distance in the elevation plane [m]&#60;br /&#62;
transducer.steering_angle = 0;                  % steering angle [degrees]&#60;/p&#62;
&#60;p&#62;% apodization&#60;br /&#62;
transducer.transmit_apodization = 'Hanning';&#60;br /&#62;
transducer.receive_apodization = 'Hanning';&#60;/p&#62;
&#60;p&#62;% define the transducer elements that are currently active&#60;br /&#62;
number_active_elements = transducer.number_elements;&#60;br /&#62;
transducer.active_elements = ones(transducer.number_elements, 1);&#60;/p&#62;
&#60;p&#62;% append input signal used to drive the transducer&#60;br /&#62;
transducer.input_signal = input_signal;&#60;/p&#62;
&#60;p&#62;% create the transducer using the defined settings&#60;br /&#62;
transducer = kWaveTransducer(kgrid, transducer);&#60;/p&#62;
&#60;p&#62;% print out transducer properties&#60;br /&#62;
transducer.properties;&#60;/p&#62;
&#60;p&#62;%% DEFINE THE MEDIUM PROPERTIES&#60;/p&#62;
&#60;p&#62;% define properties&#60;br /&#62;
sound_speed_map = c0 * ones(Nz, Nx, Ny) ;&#60;br /&#62;
density_map = rho0 * ones(Nz, Nx, Ny) ;&#60;br /&#62;
scatterRadius = 1;&#60;br /&#62;
scatterCoef = 1.06;&#60;/p&#62;
&#60;p&#62;% define a sphere for a highly scattering region&#60;br /&#62;
scattering_region1 = makeBall(Nz, Nx, Ny, 4*Nz/5, ...&#60;br /&#62;
   Nx/2, Ny/2, scatterRadius(1));&#60;/p&#62;
&#60;p&#62;% assign region&#60;br /&#62;
sound_speed_map(scattering_region1 == 1) = c0*scatterCoef(1);&#60;br /&#62;
density_map(scattering_region1 == 1) = rho0*scatterCoef(1);&#60;/p&#62;
&#60;p&#62;medium.sound_speed = sound_speed_map;&#60;br /&#62;
medium.density = density_map;&#60;/p&#62;
&#60;p&#62;voxelPlot(single(transducer.mask &#124; scattering_region1));&#60;br /&#62;
view(142,25);&#60;/p&#62;
&#60;p&#62;%% simulation&#60;br /&#62;
input_args = {...&#60;br /&#62;
    'PMLInside', false, 'PMLSize', [pml_x_size, pml_y_size, pml_z_size], ...&#60;br /&#62;
    'DataCast', 'gpuArray-single', 'DataRecast', true};&#60;/p&#62;
&#60;p&#62;% run the simulation&#60;br /&#62;
tic&#60;br /&#62;
sensor_data = kspaceFirstOrder3DG(kgrid, medium, transducer, transducer, input_args{:});&#60;br /&#62;
toc&#60;/p&#62;
&#60;p&#62;%% sensor_data&#60;br /&#62;
sensor_data_com = transducer.combine_sensor_data(sensor_data);&#60;br /&#62;
data_win = getWin(kgrid.Nt * 2, 'Tukey', 'Param', 0.05).';&#60;br /&#62;
data_win = [zeros(1, ceil(length(transducer.input_signal) * 2)), data_win(1:end/2 - ceil(length(transducer.input_signal) * 2))];&#60;/p&#62;
&#60;p&#62;figure;&#60;br /&#62;
subplot(211);&#60;br /&#62;
plot(sensor_data_com(40,:));title('before windowing');&#60;/p&#62;
&#60;p&#62;subplot(212);&#60;br /&#62;
sensor_data_com = bsxfun(@times, data_win, sensor_data_com);&#60;br /&#62;
plot(sensor_data_com(40,:));title('after windowing');'&#60;/p&#62;
&#60;p&#62;If you have tried the code above, you may have already seen the sensor_data after the windowing operation, some strong signals appeared in the near field and around the focus point, but there were no scatter points, can you please tell me is there anything wrong with my code or is it hard to simulate such a small scatter in kWave? If it is the latter, why is it?&#60;/p&#62;
&#60;p&#62;Kind regards,&#60;br /&#62;
Bing
&#60;/p&#62;</description>
		</item>

	</channel>
</rss>
