I am facing one strange issue where my generated MJPEG (UltrasoundMultiframeImageStorag) Dicom file is not able to play by the synapse dicom PACS https://www.fujifilm.com/products/medical/synapse/.
While same Dicom file is working fine for the Horos and MIcroDIcom and Sonic Dicom.
My Dicom file has a resolution of the 720x1280.
Below is my dicom file dump:-
Code: Select all
# Dicom-File-Format
# Dicom-Meta-Information-Header
# Used TransferSyntax: Little Endian Explicit
(0002,0000) UL 220 # 4, 1 FileMetaInformationGroupLength
(0002,0001) OB 00\01 # 2, 1 FileMetaInformationVersion
(0002,0002) UI =UltrasoundMultiframeImageStorage # 28, 1 MediaStorageSOPClassUID
(0002,0003) UI [1.2.276.0.7230010.3.1.4.16777343.11781.1603299615.347640] # 56, 1 MediaStorageSOPInstanceUID
(0002,0010) UI =JPEGBaseline # 22, 1 TransferSyntaxUID
(0002,0012) UI [1.2.276.0.7230010.3.0.3.6.5] # 28, 1 ImplementationClassUID
(0002,0013) SH [OFFIS_DCMTK_365] # 16, 1 ImplementationVersionName
(0002,0016) AE [Android] # 8, 1 SourceApplicationEntityTitle
# Dicom-Data-Set
# Used TransferSyntax: JPEG Baseline
(0008,0005) CS [ISO_IR 100] # 10, 1 SpecificCharacterSet
(0008,0008) CS [DERIVED\PRIMARY\CARDIAC] # 24, 3 ImageType
(0008,0012) DA [20201021] # 8, 1 InstanceCreationDate
(0008,0013) TM [100000.65800] # 12, 1 InstanceCreationTime
(0008,0016) UI =UltrasoundMultiframeImageStorage # 28, 1 SOPClassUID
(0008,0018) UI [1.2.276.0.7230010.3.1.4.16777343.11781.1603299615.347640] # 56, 1 SOPInstanceUID
(0008,0020) DA [20201021] # 8, 1 StudyDate
(0008,0021) DA [20201021] # 8, 1 SeriesDate
(0008,0022) DA [20201021] # 8, 1 AcquisitionDate
(0008,0023) DA [20201021] # 8, 1 ContentDate
(0008,0030) TM [100000.65800] # 12, 1 StudyTime
(0008,0031) TM [100000.65800] # 12, 1 SeriesTime
(0008,0032) TM [100000] # 6, 1 AcquisitionTime
(0008,0033) TM [100000.65800] # 12, 1 ContentTime
(0008,0050) SH (no value available) # 0, 0 AccessionNumber
(0008,0060) CS [US] # 2, 1 Modality
(0008,0068) CS [FOR PRESENTATION] # 16, 1 PresentationIntentType
(0008,0070) LO [TESTManuFacture] # 8, 1 Manufacturer
(0008,0080) LO [Unknown] # 8, 1 InstitutionName
(0008,0090) PN (no value available) # 0, 0 ReferringPhysicianName
(0008,0201) SH [-0700] # 6, 1 TimezoneOffsetFromUTC
(0008,1010) SH (no value available) # 0, 0 StationName
(0008,1030) LO (no value available) # 0, 0 StudyDescription
(0008,1048) PN (no value available) # 0, 0 PhysiciansOfRecord
(0008,1050) PN (no value available) # 0, 0 PerformingPhysicianName
(0008,1070) PN (no value available) # 0, 0 OperatorsName
(0008,1090) LO [TEST Model] # 6, 1 ManufacturerModelName
(0008,1111) SQ (Sequence with explicit length #=1) # 104, 1 ReferencedPerformedProcedureStepSequence
(fffe,e000) na (Item with explicit length #=2) # 96, 1 Item
(0008,1150) UI =ModalityPerformedProcedureStepSOPClass # 24, 1 ReferencedSOPClassUID
(0008,1155) UI [1.2.276.0.7230010.3.1.3.16777343.11781.1603299615.347641] # 56, 1 ReferencedSOPInstanceUID
(fffe,e00d) na (ItemDelimitationItem for re-encoding) # 0, 0 ItemDelimitationItem
(fffe,e0dd) na (SequenceDelimitationItem for re-encod.) # 0, 0 SequenceDelimitationItem
(0008,2111) ST [Lossy JPEG] # 10, 1 DerivationDescription
(0008,2112) SQ (Sequence with explicit length #=1) # 108, 1 SourceImageSequence
(fffe,e000) na (Item with explicit length #=2) # 100, 1 Item
(0008,1150) UI =UltrasoundMultiframeImageStorage # 28, 1 ReferencedSOPClassUID
(0008,1155) UI [1.2.276.0.7230010.3.1.4.16777343.11781.1603299615.347640] # 56, 1 ReferencedSOPInstanceUID
(fffe,e00d) na (ItemDelimitationItem for re-encoding) # 0, 0 ItemDelimitationItem
(fffe,e0dd) na (SequenceDelimitationItem for re-encod.) # 0, 0 SequenceDelimitationItem
(0010,0010) PN (no value available) # 0, 0 PatientName
(0010,0020) LO [TMP_N7DHVER8] # 12, 1 PatientID
(0010,0030) DA (no value available) # 0, 0 PatientBirthDate
(0010,0040) CS (no value available) # 0, 0 PatientSex
(0010,1020) DS [0.0] # 4, 1 PatientSize
(0010,1030) DS [0.0] # 4, 1 PatientWeight
(0010,2160) SH [Unknown] # 8, 1 EthnicGroup
(0010,4000) LT (no value available) # 0, 0 PatientComments
(0018,0040) IS [28] # 2, 1 CineRate
(0018,0072) DS [5.355280] # 8, 1 EffectiveDuration
(0018,1000) LO [292a20212101906427] # 18, 1 DeviceSerialNumber
(0018,1020) LO [0.0.71] # 6, 1 SoftwareVersions
(0018,1023) LO [Bitmap Import] # 14, 1 DigitalImageFormatAcquired
(0018,1030) LO [Free Flow] # 10, 1 ProtocolName
(0018,1063) DS [35.230000] # 10, 1 FrameTime
(0018,5010) LO [TORSO\\] # 8, 3 TransducerData
(0018,5020) LO [CARD_ADULT_GEN_CV] # 18, 1 ProcessingFunction
(0018,6011) SQ (Sequence with explicit length #=1) # 140, 1 SequenceOfUltrasoundRegions
(fffe,e000) na (Item with explicit length #=11) # 132, 1 Item
(0018,6012) US 1 # 2, 1 RegionSpatialFormat
(0018,6014) US 1 # 2, 1 RegionDataType
(0018,6016) UL 2 # 4, 1 RegionFlags
(0018,6018) UL 170 # 4, 1 RegionLocationMinX0
(0018,601a) UL 52 # 4, 1 RegionLocationMinY0
(0018,601c) UL 1109 # 4, 1 RegionLocationMaxX1
(0018,601e) UL 719 # 4, 1 RegionLocationMaxY1
(0018,6024) US 3 # 2, 1 PhysicalUnitsXDirection
(0018,6026) US 3 # 2, 1 PhysicalUnitsYDirection
(0018,602c) FD 0.023955872 # 8, 1 PhysicalDeltaX
(0018,602e) FD 0.023952095 # 8, 1 PhysicalDeltaY
(fffe,e00d) na (ItemDelimitationItem for re-encoding) # 0, 0 ItemDelimitationItem
(fffe,e0dd) na (SequenceDelimitationItem for re-encod.) # 0, 0 SequenceDelimitationItem
(0020,000d) UI [1.2.276.0.7230010.3.1.2.16777343.11781.1603299615.347638] # 56, 1 StudyInstanceUID
(0020,000e) UI [1.2.276.0.7230010.3.1.3.16777343.11781.1603299615.347639] # 56, 1 SeriesInstanceUID
(0020,0010) SH [8XNDEEV4NHZC23XZ] # 16, 1 StudyID
(0020,0011) IS [1] # 2, 1 SeriesNumber
(0020,0013) IS [1] # 2, 1 InstanceNumber
(0020,0020) CS [A\P] # 4, 2 PatientOrientation
(0028,0002) US 3 # 2, 1 SamplesPerPixel
(0028,0004) CS [YBR_FULL_422] # 12, 1 PhotometricInterpretation
(0028,0006) US 0 # 2, 1 PlanarConfiguration
(0028,0008) IS [152] # 4, 1 NumberOfFrames
(0028,0009) AT (0018,1063) # 4, 1 FrameIncrementPointer
(0028,0010) US 720 # 2, 1 Rows
(0028,0011) US 1280 # 2, 1 Columns
(0028,0014) US 1 # 2, 1 UltrasoundColorDataPresent
(0028,0100) US 8 # 2, 1 BitsAllocated
(0028,0101) US 8 # 2, 1 BitsStored
(0028,0102) US 7 # 2, 1 HighBit
(0028,0103) US 0 # 2, 1 PixelRepresentation
(0028,0301) CS [YES] # 4, 1 BurnedInAnnotation
(0028,2110) CS [01] # 2, 1 LossyImageCompression
(0028,2112) DS [25.232] # 6, 1 LossyImageCompressionRatio
(0028,2114) CS [ISO_10918_1] # 12, 1 LossyImageCompressionMethod
(0032,1032) PN (no value available) # 0, 0 RequestingPhysician
(0040,0244) DA [20201021] # 8, 1 PerformedProcedureStepStartDate
(0040,0245) TM [100000.65800] # 12, 1 PerformedProcedureStepStartTime
(0040,0253) SH [20201021.100000] # 16, 1 PerformedProcedureStepID
(0040,0254) LO (no value available) # 0, 0 PerformedProcedureStepDescription
(0040,0280) ST [Adult Echo] # 10, 1 CommentsOnThePerformedProcedureStep
(2050,0020) CS [IDENTITY] # 8, 1 PresentationLUTShape
(7fe0,0010) OB (PixelSequence #=153) # u/l, 1 PixelData
(fffe,e000) pi 00\00\00\00 # 4, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 131804, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 119690, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 113716, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 111160, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 110070, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109742, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109228, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109248, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109232, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109146, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 108890, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109224, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109082, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109512, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109268, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109608, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109278, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109358, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109072, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109354, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109522, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109260, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109056, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109388, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109346, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109396, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109058, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109302, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109422, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109346, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109244, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109396, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109352, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109344, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109304, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109294, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109110, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109160, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109272, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109596, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109816, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109570, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109424, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109320, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109172, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109244, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109142, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109414, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109386, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109392, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109188, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109168, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109274, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109316, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109166, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109364, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109506, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109278, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109292, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109506, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109356, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109198, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 108946, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109270, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109220, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109342, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109440, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109130, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109508, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109256, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109172, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109214, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109296, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109224, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109482, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109250, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109246, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 108966, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109278, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109202, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109446, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109484, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109304, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109428, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109440, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109342, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109076, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109208, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109280, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109260, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109140, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109152, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 108998, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109254, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109428, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109484, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109374, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109286, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109544, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109554, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109296, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109402, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109360, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109270, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109430, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109454, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109580, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109402, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109236, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109418, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109430, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109458, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109172, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109182, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109348, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109308, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109342, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109288, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109332, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109254, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109246, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109308, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109278, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109212, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109392, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109622, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109406, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109498, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109408, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109586, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109528, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109468, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109542, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109234, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109310, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109536, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109398, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109482, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109420, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109276, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109146, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109148, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109318, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109156, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109118, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109218, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109128, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109334, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109222, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109072, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109194, 1 Item
(fffe,e000) pi ff\d8\ff\e0\00\10\4a\46\49\46\00\01\01\00\00\01\00\01\00\00\ff\db... # 109210, 1 Item
(fffe,e0dd) na (SequenceDelimitationItem) # 0, 0 SequenceDelimitationItem
Below is a code snippet for making JPEG Encoding for each RGB Raw data(1280x720x3 is a single frame size).
Below is my JPEG encoding Codec configuration.
Code: Select all
E_TransferSyntax opt_oxfer = EXS_JPEGProcess1;
OFCmdUnsignedInt opt_selection_value = 6;
OFCmdUnsignedInt opt_point_transform = 0;
OFCmdUnsignedInt opt_quality = JPEG_LOSSY_QUALITY;
OFBool opt_huffmanOptimize = OFTrue;
int opt_smoothing = 0;
int opt_compressedBits = 0; // 0=auto, 8/12/16=force
E_CompressionColorSpaceConversion opt_compCSconversion = ECC_lossyRGB;
E_DecompressionColorSpaceConversion opt_decompCSconversion = EDC_lossyOnly;
E_SubSampling opt_sampleFactors = ESS_444;
OFBool opt_useYBR422 = OFFalse;
Uint32 opt_fragmentSize = 0; // 0=unlimited
OFBool opt_createOffsetTable = OFTrue;
size_t opt_windowType = 0; /* default: no windowing; 1=Wi, 2=Wl, 3=Wm, 4=Wh, 5=Ww, 6=Wn, 7=Wr */
OFCmdUnsignedInt opt_windowParameter = 0;
OFCmdFloat opt_windowCenter=0.0, opt_windowWidth=0.0;
E_UIDCreation opt_uidcreation = EUC_default;
OFBool opt_secondarycapture = OFFalse;
OFCmdUnsignedInt opt_roiLeft = 0, opt_roiTop = 0, opt_roiWidth = 0, opt_roiHeight = 0;
OFBool opt_usePixelValues = OFTrue;
OFBool opt_useModalityRescale = OFFalse;
OFBool opt_trueLossless = OFFalse;
Code: Select all
Uint16 samplesPerPixel = 3;
EP_Interpretation interpr = EPI_RGB;
LOGI("File Open pointer");
/* determine filesize */
const size_t fileSize = OFStandard::getFileSize(fileInput);
//size_t buflen = fileSize;
LOGI("Raw file size is %ld",fileSize);
//OFCondition fileCreationResult;
size_t mFrameNumber=fileSize/(mUintWidth*mUintHeight*samplesPerPixel);
size_t mSizeFrame=mUintWidth*mUintHeight*samplesPerPixel;
// create initial pixel sequence with empty offset table
DcmPixelSequence *pixelSequence = nullptr;
DcmPixelItem *offsetTable = nullptr;
LOGI("JPEG step 1");
if (result.good())
{
pixelSequence = new DcmPixelSequence(DcmTag(DCM_PixelData,EVR_OB));
if (pixelSequence == nullptr)
{
result = EC_MemoryExhausted;
}
else
{
// create empty offset table
offsetTable = new DcmPixelItem(DcmTag(DCM_Item,EVR_OB));
if (offsetTable == nullptr) result = EC_MemoryExhausted;
else pixelSequence->insert(offsetTable);
}
}
DJ_RPLossy mLossyParams(JPEG_LOSSY_QUALITY);
const DcmRepresentationParameter * mDcmRef=&mLossyParams;
DcmRLEEncoderRegistration::registerCodecs(); // Run length encoding encoder
DJEncoderRegistration::registerCodecs(); // JPEG encoder
DJLSEncoderRegistration::registerCodecs(); // JPEG-LS codec
DJ_RPLossless params; // codec parameters, we use the defaults
unsigned long compressedSize = 0;
double compressionRatio = 0.0; // initialize if something goes wrong
double uncompressedSize =mSizeFrame*mFrameNumber;
// JPEG Lossy (8 bit)
// main loop for compression: compress each frame
for(int i=0;i<mFrameNumber;i++)
{
Uint8 *image_buffer;
image_buffer = (Uint8 *) malloc (mSizeFrame);
DcmOffsetList offsetList;
if(image_buffer!= nullptr)
{
bool isReadDone= true;
/* read binary file into the buffer */
if (fread(image_buffer, 1, OFstatic_cast(size_t, mSizeFrame), fileOpen) != mSizeFrame)
{
LOGI("error reading binary data file:");
isReadDone=false;
}
if(isReadDone)
{
DJ_RPLossy rp_lossy(JPEG_LOSSY_QUALITY);
//Main
//const Uint8 *framePointer = OFreinterpret_cast(const Uint8 *, image_buffer);
const DcmCodecParameter *codecParameter;
// assume we can cast the codecparameter to what we need
auto *djcp =new DJCodecParameter(opt_compCSconversion,
opt_decompCSconversion,
opt_uidcreation,
EPC_default,
OFFalse,
OFFalse,
OFFalse,
opt_huffmanOptimize,
opt_smoothing,
0,
opt_fragmentSize,
opt_createOffsetTable,
opt_sampleFactors,
opt_useYBR422,
opt_secondarycapture,
opt_windowType,
opt_windowParameter,
opt_windowCenter,
opt_windowWidth,
opt_roiLeft,
opt_roiTop,
opt_roiWidth,
opt_roiHeight,
opt_usePixelValues,
opt_useModalityRescale,
OFFalse,
OFFalse,
opt_trueLossless);
DJEncoder *jpeg = new DJCompressIJG8Bit(*djcp, EJM_baseline, OFstatic_cast(Uint8, JPEG_LOSSY_QUALITY));
// create encoder corresponding to bit depth (8 or 16 bit)
Uint8 *jpegData = nullptr;
Uint32 jpegLen = 0;
if (jpeg)
{
//LOGI("JPEG step 2");
jpeg->encode(mUintWidth, mUintHeight, interpr, samplesPerPixel,image_buffer,jpegData, jpegLen);
//LOGI("JPEG step 2 DONE");
if (jpegLen == 0)
{
LOGE("True lossless encoder: Error encoding frame");
result = EC_CannotChangeRepresentation;
}
else
{
result = pixelSequence->storeCompressedFrame(offsetList, jpegData, jpegLen, djcp->getFragmentSize());
//LOGI("JPEG Data Size %d",jpegLen);
}
//LOGI("JPEG Encoder DONE");
delete[] jpegData;
compressedSize += jpegLen;
}
else
{
result = EC_MemoryExhausted;
LOGI("Unable to find DJCodecEncoder");
}
// store pixel sequence if everything was successful
if (result.good())
{
// LOGI("Good PixelSequence");
}
else
{
delete pixelSequence;
pixelSequence = nullptr;
}
if ((result.good()) && (djcp->getCreateOffsetTable()))
{
// create offset table
result = offsetTable->createOffsetTable(offsetList);
}
}
}
free(image_buffer);
fseek(fileOpen,mSizeFrame * (i + 1),SEEK_SET);
}
if (compressedSize > 0) {
compressionRatio = OFstatic_cast(double, uncompressedSize) / OFstatic_cast(double, compressedSize);
}
DcmRLEEncoderRegistration::cleanup(); // Run length encoding encoder
DJEncoderRegistration::cleanup(); // deregister JPEG codecs
DJLSEncoderRegistration::cleanup(); // JPEG-LS codec
// insert pixel data attribute incorporating pixel sequence into dataset
DcmPixelData *pixelData = new DcmPixelData(DCM_PixelData);
/* tell pixel data element that this is the original presentation of the pixel data
* pixel data and how it compressed
*/
pixelData->putOriginalRepresentation(EXS_JPEGProcess1, mDcmRef, pixelSequence);
result = dataset->insert(pixelData);
if (result.bad())
{
LOGI("Unable to insert pixel data");
delete pixelData;
pixelData = nullptr; // also deletes contained pixel sequence
}
// update lossy compression ratio
if (result.good()){
//updateLossyCompressionRatio(OFreinterpret_cast(DcmItem*, dataset), compressionRatio);
if (dataset == nullptr) {
result=EC_IllegalCall;
}
// set Lossy Image Compression to "01" (see DICOM part 3, C.7.6.1.1.5)
result = dataset->putAndInsertString(DCM_LossyImageCompression, "01");
if (result.bad()) {
result=result;
}
// set Lossy Image Compression Ratio
OFString s;
const char *oldRatio = nullptr;
if ((dataset->findAndGetString(DCM_LossyImageCompressionRatio, oldRatio)).good() && oldRatio)
{
s = oldRatio;
s += "\\";
}
char buf[64];
OFStandard::ftoa(buf, sizeof(buf), compressionRatio, OFStandard::ftoa_uppercase, 0, 5);
s += buf;
//appendCompressionRatio(s, ratio);
result = dataset->putAndInsertString(DCM_LossyImageCompressionRatio, s.c_str());
if (result.bad()){
}
// count VM of lossy image compression ratio
size_t i;
size_t s_vm = 0;
size_t s_sz = s.size();
for (i = 0; i < s_sz; ++i)
if (s[i] == '\\') ++s_vm;
// set Lossy Image Compression Method
const char *oldMethod = nullptr;
OFString m;
if ((dataset->findAndGetString(DCM_LossyImageCompressionMethod, oldMethod)).good() && oldMethod)
{
m = oldMethod;
m += "\\";
}
// count VM of lossy image compression method
size_t m_vm = 0;
size_t m_sz = m.size();
for (i = 0; i < m_sz; ++i)
if (m[i] == '\\') ++m_vm;
// make sure that VM of Compression Method is not smaller than VM of Compression Ratio
while (m_vm++ < s_vm) m += "\\";
m += "ISO_10918_1";
dataset->putAndInsertString(DCM_LossyImageCompressionMethod, m.c_str());
}
fclose(fileOpen);
OFCondition status;
// check if everything went well
if (dataset->canWriteXfer(EXS_JPEGProcess1))
{
// force the meta-header UIDs to be re-generated when storing the file
// since the UIDs in the data set may have changed
// store in lossless JPEG format
status=fileformat.saveFile(filePathC, EXS_JPEGProcess1);
}else{
LOGI("Unable to encode dataset with desired transfer syntax");
}
NOTE: I don't have direct access to the synapse and due to that I am not able to do much experiment immediately
Any help in the right direction with be appreciated.