This package contains MATLAB scripts that use the Radon transform to find the wave speed and trajectory from spatiotemporal particle motion data. This code was developed for processing ultrasound shear wave elasticity imaging data (SWE/SWEI). The Radon transform calculates the line integral of 2D data over all possible trajectories, and the slope of the trajectory that maximizes the Radon transform is the group speed of the wavefront.
Features of this package:
- Adjustable speed range and resolution
- Normalized Radon transform accounts for trajectory length and gives a strength metric equal to the average data along the trajectory
- Apply arbitrary masks to input data, with helper scripts to make various masks, including hand-drawn masks
Refer to the example scripts to see how this package is used:
Example 1: Basic usage
Example 2: Find speeds of peak and trough in particle velocity data
Example 3: Hand-drawn masks
Example 4: Detect multiple waves with trajectory masking
- Load and pre-process your spatiotemporal particle motion data
- Create a data struct with
MakeDataStruct
- Use
CalcTheta
to generate a speed search range - Use
NormRadon
to perform the normalized Radon transform, with optional masking (see notes) - Use
FindRadonPeaks
to find the transform's peak - Use
CalcTrajectory
to calculate the wave speed and trajectory.- (optional)
CalcResolution
estimates the resolution for the output speed
- (optional)
- Visualize results with
PlotRadon
MakeDataStruct
requires three quantities: a 2D array of spatiotemporal data and the corresponding vectors for spatial and temporal coordinates.- Common pre-processing steps (not required): filtering, resampling, differentiating in time, cropping, normalizing in time at each spatial location, etc.
CalcTheta
may be passed a specific list of discrete wave speeds to search. By default, it constructs a logarithmically-spaced speed range.NormRadon
may be passed a mask to apply it to the input data. This package contains the following helper scripts to generate useful masks:MaskManual
: the user manually circles the desired wave and the drawing is used as a mask. This is particularly useful for data with multiple waves or to avoid artifacts.MaskTrajectory
uses the inverse Radon transform to mask out a specified trajectoryMaskSpeed
creates a speed-based mask to isolate data faster or slower than a specified speed
If you find this package useful, please consider citing the proceedings paper:
@inproceedings{jin2022open,
title={An Open-Source Radon-Transform Shear Wave Speed Estimator with Masking Functionality to Isolate Different Shear-Wave Modes},
author={Jin, Felix Q and Knight, Anna E and Paley, Courtney Trutna and Pietrosimone, Laura S and Hobson-Webb, Lisa D and Nightingale, Kathryn R and Palmeri, Mark L},
booktitle={2022 IEEE International Ultrasonics Symposium (IUS)},
pages={1--4},
year={2022},
organization={IEEE}
}