k-Wave Toolbox |
![]() ![]() |
2D linear FFT reconstruction
p_zx = kspaceLineRecon(p_tx, dx, dt, c) p_zx = kspaceLineRecon(p_tx, dx, dt, c, ...)
kspaceLineRecon
takes an acoustic pressure time-series p_tx
recorded over an evenly spaced array of sensor points on a line,
and constructs an estimate of the initial acoustic pressure distribution
that gave rise to those measurements using an algorithm based on the FFT. The input p_tx
must be indexed
p_tx(time step, sensor x position)
, where the sensor spacing is given by dx
, the temporal spacing given by dt
,
and the sound speed in the propagation medium (which is assumed to
be acoustically homogeneous) is given by c
. The output p_zx
is indexed as
p_zx(sensor z position, sensor x position)
.
The code uses a k-space algorithm which performs (1) a Fourier transform
on the data p_tx
along both t
and x
dimensions (into wavenumber-frequency space, where the wavenumber component is
along the detector line), (2) a mapping, based on the dispersion relation
for a plane wave in an acoustically homogeneous medium, from wavenumber-frequency
space to wavenumber-wavenumber space (where the second component is orthogonal
to the detector line), and finally (3) an inverse Fourier transform back from
the wavenumber domain to the spatial domain. The result is an estimate of the
initial acoustic pressure distribution from which the acoustic waves originated.
Steps (1) and (3) can be performed efficiently using the fast Fourier transform
(FFT); they are therefore fastest when the number of samples and number of detector
points are both powers of 2. The mapping in step (2) requires an interpolation
of the data from an evenly spaced grid of points in the wavenumber-frequency
domain to an evenly-spaced grid of points in the wavenumber-wavenumber domain.
The option 'Interp'
may be used to choose the interpolation method.
The physics of photoacoustics requires that the acoustic pressure is initially
non-negative everywhere. The estimate of the initial pressure distribution
generated by this code may have negative regions due to artefacts arising from differences
between the assumed model and the real situation, e.g., homogeneous medium vs. real,
somewhat heterogeneous, medium; infinite measurement surface vs. finite-sized
region-of-detection, etc. A positivity (or non-negativity) condition can be enforced by
setting the optional 'PosCond'
to true
which simply sets any negative parts of the final image to zero.
|
pressure time-series recorded over an evenly spaced array of sensor points on a line (indexed as t, x) |
|
spatial step [m] |
|
time step [s] |
|
acoustically-homogeneous sound speed [m/s] |
Optional 'string', value pairs that may be used to modify the default computational settings.
Input | Valid Settings | Default | Description |
---|---|---|---|
|
(string of interpolation type) |
|
String input controlling the interpolation method used by |
|
(boolean scalar) |
|
Boolean controlling whether a plot of the reconstructed estimate of the initial acoustic pressure distribution is produced. |
|
(boolean scalar) |
|
Boolean controlling whether a positivity condition is enforced on the reconstructed estimate of the initial acoustic pressure distribution. |
|
estimate of the initial acoustic pressure distribution (indexed as z, x) |
interp2
, kspacePlaneRecon
, makeGrid
![]() |
kspaceFirstOrder3D | kspacePlaneRecon | ![]() |
© 2009, 2010 Bradley Treeby and Ben Cox.