Git Product home page Git Product logo

kitwaremedical / itkpocus Goto Github PK

View Code? Open in Web Editor NEW
19.0 7.0 5.0 77.36 MB

An open source library for streaming and preprocessing point-of-care ultrasound video.

License: Other

CMake 5.20% Kotlin 3.25% SWIG 0.05% C++ 25.08% Java 1.10% PowerShell 0.08% Shell 0.08% C 0.61% Python 14.09% Jupyter Notebook 50.47%
image-processing ultrasound point-of-care point-of-care-ultrasound openigtlink itk monai itkpocus

itkpocus's Introduction

ITK Point-of-Care Ultrasound (ITKPOCUS)

About

ITK Point-of-Care Ultrasound (ITKPOCUS) is an open source (Apache 2.0) collection of software libraries for the preprocessing and streaming of point-of-care ultrasound (POCUS) devices in order to support image processing and AI. It currently has levels of support for Clarius, Butterfly, Sonivate, Sonoque, and Interson probes.

A version of our automatic algorithm for optic nerve sheath diameter (ONSD) measurement (Moore et al. 2020) has been published here.

The ONSD estimation work is still active and updates will be pushed to this repository in the near future.

ITKPOCUS is developed by Kitware, Inc. in collaboration with Duke University. This effort was sponsored by the U.S. Government under Other Transactions Number W81XWH-15-9-0001/W81XWH-19-9-0015 (MTEC 19-08-MuLTI-0079).

Usage

See the individual device folders for additional documentation. Streaming APIs are dependent on the manufacturer's API (e.g. Android/Java for Clarius, MFC C++ for Sonivate, C++ for Interson). The toolkit wraps the native device APIs to the OpenIGTLink message protocol. The folder itkpocus contains the itkpocus Python library for preprocessing video files. Video files from the various manufacturers are converted into Insight Toolkit (ITK) itk.Image objects and file formats for image processing.

Roadmap

Always

  • Contributions for other device support

Q3-Q4 2021

  • Automated quality assessment using the CIRS-040GSE phantom
  • Examples using MONAI

2022

  • Automated optic nerve sheath measurement

Publications

Contact

For bugs/issues/questions about using ITKPOCUS, please submit an issue using the Github tracker. For questions about the project or future collaboration, contact Brad Moore and Stephen Aylward.

itkpocus's People

Contributors

aylward avatar brad-t-moore avatar ioluv avatar jcfr avatar nenetto avatar samuelgerber avatar sjh26 avatar tao558 avatar thewtex avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

itkpocus's Issues

Remove PyDICOM dependency

Currently using PyDICOM to read Sonoque dicom images. Evaluate what is missing from GDCM so that ITK IO can be used.

How open-source friendly are APIs, SDKs of the suported/tested devices? and what other features the supported devices offer (image quality, frame streaming, regulatory approvals, AI-based US, etc)?

Thanks for sharing such great project!

I wonder if there is any sort of comparison of the supported portable devices and how open-source friendly are such devices with other features (costs, regulatory approvals, AI-based US, etc). Let me draft a table based on I can see in the repo. The table might provide a bit of the overview for the supported devices with ITKPOCUS. I guess as I dig in into the devices I will add a bit more details but feel free to edit it or maybe suggest create a PR to be add it in the documentation.

Device brand, url Model Cost (date) API programming language, SDK, OS-support, github, etc Image quality, frame streaming speed, others? Regulatory approvals AI-based US? others?
clarius https://clarius.com/ C3 HD - Multipurpose cost? Android/Java - https://github.com/clariusdev image quality? regulatory? https://hd.clarius.com/ai/
interson https://interson.com/ GP-C01? SP-L01? cost? C++, Fully supported on Windows 32/64 bit with Visual Studio 2105 and above image quality? USA FDA 510(k) clearance, EU CE Mark and MDD 93/42 EEC compliant, ISO 13485:2016 compliant and certified, Safety testing, IEC 60601 safety and EMC, Materials biocompatibility, Acoustic power output AI-based US?
sonovate https://sonivate.com SonicEye® Dual-Array Portable System? cost Visual Studio 2019, Windows SDK 10.0.19041.0 image quality? regulatory? AI-based US?
Butterfly https://www.butterflynetwork.com/uk/ model? cost? As of June 2021, Butterfly does not a provide an SDK image quality? regulatory? AI-based US?
Sonoque https://www.sonoque.com/ model? cost? As of June 2021, Sonoque does not a provide an SDK image quality? regulatory? AI-based US?
add more brand? model? cost? api,etc? image quality? regulatory? AI-based US?

Miguel

Add Interson IO

Interson doesn't store overlays in its native formats, so preprocessing isn't necessary, but the IO isn't implemented in Python.

Revise the Spinx workflow

I'm having difficulty getting the out-of- docs/ .md files to render images correctly. I've tried using the myst-parser and m2r2 but the documentation isn't great and they simply aren't working.

Cannot stream data into slicer

Hello, I connected the clarius scanner, android tablet, and PC all under the same wifi network, and did everything as per readme. Slicer say the connection status is ON, however I do not see any data under Data I/O in slicer. We were able to ping the IP as well. Please let me know if I am missing something obvious.

clarius ruler spacing

Clarius ruler spacing is variable, or at the least, newly changed to 0.2cm per tick as opposed to 1cm per tick. Need to update API to take spacing as a parameter and think long-term about making it discoverable.

Confirm the compatibility between C++ OpenIGTLink and pyigtl

A write-up confirming the relationship between the 4x4 matrix used in pyigtl and OpenIGTLink and ITK image metadata. In seems that pygitl doesn't encode the spacing and direction directly (inferring it from the 4x4 matrix) but then parts of the OpenIGTLink standard suggest these are separate fields. Recommend examining the OpenIGTLink C++ implementation and the pygitl implementation to confirm.

Fix ClariusStream

  1. Add mobileapi as an external dependency, not including the source
  2. Prove a local.properties_template and add it to build instructions
  3. Find a way to automated the empty libpthread.a generation
  4. Separate OpenIGTLink-Android into its own build

BUG: Clarius spacing

The Clarius spacing is set to 1.0 and needs to instead pull the micronsPerPixel from the Clarius API.

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.