32-bit dicoms and Horos

128 views
Skip to first unread message

Jack Miller

unread,
Feb 11, 2021, 8:43:57 AM2/11/21
to Horos Project
Dear all, 

Firstly, thank you very much for your efforts on Horos -- I am an academic, and it is great. (I've donated in the past!) 

Secondly, I've got an interesting problem and think I have discovered a bug. I've been manually reconstructing dicoms on the basis of MRI data with novel techniques, and in particular the resulting data has a very high dynamic range, reflecting the ~48 bit ADC (and reported ~169 dB) in my vendors' MRI scanner. For this application, looking at lung imaging with novel UTE techniques, this is required. 

I've therefore been writing 32-big derived MR dicoms. Specifically, the relevant tags are: 

BitsAllocated (0028,0100) 32
BitsStored (0028,0101) 32
HighBit (0028,0102) 31

These "work" and open fine in other dicom viewers, e.g. Fiji / ImageJ, FSLEyes, and Matlab, etc (ignore everything outside of the lung field!) 

Screenshot 2021-02-11 at 13.27.34.png
I'd like to open these in Horos, but alas instead of seeing an image, I get basically a binarised image, 0 if the image intensity is exactly 0; 1 if not: 

Screenshot 2021-02-11 at 13.27.57.png

The intensity in every ROI shown is exactly 0; the mean, STDev, sum, min and max are all 0. I'm using Horos v4.0.0 RC5. 

The full metadata (dcmdump) for the tags are below -- any advice is welcome! I'd like to use Horos's excellent features, in particular for the interactive editing of CLUT tables. 

I presume this might be an integer overflow bug somewhere -- 32 bit MR dicoms are probably not "usual". 

Thanks! 

-- Jack 

-----------------------------------------------------------------


# Dicom-File-Format

# Dicom-Meta-Information-Header
# Used TransferSyntax: Little Endian Explicit
(0002,0000) UL 210                                      #   4, 1 FileMetaInformationGroupLength
(0002,0001) OB 00\01                                    #   2, 1 FileMetaInformationVersion
(0002,0002) UI =MRImageStorage                          #  26, 1 MediaStorageSOPClassUID
(0002,0003) UI [1.3.6.1.4.1.9590.100.1.2.315109134610467614928722853821824337275] #  64, 1 MediaStorageSOPInstanceUID
(0002,0010) UI =LittleEndianExplicit                    #  20, 1 TransferSyntaxUID
(0002,0012) UI [1.3.6.1.4.1.9590.100.1.3.100.9.4]       #  32, 1 ImplementationClassUID
(0002,0013) SH [MATLAB IPT 9.4]                         #  14, 1 ImplementationVersionName

# Dicom-Data-Set
# Used TransferSyntax: Little Endian Explicit
(0008,0005) CS [ISO_IR 100]                             #  10, 1 SpecificCharacterSet
(0008,0008) CS [DERIVED\PRIMARY\ND\ND]                  #  22, 4 ImageType
(0008,0012) DA [20210113]                               #   8, 1 InstanceCreationDate
(0008,0013) TM [192606.682045]                          #  14, 1 InstanceCreationTime
(0008,0016) UI =MRImageStorage                          #  26, 1 SOPClassUID
(0008,0018) UI [1.3.6.1.4.1.9590.100.1.2.315109134610467614928722853821824337275] #  64, 1 SOPInstanceUID
(0008,0020) DA [20201203]                               #   8, 1 StudyDate
(0008,0021) DA [20201203]                               #   8, 1 SeriesDate
(0008,0022) DA [20201203]                               #   8, 1 AcquisitionDate
(0008,0023) DA [20201203]                               #   8, 1 ContentDate
(0008,0030) TM [151400.602000]                          #  14, 1 StudyTime
(0008,0031) TM [153445.071000]                          #  14, 1 SeriesTime
(0008,0032) TM [153352.257500]                          #  14, 1 AcquisitionTime
(0008,0033) TM [153445.078000]                          #  14, 1 ContentTime
(0008,0050) SH (no value available)                     #   0, 0 AccessionNumber
(0008,0060) CS [MR]                                     #   2, 1 Modality
(0008,0070) LO [SIEMENS]                                #   8, 1 Manufacturer
(0008,0080) LO [xxx]                            #  12, 1 InstitutionName
(0008,0081) ST [xxx] #  46, 1 InstitutionAddress
(0008,0090) PN (no value available)                     #   0, 0 ReferringPhysicianName
(0008,1010) SH [Jack]                              #  10, 1 StationName
(0008,1030) LO [Jack^PDM]                               #   8, 1 StudyDescription
(0008,103e) LO [TrophyShot-Gated-NOT-QUANTITATIVE]      #  34, 1 SeriesDescription
(0008,1040) LO [Department]                             #  10, 1 InstitutionalDepartmentName
(0008,1050) PN [JM]                                     #   2, 1 PerformingPhysicianName
(0008,1070) PN [Al]                                     #   2, 1 OperatorsName
(0008,1090) LO [Jack]                                   #   4, 1 ManufacturerModelName
(0008,2111) ST [Reprocessed-1]                          #  14, 1 DerivationDescription
(0010,0010) PN [xxxxx]                        #  16, 1 PatientName
(0010,0020) LO [xxxx]                     #  18, 1 PatientID
(0010,0030) DA [xxxx]                               #   8, 1 PatientBirthDate
(0010,0040) CS [M]                                      #   2, 1 PatientSex
(0010,1010) AS [071Y]                                   #   4, 1 PatientAge
(0010,1020) DS [1.83]                                   #   4, 1 PatientSize
(0010,1030) DS [106]                                    #   4, 1 PatientWeight
(0018,0015) CS [HEART]                                  #   6, 1 BodyPartExamined
(0018,0020) CS [RM]                                     #   2, 1 ScanningSequence
(0018,0021) CS [SP]                                     #   2, 1 SequenceVariant
(0018,0022) CS [CT]                                     #   2, 1 ScanOptions
(0018,0023) CS [2D]                                     #   2, 1 MRAcquisitionType
(0018,0024) SH [fl2d2]                                  #   6, 1 SequenceName
(0018,0025) CS [N]                                      #   2, 1 AngioFlag
(0018,0050) DS [10]                                     #   2, 1 SliceThickness
(0018,0080) DS [6]                                      #   2, 1 RepetitionTime
(0018,0081) DS [1.8]                                    #   4, 1 EchoTime
(0018,0083) DS [12]                                     #   2, 1 NumberOfAverages
(0018,0084) DS [123.258657]                             #  10, 1 ImagingFrequency
(0018,0085) SH [1H]                                     #   2, 1 ImagedNucleus
(0018,0086) IS [2]                                      #   2, 1 EchoNumbers
(0018,0087) DS [3]                                      #   2, 1 MagneticFieldStrength
(0018,0089) IS [512]                                    #   4, 1 NumberOfPhaseEncodingSteps
(0018,0091) IS [2]                                      #   2, 1 EchoTrainLength
(0018,0093) DS [100]                                    #   4, 1 PercentSampling
(0018,0094) DS [100]                                    #   4, 1 PercentPhaseFieldOfView
(0018,0095) DS [1500]                                   #   4, 1 PixelBandwidth
(0018,1000) LO [166021]                                 #   6, 1 DeviceSerialNumber
(0018,1020) LO [syngo MR E11]                           #  12, 1 SoftwareVersions
(0018,1030) LO [TrophyShot-Gated-NOT-QUANTITATIVE]      #  34, 1 ProtocolName
(0018,1060) DS [652.5]                                  #   6, 1 TriggerTime
(0018,1062) IS [910]                                    #   4, 1 NominalInterval
(0018,1090) IS [1]                                      #   2, 1 CardiacNumberOfImages
(0018,1251) SH [Body]                                   #   4, 1 TransmitCoilName
(0018,1310) US 512\0\0\512                              #   8, 4 AcquisitionMatrix
(0018,1312) CS [COL]                                    #   4, 1 InPlanePhaseEncodingDirection
(0018,1314) DS [15]                                     #   2, 1 FlipAngle
(0018,1315) CS [N]                                      #   2, 1 VariableFlipAngleFlag
(0018,1316) DS [0.09032107433218]                       #  16, 1 SAR
(0018,1318) DS [0]                                      #   2, 1 dBdt
(0018,5100) CS [HFS]                                    #   4, 1 PatientPosition
(0020,000d) UI [1.3.12.2.1107.5.2.43.166021.30000020120209401592800000022] #  58, 1 StudyInstanceUID
(0020,000e) UI [1.3.12.2.1107.5.2.43.166021.202012031533412304356563.0.0.0.1] #  60, 1 SeriesInstanceUID
(0020,0010) SH [1]                                      #   2, 1 StudyID
(0020,0011) IS [27]                                     #   2, 1 SeriesNumber
(0020,0012) IS [1]                                      #   2, 1 AcquisitionNumber
(0020,0013) IS [2]                                      #   2, 1 InstanceNumber
(0020,0032) DS [-253.52349311113\-265.91256427765\161.17391967773] #  50, 3 ImagePositionPatient
(0020,0037) DS [1\0\0\0\1\0]                            #  12, 6 ImageOrientationPatient
(0020,0052) UI [1.3.12.2.1107.5.2.43.166021.1.20201203151652623.0.0.0] #  54, 1 FrameOfReferenceUID
(0020,1040) LO (no value available)                     #   0, 0 PositionReferenceIndicator
(0020,1041) DS [161.17391967773]                        #  16, 1 SliceLocation
(0020,4000) LT [UTE]                                    #   4, 1 ImageComments
(0028,0002) US 1                                        #   2, 1 SamplesPerPixel
(0028,0004) CS [MONOCHROME2]                            #  12, 1 PhotometricInterpretation
(0028,0010) US 1536                                     #   2, 1 Rows
(0028,0011) US 1536                                     #   2, 1 Columns
(0028,0030) DS [0.49609375\0.49609375]                  #  22, 2 PixelSpacing
(0028,0100) US 32                                       #   2, 1 BitsAllocated
(0028,0101) US 32                                       #   2, 1 BitsStored
(0028,0102) US 31                                       #   2, 1 HighBit
(0028,0103) US 0                                        #   2, 1 PixelRepresentation
(0028,0106) US 0                                        #   2, 1 SmallestImagePixelValue
(0028,0107) US 65535                                    #   2, 1 LargestImagePixelValue
(0028,1050) DS [0]                                      #   2, 1 WindowCenter
(0028,1051) DS [4294967295]                             #  10, 1 WindowWidth
(0040,0244) DA [20201203]                               #   8, 1 PerformedProcedureStepStartDate
(0040,0245) TM [151400.668000]                          #  14, 1 PerformedProcedureStepStartTime
(0040,0253) SH [MR20201203151400]                       #  16, 1 PerformedProcedureStepID
(0040,0254) LO [Jack^PDM]                               #   8, 1 PerformedProcedureStepDescription
(7fe0,0010) OW 0000\0000\0000\0000\0000\0000\0000\0000\0000\0000\0000\0000\0000... # 9437184, 1 PixelData
 

Todd Jensen

unread,
Feb 12, 2021, 8:28:48 AM2/12/21
to Horos Project
I'm guessing, without looking at the code, that the data is being interpreted as 16-bit as that is the DICOM standard for MR Image Storage SOP Class. if you provide an example slice or two I can try it out and see what can be done to support it. Looks like you are using Matlab to generate the DICOM files.

Maybe open an "issue" (more of a feature request) at https://github.com/horosproject/horos/issues to support non-standard MR type) and attach an example slice. Looks like you have anonymized the data.

Todd Jensen, PhD
Jensen Informatics LLC

Reply all
Reply to author
Forward
0 new messages