使用DCMTK创建H.264 / AVC dicom文件

时间:2015-02-24 14:50:30

标签: dicom dcmtk

有没有人有关于使用DCMTK创建有效DICOM文件的任何信息?

1.2.840.10008.1.2.4.100 MPEG2 Main Profile Main Level
1.2.840.10008.1.2.4.102 MPEG-4 AVC/H.264 High Profile / Level 4.1    
1.2.840.10008.1.2.4.103 MPEG-4 AVC/H.264 BD-compatible High Profile / Level 4.1

据我所知,MPEG-4目前尚未发布,但在其开发分支中。我会假设创建MPEG2的过程类似于MPEG-4?

为了澄清,上面提到的传输语法多帧视频,其中每个帧(mpeg,h.264等)被包装为DICOM图像以创建多帧DICOM图像?或者,您只是采用mp4文件,并将一些DICOM标题放入文件的开头?

无论如何,是否有人有一些示例代码用于从MPEG2或MPEG4创建有效的DCM文件?

3 个答案:

答案 0 :(得分:2)

DCMTK的当前snapshot包含所有传输语法UID,即DICOM标准第6部分中列出的内容的定义,其中包括各种风格的MPEG-2和MPEG-4。 DICOM标准的第5部分清楚地描述了如何使用这些传输语法,例如,对MPEG数据流的要求是什么以及如何将流封装到DICOM像素数据元素中。

顺便说一下,与DCMTK相关的问题可能会更好地发布到http://forum.dcmtk.org/的公共论坛。

答案 1 :(得分:1)

关于MPEG-4 AVC / H.264 High Profile / Level 4.1,您应该阅读(至少)DICOM标准第5部分中的相关部分:http://medical.nema.org/medical/dicom/current/output/chtml/part05/sect_8.2.7.html

答案 2 :(得分:0)

注意:此答案已在20150407完全编辑

我已经完成了一些使用dcm4che2工具包创建mpeg4 DICOM视频的测试。我假设可以使用DCMTK工具以类似的方式完成相同的工作。

回答第二个问题,DICOM视频只是一个视频文件(根据视频类型必须符合某些给定的约束条件)和一些必要的DICOM数据元素(属性)。

获取DICOM视频文件的一种方法是首先创建一个包含必要DICOM数据元素的XML文件,然后将XML文件与原始视频文件合并。您将最终拥有一个符合规定的DICOM实例,其中包含封装在(7FE0,0010)数据元素中的原始视频。

您的XML文件或多或少会像这样:

<?xml version="1.0" encoding="UTF-8"?>
<dicom>
<attr tag="00020002" vr="UI" name="MediaStorageSOPClassUID">1.2.840.10008.5.1.4.1.1.77.1.4.1</attr>
<attr tag="00020003" vr="UI" name="MediaStorageSOPInstanceUID">1.3.51.5146.1682.20140505.1225531.197</attr>
<attr tag="00020010" vr="UI" name="TransferSyntaxUID">1.2.840.10008.1.2.4.102</attr>
<attr tag="00020012" vr="UI" name="ImplementationClassUID">1.2.40.0.13.1.1</attr>
<attr tag="00020013" vr="SH" name="ImplementationVersionName">dcm4che-1.4.18</attr>
<attr tag="00080005" vr="CS" name="SpecificCharacterSet">ISO_IR 100</attr>
<attr tag="00080008" vr="CS" name="ImageType">DERIVED\PRIMARY</attr>
<attr tag="00080012" vr="DA" name="InstanceCreationDate">20140505</attr>
<attr tag="00080013" vr="TM" name="InstanceCreationTime">135531</attr>
<attr tag="00080016" vr="UI" name="SOPClassUID">1.2.840.10008.5.1.4.1.1.77.1.4.1</attr>
<attr tag="00080018" vr="UI" name="SOPInstanceUID">1.3.51.5146.1682.20140505.1225531.197</attr>
<attr tag="00080020" vr="DA" name="StudyDate">20140505</attr>
<attr tag="00080022" vr="DA" name="AcquisitionDate">20140505</attr>
<attr tag="00080030" vr="TM" name="StudyTime">135531</attr>
<attr tag="00080032" vr="TM" name="AcquisitionTime">135531</attr>
<attr tag="00080050" vr="SH" name="AccessionNumber">2014505093198485</attr>
<attr tag="00080060" vr="CS" name="Modality">XC</attr>
<attr tag="00080070" vr="LO" name="Manufacturer">Test MFR</attr>
<attr tag="00080090" vr="PN" name="ReferringPhysicianName">Test^^^Dr^</attr>
<attr tag="00081030" vr="LO" name="StudyDescription">Test video HD</attr>
<attr tag="0008103e" vr="LO" name="SeriesDescription">Test video 720p</attr>
<attr tag="00082218" vr="SQ" vm="1" name="AnatomicRegionSequence">
  <item>
    <attr tag="00080100" vr="SH" name="CodeValue">T-32000</attr>
    <attr tag="00080102" vr="SH" name="CodingSchemeDesignator">SRT</attr>
    <attr tag="00080104" vr="LO" name="CodeMeaning">Heart</attr>
  </item>
