Grassroots DiCoM is a C++ library for DICOM medical files. It is accessible from Python, C#, Java and PHP. It supports RAW, JPEG, JPEG 2000, JPEG-LS, RLE and deflated transfer syntax.
It comes with a super fast scanner implementation to quickly scan hundreds of DICOM files.
It supports SCU network operations (C-ECHO, C-FIND, C-STORE, C-MOVE). PS 3.3 & 3.6 are distributed as XML files.
It also provides PS 3.15 certificates and password based mecanism to anonymize and de-identify DICOM datasets.
- RAW, JPEG, JPEG 2000, JPEG-LS, RLE and deflated
- Quickly scan DICOM for attributes
- SCU: C-ECHO, C-FIND, C-STORE, C-MOVE
- PS 3.3 & PS 3.6/3.7 as XML files
- PS 3.15 de-identify / re-identify (certificates+password based)
- Portable C++
- Bindings: Python, C#, Java, PHP and Perl
- VTK bridge (ImageData and RTSTRUCT)
- Nightly test suite
- Support well-known DICOM issues (PMSCT_RLE1, JAI JPEG-LS, Signed Short JPEG)
Great toolkit for handling DICOM files. Examples are clear. Developer is responsive to requests for fixes or changes.
Very flexible and did a good job writing DICOM files "from scratch", rather than as modifications of existing files. Useful utilities for taking apart files as well, can be used to write tests. C# interface is not perfect, reference counted C++ objects that you create from C# are not always properly managed across the interface, you really need to try to get all the objects you want created on the C++ side. (Eg. using ImageWriter.GetImage rather than creating an image and putting it into the ImageWriter). Also the clever byte packing/unpacking doesn't work smoothly from C#, you have to do it "yourself" a lot with C# encoders. Overall, feels like quite a 'low level' toolkit - very flexible, but lacking explicit modelling of IODs or modules at a higher level. Support via mailing list was excellent.
Currently using GDCM for a personal project, the features and functionality of this project are impressive. My only criticism would be to increase the level of documentation.