Search code examples
dicom

Understanding DICOM image attributes to get axial/coronal/sagittal cuts


I have to write a program in c# able to parse DICOM and display axial, coronal and sagittal cuts.

Seems like it's a lot of work, but I have to do it so !

Big first step would be to understand DICOM files I guess.

I've been reading this tutorial http://dicomiseasy.blogspot.ru/ but he's using this RZDCX library that I'm not allowed to buy.

There are still some good explanations about DICOM attributes and I've also been reading some parts of the standard (part 3 above all)

But I'm having big trouble to understand them all. There are those image attributes: pixel representation, pixel data, planar configuration... I guess it's very important to understand them to be able to display the image, and I think I should learn more about how pixels actually work to have a better understanding.

But there is still one thing I really can't figure out :

How or where am I suppose to have this three different cuts? (axial/coronal/sagittal). I've been looking for attributes about them in the standard but I did not find any. So may be we find them with some kind of calculation, but I don't know which variables I should use with which formula?


Solution

  • You are right, this is quite a big task! And you are probably not going to find someone here who can provide a step-by-step tutorial for you, However some hints:

    1. The DICOM standard sometimes appears daunting and needs a steep learning curve at the beginning. The DICOM Cookbook helped me a lot to become familiar with the terms and the structure of the documentation.
    2. There are plenty of other toolkits around, some of them are free and ship with a very liberal license, such as DCMTK. These take away the burden to learn how the information is encoded in the various binary formats which slightly differ and provide a uniform API to access the information quite easily. I would strongly advise against writing your own DICOM implementation from scratch.
    3. The DICOM attributes which define the 3D position and orientation of a slice or frame are ImagePositionPatient (0020,0032) , ImageOrientationPatient (0020,0037) and PixelSpacing (0028,0030). These can be used to order the slices correctly and calculate interpolated intersection slices.
    4. Make sure to look at the Enhanced CT/MR Information object definitions. In general there are two ways to store a stack of images in DICOM: Singleframe (one file per image) and Multiframe (one file for one or more stacks of images). They differ in the way that you can obtain the information mentioned above.

    HTH and good luck!