Decode a set of focused transmit ultrasound beams into the "complete data set", indexed by individual transmit elements and receive channels. Algorithms are provided for both "phased" and "walking" aperture sequences.
This decoding has many benefits for image quality:
- Improved electronic signal-to-noise ratio
- Synthetic transmit focusing, providing diffraction-limited resolution at all depths
- Uniform field response from the recovered diverging waves (as opposed to focal gain at a fixed depth)
The recovered complete data set also provides the potential for:
- Transmit apodization
- Sound speed estimation
- Phase aberration correction
- Spatial coherence calculation
- Other aperture-domain processing
This code is based on the algorithms proposed in:
Ali, R.; Dahl, J.; Bottenus, N. "Extending Retrospective Encoding For Robust Recovery of the Multistatic Dataset". IEEE Transactions on Ultrasonics, Ferroelectrics, and Frequency Control, vol. 67, no. 5, pp. 943-956, Dec. 2019.
You can reference a static version of this code by its DOI number:
The original (adjoint) REFoCUS algorithm was proposed in:
Bottenus, N. "Recovery of the complete data set from focused transmit beams". IEEE Transactions on Ultrasonics, Ferroelectrics, and Frequency Control, vol. 65, no. 1, pp. 30-38, Jan. 2018.
If you use the code/algorithm for research, please cite the above papers as appropriate. For commercial use, please contact the authors to discuss the related IP.
The REFoCUS algorithm is implemented in both MATLAB and Python. Example code is given to run several variants of the algorithm for comparison. Note that the beamforming and spatial coherence code are not optimized for speed and are just provided for convenience.
Please download the sample data under the releases tab for this repository.
Several options for inversion are provided to suit different applications.
- Adjoint - with or without ramp filter
- Tikhonov regularization - adjustable regularization
- Regularized singular value decomposition - adjustable regularization
- Truncated singular value decomposition - adjustable threshold
There are three subdirectories in the MATLAB and Python subdirectories. The MATLAB versions are linked below:
- FieldIISimulatedExample - Example with simulated (Field II) data
- ReconFromMultistaticData shows multistatic synthetic aperture image reconstructions based on the ground-truth multistatic dataset. Spatial coherence is plotted as a function of lag at two different depths. (REFoCUS is not applied)
- convertMultistatic2PhasedArrayFocTxData and convertMultistatic2WalkingApertureFocTxData simulate the receive channel data for focused-transmit beams in steered-transmit (phased) and walking-aperture sequences using the multistatic dataset.
- convertPhasedArrayFocTxData2Multistatic and convertWalkingApertureFocTxData2Multistatic recovers the multistatic dataset from receive channel data from each sequence of focused transmit beams. Within these scripts, you can specify the method of recovery. After recovering the multistatic dataset, images are generated by multistatic synthetic aperture image reconstruction. Spatial coherence is plotted as function of lag at two different depths.
- The convertWalkingApertureFocTxData2Multistatic_Adjoint and convertWalkingApertureFocTxData2Multistatic_Tikhonov convert receive channel data from a walking aperture transmit sequence and convert it to multistatic channel data using the adjoint and Tikhonov-regularized inverse, respectively, and saves them to .MAT files.
- The multistaticSyntheticApertureImageRecon and multistaticSyntheticApertureCoherence generate multistatic synthetic aperture image reconstructions and plots of spatial coherence vs lag from recovered multistatic data.
- KSpaceAnalyticSolnFast is the demo script for the k-space simulation of a focused transmit beam.
- KSpacePhasedArrayFocusedTransmits and KSpaceWalkingApertureFocusedTransmits are scripts that demonstrate the recovery of the single-element transmit wavefield from focused transmissions in phased-array and walking aperture sequences. The pseudoinverse used in recovery may be selected in each script.
-
DATA_FocTx_20190323_205714.mat
- Experimental data using an L12-3v transducer and Verasonics ultrasound scanner. Data file contains the apodization and delay description of the walking aperture, the receive aperture positions, sample time vector, and raw channel data. -
multistaticDataFieldII.mat
- Field II simulated data and parameters for the "complete" or "multistatic" data set, with individual element transmissions.