Show HN: DICOM Medical Image Parser in Go
github.com
github.com
Is there anything known about the reason for a fork rather than contributing back to the original?
The goal here is to have a featured implementation in Go that's easy to work with as a library and easy to iterate on and add new features on top of. This library unpacks most standard elements and metadata inside the dicom, in addition to multiple image frames that may be stored in the dicom in a variety of formats. More utils for normalizing and working with these images are coming soon! Also will be looking forward to dumping the dicom data into protocol buffers (that I also helped generate at github.com/gradienthealth/dicom-protos).
As for the forking--I did a lot of work on the parent fork (which isn't maintained anymore) and decided to introduce a lot of API breaking changes and opinionated new features on my actively maintained fork so decided to move ahead with a hard fork (with all the git history and credit maintained). You can see the original author's blessing here: https://www.reddit.com/r/golang/comments/bnu47l/high_perform...
One thing that would be helpful (and perhaps it's already included and I just haven't seen it?) is a set of functions to make the parsed image appropriate for display.
Right now, the raw pixel values are given. To turn this into an image, you have to determine the word size (e.g., 16 bits), then interpret the results in the context of the window and center values from the metadata. For my current batch of images, for example, unless I do postprocessing, the images just look black.
I recently introduced a CommonFrame interface that wraps both Native pixel data and encapsulated pixel data that gives you a clean Go stdlib image.Image to use for post processing (no matter the underlying data). Introducing some options to this that allows setting of window width and level would also make sense!
I always wonder, what happens to an upstream source if one of the downstream guy loses interest.
The most authoritative source on DICOM is the free standard:
https://www.dicomstandard.org/current/
It is not particularly easy to read and thus not a great starting place.
The DICOM forum is a good place to ask questions:
https://groups.google.com/forum/#!forum/comp.protocols.dicom
David Clunie, a very nice guy and the editor of the DICOM standard, is active on this forum. He also has is own website that has many other links:
If you are interested in parsing or generating DICOM files, our DICOM standard browser is a great resource:
https://dicom.innolitics.com/ciods
I also wrote a very brief article about DICOM, which was meant to be the first in a series of articles, but alas I have been to busy to continue them:
https://innolitics.com/articles/dicom-i-facilitating-interop...
Oh, and here is a pretty good blog about DICOM:
http://dicomiseasy.blogspot.com
Checkout his "DICOM Tutorial" in the sidebar.
If you have any particular questions about DICOM, message me and I would be happy to try and answer them.
We just added a new feature yesterday---it is a new tab that allows you to analyze a DICOM file within the browser, see the values it contains, and easily cross check the tags with the standard. Any feedback would be welcome.
Here is a screenshot of the DICOM file analysis feature in action:
https://innolitics.com/img/dicom-file-upload.png
Edit: make it clear the files are not uploaded to any server, but stay within the browser
> To accelerate progress in medical imaging by sharing knowledge, creating tools, and providing quality services to our clients, with the ultimate purpose of improving patient health. We do so while providing meaningful, flexible, and financially rewarding careers to our team.
So it is nice to hear that, to some degree, we are accomplishing the "creating tools" part of this.
Please do let us know if you have ideas for improvements.