{"id":28466088,"url":"https://github.com/ifl-camp/supra","last_synced_at":"2025-07-05T08:35:32.895Z","repository":{"id":54886294,"uuid":"108247157","full_name":"IFL-CAMP/supra","owner":"IFL-CAMP","description":"SUPRA: Software Defined Ultrasound Processing for Real-Time Applications - An Open Source 2D and 3D Pipeline from Beamforming to B-Mode","archived":false,"fork":false,"pushed_at":"2021-01-22T09:42:54.000Z","size":1510,"stargazers_count":213,"open_issues_count":15,"forks_count":80,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-06-07T06:08:21.960Z","etag":null,"topics":["2d","3d","cuda","openigtlink","pipeline","real-time","software-defined","supra","tum","ultrasound","ultrasound-imaging","ultrasound-pipeline"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IFL-CAMP.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-10-25T09:16:17.000Z","updated_at":"2025-05-30T14:49:41.000Z","dependencies_parsed_at":"2022-08-14T05:50:12.593Z","dependency_job_id":null,"html_url":"https://github.com/IFL-CAMP/supra","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/IFL-CAMP/supra","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IFL-CAMP%2Fsupra","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IFL-CAMP%2Fsupra/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IFL-CAMP%2Fsupra/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IFL-CAMP%2Fsupra/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IFL-CAMP","download_url":"https://codeload.github.com/IFL-CAMP/supra/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IFL-CAMP%2Fsupra/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263710982,"owners_count":23499804,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["2d","3d","cuda","openigtlink","pipeline","real-time","software-defined","supra","tum","ultrasound","ultrasound-imaging","ultrasound-pipeline"],"created_at":"2025-06-07T06:08:26.426Z","updated_at":"2025-07-05T08:35:32.887Z","avatar_url":"https://github.com/IFL-CAMP.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"![SUPRA Logo](http://campar.in.tum.de/files/goeblr/supra_logo_full_small.png \"SUPRA Logo\")\n\nSUPRA: Open Source Software Defined Ultrasound Processing for Real-Time Applications\n================\n\nBy the [Chair for Computer Aided Medical Procedures](http://campar.in.tum.de/)\n\n[![TUM](http://campar.in.tum.de/files/goeblr/TUM_Web_Logo_blau.png \"TUM Logo\")](http://tum.de)\n\nMain contributors: \n\n* R\u0026uuml;diger G\u0026ouml;bl\n* Dr. Christoph Hennersperger\n\nSupported by [EDEN2020](http://eden2020.eu)\n\n[![EDEN2020 Logo](http://campar.in.tum.de/files/goeblr/EDEN2020_Logo_Small.jpg \"EDEN2020 Logo\")](http://eden2020.eu)\n\n\nA 2D and 3D Pipeline from Beamforming to B-mode\n----------------\n\n**SUPRA** is an open-source pipeline for fully software \ndefined ultrasound processing for real-time applications.\nCovering everything from beamforming to output of B-Mode images, SUPRA\ncan help reproducibility of results and allows modifications to the image acquisition.\n\nIncluding all processing stages of a usual ultrasound pipeline, it can be executed in 2D and 3D on consumer GPUs in real-\ntime. Even on hardware as small as the CUDA enabled Jetson TX2 **SUPRA** can be run for 2D imaging in real-time.\n\n![Standard ultrasound pipeline and where the processing takes place. Transmit beamforming is performed on the CPU, transmit and receive are performed in specialized hardware. All other processing steps (receive beamforming, envelope detection, log-compression, scan-conversion) happen in software and on the GPU](http://campar.in.tum.de/files/goeblr/UsPipeline_small.png \"Standard pipeline and where the processing takes place\")\n\nGetting started\n----------------\nTo get an overview of the concepts behind SUPRA and how you can use and modify it, head over to the [wiki](https://github.com/IFL-CAMP/supra/wiki), or have a look at the recording of SUPRA-con at YouTube [SUPRA-con Playlist](https://www.youtube.com/watch?v=dQkUSpV2CtE\u0026list=PLWMNh90FOFSiGOA_VilmuRVqD_5goBrJq).\n\nLicense\n----------------\nLGPL v2.1\nsee [LICENSE](LICENSE)\n\nPublication\n----------------\nIf you use SUPRA for your research, please cite our work\n[https://doi.org/10.1007/s11548-018-1750-6](https://doi.org/10.1007/s11548-018-1750-6)\n\nG\u0026ouml;bl, R., Navab, N. \u0026 Hennersperger, C. , \"SUPRA: Open Source Software Defined Ultrasound Processing for Real-Time Applications\" Int J CARS (2018). https://doi.org/10.1007/s11548-018-1750-6\n\n\t@Article{Goebl2018supra,\n\t\tauthor=\"G{\\\"o}bl, R{\\\"u}diger and Navab, Nassir and Hennersperger, Christoph\",\n\t\ttitle=\"SUPRA: open-source software-defined ultrasound processing for real-time applications\",\n\t\tjournal=\"International Journal of Computer Assisted Radiology and Surgery\",\n\t\tyear=\"2018\",\n\t\tmonth=\"Mar\",\n\t\tday=\"28\",\n\t\tissn=\"1861-6429\",\n\t\tdoi=\"10.1007/s11548-018-1750-6\",\n\t\turl=\"https://doi.org/10.1007/s11548-018-1750-6\"\n\t}\n\nBuilding\n----------------\n### Requirements\n\n* cmake \u0026ge; 3.4\n* gcc \u0026ge; 4.8 or min. Visual Studio 2015 (Compiler needs to be supported by CUDA! For that, see the CUDA installation instructions.)\n* QT \u0026ge; 5.5\n* TBB\n* CUDA \u0026ge; 10.0\n\n\t\n### Build instructions (Ubuntu 16.04 / 18.04)\n\nInstall CUDA (\u0026ge; 10.0) as described by NVIDIA https://developer.nvidia.com/cuda-downloads .\nKeep in mind that the C++ host compiler has to be supported by the CUDA version.\n(Check http://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html and http://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html for details.)\n\nBuild requirements\n\n\tapt-get install cmake cmake-gui qt5-default libtbb-dev libopenigtlink-dev git\n\t\nSUPRA\n\n\tmkdir -p $HOME/git \u0026\u0026 cd $HOME/git #(or your favorite directory for repositories)\n\tgit clone https://github.com/IFL-CAMP/supra.git\n\tcd supra\n\tmkdir -p build \u0026\u0026 cd build\n\tcmake-gui ..\n\t\n1. Configure\n2. For systems with multiple gcc versions, make sure to select one supported by the installed CUDA version\n3. You might need to specify the CUDA toolkit directory (usually \"`/usr/local/cuda`\")\n4. Configure \u0026 Generate, then close cmake and build\n5. Build SUPRA\n\t\n\tmake -j5\n\t\n6. Start SUPRA: See below\n\n### Building with PyTorch inference (via libtorch)\n\n1. Download the stable libtorch for CUDA 10.0 from pytorch.org\n   \n        https://download.pytorch.org/libtorch/cu100/libtorch-win-shared-with-deps-latest.zip\n        https://download.pytorch.org/libtorch/cu100/libtorch-shared-with-deps-latest.zip \n   \n   Tested version: 1.1.0:\n   \n        https://download.pytorch.org/libtorch/cu100/libtorch-win-shared-with-deps-1.1.0.zip\n        https://download.pytorch.org/libtorch/cu100/libtorch-shared-with-deps-1.1.0.zip\n\n2. Install cuDNN\n3. Unpack libtorch (e.g. to `supra/external` on windows or `/opt/` on linux)\n4. Activate `SUPRA_TORCH` in cmake (e.g. in the GUI, or via `-DSUPRA_TORCH=ON`)\n5. Point cmake to the libtorch you just extracted (e.g. `supra/external/libtorch/share/cmake/Torch` or `/opt/libtorch/share/cmake/Torch`)\n6. Configure and build\n=======\n\t\nDemo (No US-system required!)\n----------------\n\nChange to your build directory. If you used the commands above, you can execute\n\n\tcd $HOME/git/supra/build\n\nStart the SUPRA GUI with a demo config file\n\n\tsrc/GraphicInterface/SUPRA_GUI -c data/configDemo.xml -a\n\t\nWhere `-c` defines the config file to load and `-a` is autostart.\n\nThis shows a complete ultrasound pipeline running on your computer from raw channel data recorded with\na Cephasonics system and a 7MHz linear probe.\nWith the dropdown menu \"Preview Node\", you can select which stage of the pipeline to inspect.\nFor the final state of the image, select \"SCAN\", which shows the output of the scan-converter - the B-mode.\n\nStart the SUPRA GUI with a demo 3D config file\n\n\tsrc/GraphicInterface/SUPRA_GUI -c data/configDemo3D.xml -a\n\t\nUsed libraries\n----------------\n\n**SUPRA** uses tinyxml2 which is awesome and distributed under the zlib-license. For more details see the [tinyxml2 README](src/SupraLib/utilities/tinyxml2/readme.md) and (http://grinninglizard.com/tinyxml2/index.html and https://github.com/leethomason/tinyxml2)\n\n**SUPRA** also uses jsoncpp for more structured data handling which is distributed under the MIT license. For more details see the [jsoncpp README](src/SupraLib/utilities/jsoncpp/README.md)\n\nOn windows, ROS-message headers generated with [rosserial](http://wiki.ros.org/rosserial) are used and are included in the source.\nOn Linux, the usual ROS-libraries are used during build. (roscpp, geometry_msgs)\n\n**SUPRA** additionally uses the Intel Thread Building Blocks (but does not provide them) in their Apache 2.0 licensed form. https://www.threadingbuildingblocks.org/\n\nFinally, it can be built against\n\t\n* QT (LGPLv3)\n* IGTL (BSD 3clause)\n* CAMPVis (Apache 2.0) (unfortunately, the respective QT5 version is not yet public)\n\n### Alternate Builds\n\nREST interface instead of graphical interface\n----------------\n\nBuild requirements\n\n\tapt-get install cmake cmake-gui libtbb-dev libopenigtlink-dev libcpprest-dev libboost-all-dev git\n\t\nSUPRA\n\n\tmkdir -p $HOME/git \u0026\u0026 cd $HOME/git #(or your favorite directory for repositories)\n\tgit clone https://github.com/IFL-CAMP/supra.git\n\tcd supra\n\tmkdir -p build \u0026\u0026 cd build\n\tcmake-gui .. -DSUPRA_INTERFACE_REST=ON -DSUPRA_INTERFACE_GRAPHIC=OFF\n\n1. Configure\n2. For systems with multiple gcc versions, make sure to select one supported by the installed CUDA version\n3. You might need to specify the CUDA toolkit directory (usually \"`/usr/local/cuda`\")\n4. Configure \u0026 Generate, then close cmake and build\n5. Build SUPRA\n\t\n\tmake -j5\n\t\n6. Start SUPRA: See below\n\n#### Rest Interface Queries\n\nSUPRA accepts GET and POST requests.\n\nThe IP address / hostname SUPRA can be reached with is referred as `SUPRA_URL` below.\n\n##### GET REQUESTs\n\n`SUPRA_URL/nodes/[var]` where var can be `input` to return all input nodes, `output` to get only the output nodes and empty or `all` to return all nodes regardless of their types.\nThe shape of the object in response's body will be \n`{\"nodeIDs\":[String]}`.\n\n`SUPRA_URL/parameters` returns all parameters for one node.\nThe shape of the object to send with the body is `{\"nodeID\":\"ID\"}`.\n\n\n##### POST REQUESTs\n\n`SUPRA_URL/parameters` sets the value of a parameter of a node. The request has to be shaped like below.\n\n\t{\n\t\t\"nodeID\":\"id\",\n\t\t\"parameterID\":\"id\",\n\t\t\"value\":\"value\"\n\t}\n\n\nDemo (No US-system required!)\n----------------\n\nChange to your build directory. If you used the commands above, you can execute\n\n\tcd $HOME/git/supra/build\n\nStart the SUPRA GUI with a demo config file\n\n\tsrc/RestInterface/SUPRA_REST data/configDemo.xml\n\t\nAdditionaly used libraries\n----------------\nSee above for most used libraries. This build uses additionally:\n* Microsoft C++ Rest SDK \u003e=2.8 - (BSD 3clause)\n* Boost (MIT)\n\nGenerate a self-building deb source file\n----------------\n\nBuild Requirements:\n\n\tapt-get install debmake\n\n\tcd supra\n\tdebmake -cc \u003e\u003e copyright\n\tmkdir -p build \u0026\u0026 cd build\n\tcmake ..\n\tmake package_source\n\nThe deb file can be found in the 'binpackages' folder.\n\nWhen installing the deb file in a system the package will try to build with the standard cmake configuration on that system.\n\nAcknowledgement\n----------------\n\nSUPRA logo by Raphael Kretz.\n\n![EU flag](http://campar.in.tum.de/files/goeblr/EUflag.png \"EU flag\")\n\nThis project has received funding from the European Union's Horizon 2020 research and innovation programme under grant agreement No. 688279.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fifl-camp%2Fsupra","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fifl-camp%2Fsupra","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fifl-camp%2Fsupra/lists"}