k-Wave Toolbox |
On this page… |
---|
This example demonstrates how the bandwidth of sensor elements can give rise to artefacts in time reversal photoacoustic image reconstruction. It builds on the previous 2D time reversal examples.
The sensor data is simulated using kspaceFirstOrder2D
in the same way as previous examples. In this example, the initial pressure distribution is set to be three disks created using makeDisc
with different magnitudes and diameters. A continuous circular binary sensor mask created using makeCircle
is used to avoid additional limited view artifacts. The smoothed initial pressure distribution is reproduced after time reversal image reconstruction by passing the simulated sensor data directly to sensor.time_reversal_boundary_data
(in this case committing the inverse crime in which computations are run forwards and backwards using the same parameters).
To illustrate the effect of removing the low frequency data, a high pass filter is applied to the simulated sensor data using applyFilter
. By default, this uses a causal FIR filter designed using the Kaiser windowing method. The causal nature of the filter means that the temporal signals will become offset from their original position. This offset is avoided by using a zero phase filter by setting the optional input 'ZeroPhase'
to true
. The filter type is set to 'HighPass'
and the cutoff frequency to 1 MHz.
% filter the sensor data using a high pass filter Fs = 1/dt; % [Hz] cutoff_freq = 1e6; % [Hz] sensor_data_high_pass = zeros(size(sensor_data)); for index = 1:sum(sensor.mask(:)) sensor_data_high_pass(index, :) = applyFilter(sensor_data(index, :), Fs, cutoff_freq, 'HighPass', 'ZeroPhase', true); end
If the initial pressure is reconstructed using the filtered sensor data, only the edges of the discs are reconstructed. This is due to the missing low frequency data.
To illustrate the effect of removing the high frequency data, a low pass filter is applied to the simulated sensor data, again using applyFilter
. The filter type is set to 'LowPass'
, the cutoff frequency to 1 MHz, and the optional input 'ZeroPhase'
is again set to true
.
% filter the sensor data using a low pass filter Fs = 1/dt; % [Hz] cutoff_freq = 1e6; % [Hz] sensor_data_low_pass = zeros(size(sensor_data)); for index = 1:sum(sensor.mask(:)) sensor_data_low_pass(index, :) = applyFilter(sensor_data(index, :), Fs, cutoff_freq, 'LowPass', 'ZeroPhase', true); end
If the initial pressure is reconstructed using the filtered sensor data, the edges of the disc become blurred. This is due to the missing high frequency data.
The construction of many conventional ultrasound transducers results in a reduction in sensitivity at both low and high frequencies about some centre frequency. This type of response can be approximated by applying a frequency domain Gaussian filter to the recorded sensor data using the centre frequency and percentage bandwidth of the transducer (the latter corresponds to the full width at half maximum of the frequency response as a percentage of the centre frequency). This can be applied using gaussianFilter
(this function is used by the simulation functions when sensor.frequency_response
is defined). Here, a transducer with a centre frequency of 3 MHz and a bandwidth of 100% is modelled.
% filter the sensor data using a Gaussian filter Fs = 1/dt; % [Hz] center_freq = 3e6; % [Hz] bandwidth = 100; % [%] sensor_data_gaussian = gaussianFilter(sensor_data, Fs, center_freq, bandwidth);
If the initial pressure is reconstructed using the Gaussian filtered sensor data, again the edges of the discs are reconstructed more prominently. Because the bandwidth of this filter is quite wide, not all the low frequency data is removed and thus some of the information from the middle of the discs can still be seen.
An x-profile through the centre of the largest disc for the different reconstructions is shown below for comparison.
Image Reconstruction With Directional Sensors | Iterative Image Improvement Using Time Reversal |
© 2009-2014 Bradley Treeby and Ben Cox.