We are often asked how to persuade a DICOM printer to print images (normally plain radiographs) “TRUE” size. This is normally possible (depending on the capabilities of the printer) but is harder than expected, as the DICOM standard requires most of the relevant attributes (pixel size etc.) to be removed from an image before it is sent to the printer :-( The problem is compounded by the fact that the default behaviour of almost all printers is “scale to fit” - fitting the image as best they can into the space available on the film.
Therefore, the only way that DICOM allows you to specify any explicit size is by using the “Requested Size” property of the Basic Image Box, which is (oddly) the width of the image (in mm), leaving the printer to deduce a matching height. The steps required for true size printing are therefore:
- Calculate the true width of your image (pixel size * number of pixels)
- Set the value into the Requested Size property of the image box
- Set any other values required for your articular printer to persuade it not to scale the image to fit
Using DicomObjects, this is done as follows.
DicomPrint printer = new DicomPrint(); // Step 1 This is for plain films - use 0028,0030 (Pixel Spacing) for CT/MRI etc var pixelSizes = image[Keyword.ImagerPixelSpacing].Value as int; // Bizarre as it may seem, width is the second value here! var trueWidth = pixelSizes * image.Size.Width; // Step 2 Add the requested size printer.ImageBox.Add(Keyword.RequestedImageSize, trueWidth); // Step 3 printer.ImageBox.Add(Keyword.RequestedDecimateCropBehavior, "CROP"); printer.ImageBox.Add(Keyword.MagnificationType, "CUBIC");
'Step 1 This is for plain films - use 0028,0030 (Pixel Spacing) for CT/MRI etc PixelSizes = Image.Attributes(&h0018, &h1164).Value 'Bizarre as it may seem, width is the second value here! TrueWidth = PixelSizes(2) * Image.SizeX ' Step 2 Add the requested size PrinterObject.ImageBox.Attributes.Add &h&h2020, &h0030, TrueWidth ' Step 3 PrinterObject.ImageBox.Attributes.Add &h2020, &h0040, "CROP" PrinterObject.ImageBox.Attributes.Add &h2010, &h0060, "CUBIC"
In practice, DICOM printers are variable in what they need for these last few lines, designed to allow “non-best-fit” printing, and some of the attributes may need to be applied to the FilmBox instead of the ImageBox (DICOM theoretically allows both), so if at first you don’t succeed, then please try some combination of the values below (and edit this page to reflect your experience with a particular printer!)
Alternative values for 2020, 0040 : Requested Decimate / Crop Behaviour
Alternative values for 2010, 0060, “NONE” : Magnification Type
Of course, the irony of all this work is that plain radiographs are never really “true size” - as they are magnified “shadows” of the real anatomy - referred to in radiology as “Geometric Magnification”!