Giter VIP home page Giter VIP logo

radon-transform's Introduction

DOI License

A Radon transform wave-speed estimator

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

Examples

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

How to use

  1. Load and pre-process your spatiotemporal particle motion data
  2. Create a data struct with MakeDataStruct
  3. Use CalcTheta to generate a speed search range
  4. Use NormRadon to perform the normalized Radon transform, with optional masking (see notes)
  5. Use FindRadonPeaks to find the transform's peak
  6. Use CalcTrajectory to calculate the wave speed and trajectory.
    • (optional) CalcResolution estimates the resolution for the output speed
  7. Visualize results with PlotRadon

Notes

  • 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 trajectory
    • MaskSpeed creates a speed-based mask to isolate data faster or slower than a specified speed

Citation

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}
}

radon-transform's People

Contributors

fqjin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

safeerhyder

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.