Open dgobbi opened 4 years ago
There is an issue here for PET, as well. In PET, the VOI LUT applies to stored values (though this is reported to be inconsistent). However, rescaling must be done with PET since each slice generally has different rescale values (and a different VOI LUT).
For PET, it seems that the display pipeline should ignore the VOI LUT unless it can be made consistent across the image series (e.g. by rescaling the LUT for each image). This is currently beyond the scope of vtk-dicom.
The modality LUT is not part of the MR IOD, but some manufacturers (e.g. Philips) include RescaleSlope and RescaleIntercept in quantitative MR images. Their purpose is not to add a modality LUT, but rather to achieve something similar to real-world value mapping. In other words, the RescaleSlope and RescaleIntercept in these images is not intended to be part of the display pipeline, and the VOI LUT applies directly to the stored values. This is different from CT, where the VOI LUT applies to the modality values (i.e. after rescale).
More info can be found by searching comp.protocols.dicom.
The issue here is that vtkDICOMReader is intended to produce modality values. This means that it should apply Rescale to PET and CT but not to MR (since the stored values are modality values for MR). For MR, rescaling should be done separately by vtkDICOMApplyRescale (which uses RWVM if present, otherwise it uses RescaleSlope and RescaleIntercept).
Currently, it is the responsibility of the user to call
reader->AutoRescaleOff()
for MR images with RescaleSlope. Following the standard, rescaling should always be off for MR (and all other modalities where it isn't in the IOD).