在MatLab中打开正电子发射层析成像(PET) DICOM图像并正确解释像素值?

时间:2022-06-01 19:30:02

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.

我刚开始处理DICOM的图像,远离他们的本地制造商软件。我正试着从一组重建的跨轴切片到MatLab中,对一个PET图像进行dicomread。我的目标是做一些简单的分割,并最终确定该部分的最大和最小像素值。但是,我在将存储值转换为本地系统上所看到的值时遇到了麻烦。

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.

该图像被加载到MatLab中作为一个int16类。最大像素值总是32767,无论我从这个序列中加载哪个切片。我通过在他们的本地系统上查看图像知道每个片中的最大像素值是不同的。

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.

我已经检查了重比例尺值和重尺度截距值,而重尺度关系似乎是线性的。我应该再做一次调整吗?在重建过程中,我假定所有其他的修正(如衰变、散射和randoms)。

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).

任何帮助都会被欣赏(但愿我错过了一些简单的东西!)我已经发布了从下面的标题中获取的DICOM信息(不要担心,图像是一个幽灵,所以没有病人识别数据)。

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

2 个解决方案

#1


1  

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?

最大像素值是32767,也就是2的15次方减1。重新尺度的斜率不重要吗?

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).

这可能会因每个片的不同而不同,像素值应该乘以这个值(也应该加上截距,但这是零)。

#2


1  

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.

在主要的扫描仪制造商(Siemens, GE, Philips)中,我只遇到了一个切片的RescaleSlope值,当使用GE PET相机时。然而,检查RescaleSlope和RescaleIntercept总是一个好主意。关于fdgpet的QIBA工作组提供了一系列的建议,以及从DICOM数据中直接得出的SUV计算的伪代码。

#1


1  

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?

最大像素值是32767,也就是2的15次方减1。重新尺度的斜率不重要吗?

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).

这可能会因每个片的不同而不同,像素值应该乘以这个值(也应该加上截距,但这是零)。

#2


1  

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.

在主要的扫描仪制造商(Siemens, GE, Philips)中,我只遇到了一个切片的RescaleSlope值,当使用GE PET相机时。然而,检查RescaleSlope和RescaleIntercept总是一个好主意。关于fdgpet的QIBA工作组提供了一系列的建议,以及从DICOM数据中直接得出的SUV计算的伪代码。