All Projects → suyashkumar → Dicom

suyashkumar / Dicom

Licence: mit
⚡High Performance DICOM Medical Image Parser in Go.

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Dicom

AlizaMS
DICOM Viewer
Stars: ✭ 144 (-77.6%)
Mutual labels:  dicom, medical, medical-imaging
Starviewer
Starviewer, a cross-platform open source medical imaging software
Stars: ✭ 83 (-87.09%)
Mutual labels:  dicom, medical-imaging, medical
Fo Dicom
Fellow Oak DICOM for .NET, .NET Core, Universal Windows, Android, iOS, Mono and Unity
Stars: ✭ 674 (+4.82%)
Mutual labels:  dicom, medical-imaging, medical
clara-dicom-adapter
DICOM Adapter is a component of the Clara Deploy SDK which facilitates integration with DICOM compliant systems, enables ingestion of imaging data, helps triggering of jobs with configurable rules and offers pushing the output of jobs to PACS systems.
Stars: ✭ 31 (-95.18%)
Mutual labels:  dicom, medical, medical-imaging
Medical Datasets
tracking medical datasets, with a focus on medical imaging
Stars: ✭ 296 (-53.97%)
Mutual labels:  medical-imaging, medical
Node Csv
Full featured CSV parser with simple api and tested against large datasets.
Stars: ✭ 3,068 (+377.14%)
Mutual labels:  parser, streaming
Medpy
Medical image processing in Python
Stars: ✭ 321 (-50.08%)
Mutual labels:  dicom, medical
Stream Parser
⚡ PHP7 / Laravel Multi-format Streaming Parser
Stars: ✭ 391 (-39.19%)
Mutual labels:  parser, streaming
wolfpacs
WolfPACS is an DICOM load balancer written in Erlang.
Stars: ✭ 1 (-99.84%)
Mutual labels:  dicom, medical
Mitk
The Medical Imaging Interaction Toolkit.
Stars: ✭ 360 (-44.01%)
Mutual labels:  dicom, medical-imaging
Cornerstonetools
A framework for tools built on top of Cornerstone.
Stars: ✭ 411 (-36.08%)
Mutual labels:  dicom, medical-imaging
neurdicom
RESTful PACS server with plugins
Stars: ✭ 97 (-84.91%)
Mutual labels:  dicom, medical-imaging
TogetherStream
A social and synchronized streaming experience
Stars: ✭ 16 (-97.51%)
Mutual labels:  streaming, real-time
Weasis
Weasis is a DICOM viewer available as a desktop application or as a web-based application.
Stars: ✭ 311 (-51.63%)
Mutual labels:  dicom, medical-imaging
transform-hub
Flexible and efficient data processing engine and an evolution of the popular Scramjet Framework based on node.js. Our Transform Hub was designed specifically for data processing and has its own unique algorithms included.
Stars: ✭ 38 (-94.09%)
Mutual labels:  streaming, real-time
Learning Deep Learning
Paper reading notes on Deep Learning and Machine Learning
Stars: ✭ 388 (-39.66%)
Mutual labels:  medical-imaging, medical
Sparta
Real Time Analytics and Data Pipelines based on Spark Streaming
Stars: ✭ 513 (-20.22%)
Mutual labels:  streaming, real-time
Ctk
A set of common support code for medical imaging, surgical navigation, and related purposes.
Stars: ✭ 498 (-22.55%)
Mutual labels:  dicom, medical-imaging
N3.js
Lightning fast, spec-compatible, streaming RDF for JavaScript
Stars: ✭ 521 (-18.97%)
Mutual labels:  parser, streaming
Lol Html
Low output latency streaming HTML parser/rewriter with CSS selector-based API
Stars: ✭ 566 (-11.98%)
Mutual labels:  parser, streaming

dicom

High Performance Golang DICOM Medical Image Parser

👀 v1.0 just released!

This is a library and command-line tool to read, write, and generally work with DICOM medical image files in native Go. The goal is to build a full-featured, high-performance, and readable DICOM parser for the Go community.

After a fair bit of work, I've just released v1.0 of this library which is essentially rewritten from the ground up to be more canonical go, better tested, has new features, many bugfixes, and more (though there is always more to come on the roadmap).

Some notable features:

  • [x] Parse multi-frame DICOM imagery (both encapsulated and native pixel data)
  • [x] Channel-based streaming of Frames to a client as they are parsed out of the dicom
  • [x] Cleaner Go Element and Dataset representations (in the absense of Go generics)
  • [x] Better support for icon image sets in addition to primary image sets
  • [x] Write and encode Datasets back to DICOM files
  • [x] Enhanced testing and benchmarking support
  • [x] Modern, canonical Go.

Usage

To use this in your golang project, import github.com/suyashkumar/dicom. This repository supports Go modules, and regularly tags releases using semantic versioning. Typical usage is straightforward:


dataset, _ := dicom.ParseFile("testdata/1.dcm", nil) // See also: dicom.Parse which has a generic io.Reader API.

// Dataset will nicely print the DICOM dataset data out of the box.
fmt.Println(dataset)

// Dataset is also JSON serializable out of the box.
j, _ := json.Marshal(dataset)
fmt.Println(j)

More details about the package (and additional examples and APIs) can be found in the godoc.

CLI Tool

A CLI tool that uses this package to parse imagery and metadata out of DICOMs is provided in the cmd/dicomutil package. This tool can take in a DICOM, and dump out all the elements to STDOUT, in addition to writing out any imagery to the current working directory either as PNGs or JPEG (note, it does not perform any automatic color rescaling by default).

Installation

You can download the prebuilt binaries from the releases tab, or use the following to download the binary at the command line using my getbin tool:

wget -qO- "https://getbin.io/suyashkumar/dicom" | tar xvz

(This attempts to infer your OS and 301 redirects wget to the latest github release asset for your system. Downloads come from GitHub releases).

Usage

dicomutil -path myfile.dcm

Note: for some DICOMs (with native pixel data) no automatic intensity scaling is applied yet (this is coming). You can apply this in your image viewer if needed (in Preview on mac, go to Tools->Adjust Color).

Build manually

To build manually, ensure you have make and go installed. Clone (or go get) this repo into your $GOPATH and then simply run:

make

Which will build the dicomutil binary and include it in a build/ folder in your current working directory.

You can also built it using Go directly:

go build -o dicomutil ./cmd/dicomutil

History

Here's a little more history on this repository for those who are interested!

v0

The v0 suyashkumar/dicom started off as a hard fork of go-dicom which was not being maintained actively anymore (with the original author being supportive of my fork--thank you!). I worked on adding several new capabilities, bug fixes, and general maintainability refactors (like multiframe support, streaming parsing, updated APIs, low-level parsing bug fixes, and more).

That represents the v0 history of the repository.

v1

For v1 I rewrote and redesigned the core library essentially from scratch, and added several new features and bug fixes that only live in v1. The architecture and APIs are completely different, as is some of the underlying parser logic (to be more efficient and correct). Most of the core rewrite work happend at the s/1.0-rewrite branch.

Acknowledgements

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].