Opening a positron emission tomography (PET) DICOM image in MatLab and interpreting the pixel values correctly?

StackOverflow https://stackoverflow.com/questions/18062702

Question

I'm new to processing DICOM images away from their native manufacturer software. I am trying to dicomread a PET image from a set of reconstructed transaxial slices into MatLab. My aim is to do some simple segmentation and finally determine the maximum and minimum pixel value in the segment. However I am having trouble with converting the stored values to their values seen on the native system.

The image is loading into MatLab as an int16 class. The maximum pixel value is always 32767, regardless of which slice I load from the series. I know from viewing the images on their native system that the maximum pixel value in each slice is different.

I've checked the rescale value and rescale intercept values and the rescale relationship appears to be linear. Is there another correction I should be making? I assume all other corrections (e.g. decay, scatter and randoms) are made during the reconstruction process.

Any help would be appreciated (hopefully I'm missing something simple!).I've posted the DICOM info retrieved from the header below (Don't worry, the images are of a phantom so there is no patient identifying data).

Regards,

Ross

                                   Filename: [1x76 char]
                           FileModDate: '26-Jul-2013 10:50:42'
                              FileSize: 38356
                                Format: 'DICOM'
                         FormatVersion: 3
                                 Width: 128
                                Height: 128
                              BitDepth: 16
                             ColorType: 'grayscale'
        FileMetaInformationGroupLength: 182
            FileMetaInformationVersion: [2x1 uint8]
               MediaStorageSOPClassUID: '1.2.840.10008.5.1.4.1.1.128'
            MediaStorageSOPInstanceUID: [1x49 char]
                     TransferSyntaxUID: '1.2.840.10008.1.2.1'
                ImplementationClassUID: '1.2.840.113619.6.55'
          SourceApplicationEntityTitle: 'dst01'
                IdentifyingGroupLength: 484
                  SpecificCharacterSet: 'ISO_IR 100'
                             ImageType: 'ORIGINAL\PRIMARY'
                  InstanceCreationDate: '20130522'
                  InstanceCreationTime: '171655'
                    InstanceCreatorUID: '1.2.840.113619.1.131'
                           SOPClassUID: '1.2.840.10008.5.1.4.1.1.128'
                        SOPInstanceUID: [1x49 char]
                             StudyDate: '20130514'
                            SeriesDate: '20130514'
                       AcquisitionDate: '20130514'
                           ContentDate: '20130522'
                             StudyTime: '142911'
                            SeriesTime: '143208.00'
                       AcquisitionTime: '143208.00'
                           ContentTime: '171655'
                       AccessionNumber: ''
                              Modality: 'PT'
                          Manufacturer: 'GE MEDICAL SYSTEMS'
                       InstitutionName: 'NHS TRUST'
                ReferringPhysicianName: [1x1 struct]
                           StationName: 'dst01'
                      StudyDescription: ''
                     SeriesDescription: 'WB_3D_VuePoint'
                 PhysicianReadingStudy: [1x1 struct]
                          OperatorName: [1x1 struct]
                 ManufacturerModelName: 'Discovery STE'
              Private_0009_GroupLength: 2714
             Private_0009_10xx_Creator: 'GEMS_PETD_01'
             Private_0009_11xx_Creator: 'GEMS_GENIE_1'
                     Private_0009_1002: 'SOLID_TEST'
                     Private_0009_1005: '20130514143030.00'
                     Private_0009_1006: 0
                     Private_0009_100a: [1x45 char]
                     Private_0009_100d: '20130514143208.00'
                     Private_0009_100e: '20130514143055.00'
                     Private_0009_1013: [1x59 char]
                     Private_0009_1014: 'Sternal Notch'
                     Private_0009_1015: 'SN'
                     Private_0009_1016: 0
                     Private_0009_1017: 0
                     Private_0009_1018: 0
                     Private_0009_1019: 0
                     Private_0009_101a: 1
                     Private_0009_101b: 0
                     Private_0009_101c: 1
                     Private_0009_101d: 0
                     Private_0009_101e: 1
                     Private_0009_101f: 1
                     Private_0009_1020: 0
                     Private_0009_1021: 1
                     Private_0009_1022: 0
                     Private_0009_1023: 0
                     Private_0009_1024: 2
                     Private_0009_1025: 2
                     Private_0009_1026: 23
                     Private_0009_1027: 1
                     Private_0009_1028: 1
                     Private_0009_1029: 0
                     Private_0009_102a: 0
                     Private_0009_102b: 70
                     Private_0009_102c: 153
                     Private_0009_102d: 0
                     Private_0009_102e: 0
                     Private_0009_1034: 0
                     Private_0009_1035: 0
                     Private_0009_1036: 'FDG -- fluorodeoxyglucose'
                     Private_0009_1037: ''
                     Private_0009_1038: 0
                     Private_0009_1039: ''
                     Private_0009_103a: 0
                     Private_0009_103b: ''
                     Private_0009_103c: 0
                     Private_0009_103d: ''
                     Private_0009_103e: '18F'
                     Private_0009_103f: 6588
                     Private_0009_1040: 0.9700
                     Private_0009_104d: 0
                     Private_0009_104e: 23
                     Private_0009_104f: 23
                     Private_0009_1050: 7
                     Private_0009_1051: 7
                     Private_0009_1052: 32
                     Private_0009_1053: 800
                     Private_0009_1054: 650
                     Private_0009_1055: 425
                     Private_0009_1056: [1x49 char]
                     Private_0009_1057: [1x48 char]
                     Private_0009_1059: [1x49 char]
                     Private_0009_105a: 0
                     Private_0009_105c: [1x49 char]
                     Private_0009_105d: [1x45 char]
                     Private_0009_105e: [1x51 char]
                     Private_0009_105f: 'SOLID_TEST'
                     Private_0009_1062: [1x44 char]
                     Private_0009_1063: 0
                     Private_0009_1064: 0
                     Private_0009_1066: 119.5000
                     Private_0009_1067: -79.8540
                     Private_0009_1068: '20130514143123.00'
                     Private_0009_1069: 553
                     Private_0009_106a: -79.9000
                     Private_0009_106b: 0
                     Private_0009_106c: '20130514143208.00'
                     Private_0009_106d: 180
                     Private_0009_1070: 0
                     Private_0009_1071: 90674329
                     Private_0009_1072: 0
                     Private_0009_1073: 1
                     Private_0009_1074: 255
                     Private_0009_107c: 0
                     Private_0009_107d: 2
                     Private_0009_107e: 0
                     Private_0009_107f: 0
                     Private_0009_1080: 0
                     Private_0009_1081: 0
                     Private_0009_108b: 5
                     Private_0009_108c: 2
                     Private_0009_108d: 0.0960
                     Private_0009_108e: 0
                     Private_0009_108f: 0
                     Private_0009_1090: 0
                     Private_0009_1091: 0
                     Private_0009_1092: 0
                     Private_0009_1093: 0
                     Private_0009_1094: 0
                     Private_0009_1095: 0
                     Private_0009_1096: [1x49 char]
                     Private_0009_1097: [1x51 char]
                     Private_0009_1098: [1x49 char]
                     Private_0009_1099: ''
                     Private_0009_109a: 0
                     Private_0009_109b: 0
                     Private_0009_109c: ''
                     Private_0009_109d: 0
                     Private_0009_109e: 0
                     Private_0009_109f: 0
                     Private_0009_10a0: 0
                     Private_0009_10a1: 0
                     Private_0009_10a2: 0
                     Private_0009_10a3: 0
                     Private_0009_10a6: 26
                     Private_0009_10a7: 0
                     Private_0009_10ab: 0
                     Private_0009_10ac: 0
                     Private_0009_10ad: ''
                     Private_0009_10ae: ''
                     Private_0009_10b2: 2
                     Private_0009_10b3: 20
                     Private_0009_10b4: 70
                     Private_0009_10b5: 0
                     Private_0009_10b6: 0
                     Private_0009_10b7: 0
                     Private_0009_10b8: 0
                     Private_0009_10b9: 0
                     Private_0009_10ba: 1
                     Private_0009_10bb: 6
                     Private_0009_10bc: 0
                     Private_0009_10bd: 0
                     Private_0009_10be: 0
                     Private_0009_10bf: 0
                     Private_0009_10c0: 0
                     Private_0009_10c1: 0
                     Private_0009_10c2: 0
                     Private_0009_10c3: 0
                     Private_0009_10c4: 6
                     Private_0009_10c5: 0
                     Private_0009_10c6: 0
                     Private_0009_10c7: 0
                     Private_0009_10cb: 0.8601
                     Private_0009_10cc: 0.1256
                     Private_0009_10cd: 0.8240
                     Private_0009_10ce: -0.0254
                     Private_0009_10cf: 0.5000
                     Private_0009_10d0: -0.0483
                     Private_0009_10d5: 0
                     Private_0009_10d6: 70.5000
                     Private_0009_10d7: -79.9000
                     Private_0009_10d8: 1
                     Private_0009_10db: 3
                     Private_0009_10dc: 2
                     Private_0009_10df: 47
                     Private_0009_10e2: 10
                     Private_0009_10e4: '3D_AC'
                     Private_0009_10e5: 0
                     Private_0009_10e6: 0
                     Private_0009_10e7: 0
                     Private_0009_10e9: 0
                     Private_0009_10ea: 0
                     Private_0009_10eb: 0
                     Private_0009_10ec: 0
                     Private_0009_111e: [1x49 char]
                     Private_0009_1146: [1x49 char]
                    PatientGroupLength: 96
                           PatientName: [1x1 struct]
                             PatientID: 'SOLID_TEST'
                      PatientBirthDate: ''
                            PatientSex: ''
                            PatientAge: ''
                           PatientSize: 0
                         PatientWeight: 0
                           EthnicGroup: ''
              AdditionalPatientHistory: ''
              Private_0017_GroupLength: 46
             Private_0017_10xx_Creator: 'GEMS_PETD_01'
                     Private_0017_1004: '20130207140047.00'
                AcquisitionGroupLength: 230
                        SliceThickness: 3.2700
       AcquisitionTerminationCondition: 'TIME'
             AcquisitionStartCondition: 'MANU'
         AcquisitionStartConditionData: 0
   AcquisitionTerminationConditionData: 0
                       SoftwareVersion: '41.04'
                          ProtocolName: 'WB 3D'
                           TriggerTime: 0
                             FrameTime: 0
                     IntervalsAcquired: 0
                     IntervalsRejected: 0
                ReconstructionDiameter: 700
                    GantryDetectorTilt: 0
                      FieldOfViewShape: 'CYLINDRICAL RING'
                 FieldOfViewDimensions: [2x1 double]
                        CollimatorType: 'NONE'
                   ActualFrameDuration: 180000
                       PatientPosition: 'HFS'
              Private_0019_GroupLength: 42
             Private_0019_10xx_Creator: 'GEMS_PETD_01'
                     Private_0019_1004: '20130207140602'
               RelationshipGroupLength: 322
                      StudyInstanceUID: [1x51 char]
                     SeriesInstanceUID: [1x49 char]
                               StudyID: '6893'
                          SeriesNumber: 401
                        InstanceNumber: 22
                  ImagePositionPatient: [3x1 double]
               ImageOrientationPatient: [6x1 double]
                   FrameOfReferenceUID: [1x59 char]
            PositionReferenceIndicator: 'SN'
                         SliceLocation: 1.8500
          ImagePresentationGroupLength: 218
                       SamplesPerPixel: 1
             PhotometricInterpretation: 'MONOCHROME2'
                                  Rows: 128
                               Columns: 128
                          PixelSpacing: [2x1 double]
                        CorrectedImage: [1x40 char]
                         BitsAllocated: 16
                            BitsStored: 16
                               HighBit: 15
                   PixelRepresentation: 1
               SmallestImagePixelValue: 0
                LargestImagePixelValue: 32767
                      RescaleIntercept: 0
                          RescaleSlope: 0.3555
                 LossyImageCompression: '00'
                     Unknown_0040_0000: 158
            AcquisitionContextSequence: [1x1 struct]
         NuclearAcquisitionGroupLength: 808
             EnergyWindowRangeSequence: [1x1 struct]
RadiopharmaceuticalInformationSequence: [1x1 struct]
                        NumberOfSlices: 47
                  TypeOfDetectorMotion: 'NONE'
        PatientOrientationCodeSequence: [1x1 struct]
PatientOrientationModifierCodeSequence: [1x1 struct]
 PatientGantryRelationshipCodeSequence: [1x1 struct]
                            SeriesType: 'STATIC\IMAGE'
                                 Units: 'BQML'
                          CountsSource: 'EMISSION'
               RandomsCorrectionMethod: 'SING'
           AttenuationCorrectionMethod: 'measured,, 0.096000 cm-1,'
                       DecayCorrection: 'START'
                  ReconstructionMethod: '3D IR'
           DetectorLinesOfResponseUsed: '0'
               ScatterCorrectionMethod: 'Model Based'
                             AxialMash: [2x1 double]
                        TransverseMash: 2
                CoincidenceWindowWidth: 0
                    FrameReferenceTime: 0
       PrimaryPromptsCountsAccumulated: 0
            SecondaryCountsAccumulated: 0
                SliceSensitivityFactor: 1
                           DecayFactor: 1.0095
                 DoseCalibrationFactor: 1139
                 ScatterFractionFactor: 0.3174
                        DeadTimeFactor: 1.1243
                            ImageIndex: 26
                  PixelDataGroupLength: 32780
Was it helpful?

Solution

I work in mammo and have no experience of PET so take what I say here with a pinch of salt.

The maximum pixel value is 32767 which is 2 to the power of 15 minus 1. Is the rescale slope not of importance?

RescaleSlope: 0.3555

Presumably this can vary for each slice and the pixel values should be multiplied by this value (intercept should be added too but this is zero).

OTHER TIPS

Out of the major scanner manufacturers (Siemens, GE, Philips) I have only encountered a slice-by-slice RescaleSlope value when working with GE PET cameras. However, it is always a good idea to check RescaleSlope and RescaleIntercept. The QIBA working group on FDG-PET has a collection of recommendations and also pseudocode for SUV calculations straight from the DICOM data.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top