</attr>
<attr tag="00100010" vr="PN" name="PatientName">Smith^John^^Test^</attr>
<attr tag="00100020" vr="LO" name="PatientID">100539</attr>
<attr tag="00100030" vr="DA" name="PatientBirthDate">19700101</attr>
<attr tag="00100040" vr="CS" name="PatientSex">M</attr>
<attr tag="00180040" vr="IS" name="CineRate">30</attr>
<attr tag="00181063" vr="DS" name="FrameTime">33.33</attr>
<attr tag="0020000d" vr="UI" name="StudyInstanceUID">1.3.51.0.7.633920140505.6339234439.633987.633918098</attr>
<attr tag="0020000e" vr="UI" name="SeriesInstanceUID">1.3.51.5146.11682.20140505.122553197</attr>
<attr tag="00200010" vr="SH" name="StudyID">00000001</attr>
<attr tag="00200011" vr="IS" name="SeriesNumber">1</attr>
<attr tag="00200013" vr="IS" name="InstanceNumber">1</attr>
<attr tag="00200020" vr="CS" name="PatientOrientation"></attr>
<attr tag="00280002" vr="US" name="SamplesPerPixel">3</attr>
<attr tag="00280004" vr="CS" name="PhotometricInterpretation">YBR_PARTIAL_420</attr>
<attr tag="00280006" vr="US" name="PlanarConfiguration">0</attr>
<attr tag="00280008" vr="IS" name="NumberOfFrames">1080</attr>
<attr tag="00280009" vr="AT" name="FrameIncrementPointer">00181063</attr>
<attr tag="00280010" vr="US" name="Rows">720</attr>
<attr tag="00280011" vr="US" name="Columns">1280</attr>
<attr tag="00280100" vr="US" name="BitsAllocated">8</attr>
<attr tag="00280101" vr="US" name="BitsStored">8</attr>
<attr tag="00280102" vr="US" name="HighBit">7</attr>
<attr tag="00280103" vr="US" name="PixelRepresentation">0</attr>
<attr tag="00282110" vr="CS" name="LossyImageCompression">01</attr>
<attr tag="00400555" vr="SQ" name="AcquisitionContextSequence"></attr>
<attr tag="7FE00010" vr="OB">
  <item />
  <item src="test_720p.mp4"/>
</attr>
</dicom>

获得XML文件后,将其与视频文件合并以获取DICOM文件:

$ xml2dcm -d -t 1.2.840.10008.1.2.4.102 -x test_720.xml -o test_720.dcm

结果文件已使用dciodvfy工具进行测试,它似乎是有效的第10部分DICOM文件。

现在,您可以尝试将此DICOM文件存储到PACS中:

$ dcmsnd -L TEST YOUR.AET@yourpacs.com:11112 test_720.dcm 

我已对其进行了测试,能够使用Weasis DICOM查看器恢复并重现视频。

一些额外的信息只是为了澄清

您可以在comp.protocols.dicom新闻组中的此帖子中找到更多信息。