0

I quote :

DICOM supports up to 65,536 (16 bits) shades of gray for monochrome image display, thus capturing the slightest nuances in medical imaging. In comparison, converting DICOM images into JPEGs or bitmaps (limited to 256 shades of gray) often renders the images unacceptable for diagnostic reading. - Digital Imaging and Communications in Medicine (DICOM): A Practical Introduction and Survival Guide by Oleg S. Pianykh

As I am a beginner in image processing I'm used to process images colored and monochrome with 256 levels, so for Dicom images, in which representation I have to process pixels without rendering them to 256 levels?, because of the loss of information.

note: If you can put a better tittle for this question, please feel free to do so, I've a hard time doing that and didn't come to a good one.

ZSmain
  • 360
  • 1
  • 6
  • 20
  • 3
    The standard method is to use "windowing" and "levelling" where you select a subset of the 16 bit range (windowing) and set the window to a particular point in the data (levelling). Look at some open source code like GDCM to see examples. – john elemans Sep 23 '18 at 18:01
  • @johnelemans, for the moment I don't know much about windowing and leveling, so I do some research, thanks for you, you gave that link for examples, I love learning using examples. – ZSmain Sep 25 '18 at 06:57

1 Answers1

1

First you have to put the image's pixels through the Modality VOI/LUT transform in order to transform modality-dependent values to known units (e.g. Hounsfield or Optical Density).

Then, all your processing must be done on the entire range of values (do not convert 16 bit values to 8 bit).

The presentation (visualization) can be performed using scaled values (using 8 bit values), usually passing the data through the Presentation VOI/LUT (window-width or LUT).

See this for the Modality transform: rescale slope and rescale intercept

See the this for Window/Width: Window width and center calculation of DICOM image

Paolo Brandoli
  • 4,681
  • 26
  • 38
  • Thank you sir, I will come up to this answer (to make it accepted) later after seeing the links and doing some research, thank you again. – ZSmain Sep 25 '18 at 07:04
  • I'm using Dcmtk library and i used the `getVoiLutFunction()` and this function return three different `enum` outputs (`EFV_Linear`, `EFV_Sigmoid`, `EFV_Default`), and for my current CT image I get the the `EFV_Default` value, the question is: how can I make a transformation having that function return value? – ZSmain Sep 30 '18 at 08:06
  • I looked into the standard documentation, and I found that a VOI LUT function can have one of three values (`LINEAR, LINEAR_EXACT, SIGMOID`), and they mention that `LINEAR` in the default one when (VOI LUT Function) attribute is absent, I'm confused, what is the matching one for DCMTK's `EFV_Default` `enum` – ZSmain Sep 30 '18 at 08:21