Using the CTP DicomPixelAnonymizer
The CTP DicomPixelAnonymizer is a pipeline stage that modifies regions of pixels in a DICOM image. It is configured with a script file that specifies which regions are to be modified, based on information in the non-pixel part of the DICOM dataset. This article describes how to use the DicomPixelAnonymizer to best advantage. The intended audience for this information is clinical trial coordinators at principal investigator sites.
1 Supported Transfer Syntaxes
Tthe DicomPixelAnonymizer can modify any uncompressed DICOM image. It can also modify compressed images that have the JPEGBaseline transfer syntax (1.2.840.10008.1.2.4.50).
For uncompressed images, the stage's test attribute specifies whether to replace modified regions with black or mid-gray, the latter typically used during initial configuration to make it clear which regions are being modified.
For JPEGBaseline images, the stage modifies the internal compressed values directly, thus avoiding the requirement to decompress the image and subsequently recompress it, with the accompanying loss of quality. The effect is a blurring of the regions that renders them unintelligible.
Here are the effects on a sample image that is encoded as JPEGBaseline.
This is the original image:
This is the result of decompressing the original image to obtain an uncompressed version and then processing it with the test attribute set to yes:
This is the result of decompressing the original image to obtain an uncompressed version and then processing it with the test attribute set to no:
This is the result of processing the original image without decompression:
3 Configuration Hints
When configuring a pipeline that may have to process both JPEGBaseline and non-JPEGBaseline compressed images, you must decompress the non-JPEGBaseline images. The easiest way to do so is to include a DicomDecompressor stage before the DicomPixelAnonymizer stage. To avoid decompressing the JPEGBaseline images, you can set the DicomDecompressor's skipJPEGBaseline attribute to yes. This will ensure that all images will be in a form that the DicomPixelAnonymizer can accept.
Note that, as described in The CTP DICOM Pixel Anonymizer, the DicomPixelAnonymizer determines whether to modify an image based on an examination of the image's non-pixel data (sometimes called the image's header). It is important, therefore, that if the header elements are also to be de-identified, the DicomPixelAnonymizer must occur in the pipeline before the DicomAnonymizer modifies the header elements.
If it is desired to recompress images after modification, you can include a DicomTranscoder stage after the DicomPixelAnonymizer. The DicomTranscoder does not support transcoding to the JPEGBaseline transfer syntax. Normally, you would transcode to the JPEGLossLess transfer syntax (1.2.840.10008.1.2.4.70), but it doesn't make sense to transcode a JPEGBaseline image as it is already compressed better than JPEGLossLess, and transcoding can only degrade it. To avoid this situation, you can set the DicomTranscoder's skipJPEGBaseline attribute to yes.
Note that you can use the script feature of the DicomDecompressor and DicomTranscoder stages to do much more sophisticated selection of which images to decompress or recompress.