Legacy example · Python · Version 0.1.0
Ultrasound Post-Processing Filter Design
A collection of tools for developing and deploying realtime ultrasound post-processing filters.
| Authors | Walter Simson (NVIDIA) |
|---|---|
| Supported platforms | x86_64, aarch64 |
| Language | Python |
| Version | 0.1.0 |
| Compatibility | HSDK 3.10 |
| Contribution level | Level 1 · Very high-quality code |
| Source | HoloHub |
Legacy HoloHub application
This application comes from HoloHub and was last tested with Holoscan SDK (HSDK) 3.10. It runs with the HoloHub CLI, ./holohub.
A collection of tools for developing and deploying realtime ultrasound post-processing filters.

Mission
Enable the ultrasound community (academia and industry) to have reproducible, real-time post-processing.
Overview
This project includes an Ultrasound Post-Processing Filter Designer and light-weight library that enables you to design and run your ultrasound post-processing filter collection in Holoscan, all from a small and simple YAML config file.
The Filter Designer enables you to create the YAML configs working on Ultrasound File Format (UFF) files (beamformed but not log compressed). You can load and filter your own data locally.
The included Holoscan Runner tool enables you to run those configurations in real-time using the Holoscan SDK.
Prerequisites
Hardware
- Linux device with NVIDIA GPU
- Tested with x86_64 workstation + RTX Ampere 6000 GPU
Software
- CUDA Driver R580 or later
- See additional HoloHub CLI prerequisites in the HoloHub README software prerequisites section
Quick Start
First, clone this repository:
git clone https://github.com/nvidia-holoscan/holohub.git
Then, run the containerized application.
To run the filter designer webpage for assembling filter pipelines and tuning filter parameters:
./holohub run ultrasound_postprocessing designer
To run a filter pipeline preset in real time with Holoscan SDK:
./holohub run ultrasound_postprocessing realtime
Install and Run with Python Packaging
As an alternative to HoloHub CLI, you can instead design and run filters with project Python entrypoints.
Install this project with your Python package manager:
python3 -m pip install git+ssh://github.com/nvidia-holoscan/holohub.git@main#subdirectory=applications/ultrasound_postprocessing
Then run your application of choice:
python3 -m streamlit run applications/ultrasound_postprocessing/ultra_post/app/streamlit_app.py
python3 -m ultra_post.app.holoscan_app [--uff path/to/myfile.uff] [--fps 10]
The sample dataset used in this project is available at https://unioslo.github.io/USTB/datasets.html.
Key Concepts
Glossary
- Filters are stateful, CuPy-based Python functions that operate on ultrasound images.
- The Filter Registry is a collection of pre-defined filters for use in apps such as the Filter Designer and in Holoscan SDK pipelines.
- Pipelines are a set of one or more filter objects assembled into a serialized graph or "chain".
- Presets are instructions for configuring a pipeline out of specific filters.
- Operators are Holoscan SDK "nodes" wrapping filter definitions for real-time serial execution.
Development
Project Structure
ultrasound_postprocessing
├── CMakeLists.txt
├── Dockerfile
├── docs
├── external
├── metadata.json
├── plans
├── presets
├── pyproject.toml
├── README.md
├── tests
├── tools
└── ultra_post (Python module)
Review Existing Filters
./holohub run ultrasound_postprocessing list-filters
Validate a preset
./holohub run ultrasound_postprocessing validate <presets/my-preset.yml>
Run Tests
./holohub test ultrasound_postprocessing
Contributing
We welcome contributions that align with our mission to enable the ultrasound community to have reproducible, real-time post-processing.
Ways to Contribute
- Presets: Create a processing pipeline preset (YAML) and save it to
presets/. - Filters:
- Add your filter implementation to
ultra_post/filters/. - Register it in
ultra_post/filters/registry.py(add toFILTERSandDEFAULT_PARAMS).
- Add your filter implementation to
- Improvements: Bug fixes and performance optimizations are highly encouraged.
- Our goal is to have code that is easy to understand and highly performant.
Please see the HoloHub Contributing Guide for developer guidance.
Code Style
- Concise & Approachable: We prioritize readability so new users can quickly understand the post-processing logic.
- Performant: We aim for code that is both expressive and performant, enabling real-time processing.
License
This project is licensed under the Apache-2.0 License. See the HoloHub LICENSE file for details.
Authors
- Walter Simson - NVIDIA Holoscan Team
Acknowledgments
- NVIDIA Holoscan Team
- Open source community contributors
Reference Data
This project uses UFF sample data hosted by the Ultrasound Toolbox.
H. Liebgott, A. Rodriguez-Molares, F. Cervenansky, J. A. Jensen and O. Bernard, "Plane-Wave Imaging Challenge in Medical Ultrasound," 2016 IEEE International Ultrasonics Symposium (IUS), Tours, France, 2016, pp. 1-4, doi: 10.1109/ULTSYM.2016.7728908.