diff --git a/nibabel/nicom/dicomwrappers.py b/nibabel/nicom/dicomwrappers.py index 329a12b8c4..505d8446e5 100644 --- a/nibabel/nicom/dicomwrappers.py +++ b/nibabel/nicom/dicomwrappers.py @@ -356,6 +356,14 @@ def _scale_data(self, data): # depending on pydicom and dicom files, values might need casting from Decimal to float scale = float(self.get('RescaleSlope', 1)) offset = float(self.get('RescaleIntercept', 0)) + if scale == 1 and offset == 0: + mpseq = self.get('RealWorldValueMappingSequence',None) + if mpseq == None: # compatibility with pydicom < 0.9.7 ???? + mpseq = self.get('RealWorldValueMappings',None) + if mpseq != None and len(mpseq)>0: + mpseq = mpseq[0] + scale = mpseq.get('RealWorldValueSlope',1) + offset = mpseq.get('RealWorldValueIntercept',0) # a little optimization. If we are applying either the scale or # the offset, we need to allow upcasting to float. if scale != 1: