medimage 发表于 2015-12-4 21:03:03

DCMTK简介三-dcmdata程序库

本帖最后由 medimage 于 2015-12-4 21:22 编辑

三、dcmdata程序库
-dcmdata:一个数据编码/解码库和可用的工具这个模块包含了一些类来管理Dicom数据结构和文件。同时它也提供了对DICOMDIR文件的支持以满足Dicom storage media(存储介质)的需要。----------------------------------------------------主要的接口类有:--DcmFileFormat:a class handling the DICOM file format (with meta header) 。头文件在dcfilefo.h。***详情在单独的文档中分析***--DcmDataset:a class handling the DICOM dataset format (files without meta header) 。头文件在dcdatset.h。***详情在单独的文档中分析***--DcmItem:a class representing a collection of DICOM elements。头文件在dcitem.h。***详情在单独的文档中分析***--DcmElement:abstract base class for all DICOM elements。头文件在dcelem.h。***详情在单独的文档中分析***。它的派生类包括:DcmAttributeTag\DcmByteString\DcmFloatingPointDouble\DcmFloatingPointSingle\DcmOtherByteOtherWord\DcmSequenceOfItems\DcmSignedLong\DcmSignedShort\DcmUnsignedLong\DcmUnsignedShort--------------------------------------------------------------------------------------------------------工具:这个模块包含了下面的命令行工具:dcm2xml: Convert DICOM file and data set to XMLdcmconv: Convert DICOM file encodingdcmcrle: Encode DICOM file to RLE transfer syntaxdcmdrle: Decode RLE-compressed DICOM filedcmdump: Dump DICOM file and data setdcmftest: Test if file uses DICOM part 10 formatdcmgpdir: Create a general purpose DICOMDIRdcmodify: Modify DICOM filesdump2dcm: Convert ASCII dump to DICOM filexml2dcm: Convert XML document to DICOM file or data set***暂时不对命令行工具进行详细的分析***-------------------------------------------------------------------------------------------------------举例:--调入一个DICOM文件,输出病人姓名DcmFileFormat fileformat;OFCondition status = fileformat.loadFile("test.dcm");if (status.good()){OFString patientsName;if (fileformat.getDataset()->findAndGetOFString(DCM_PatientsName, patientsName).good()){    cout << "Patient's Name: " << patientsName << endl;} else    cerr << "Error: cannot access Patient's Name!" << endl;} elsecerr << "Error: cannot read DICOM file (" << status.text() << ")" << endl;--创建一个DICOM dataset数据集,并保存为文件char uid;DcmFileFormat fileformat;DcmDataset *dataset = fileformat.getDataset();dataset->putAndInsertString(DCM_SOPClassUID, UID_SecondaryCaptureImageStorage);dataset->putAndInsertString(DCM_SOPInstanceUID, dcmGenerateUniqueIdentifier(uid, SITE_INSTANCE_UID_ROOT));dataset->putAndInsertString(DCM_PatientsName, "Doe^John");/* ... */dataset->putAndInsertUint8Array(DCM_PixelData, pixelData, pixelLength);OFCondition status = fileformat.saveFile("test.dcm", EXS_LittleEndianExplicit);if (status.bad())cerr << "Error: cannot write DICOM file (" << status.text() << ")" << endl;--如何为多个文件创建一般目的的DICOMDIRDicomDirInterface dicomdir;OFCondition status = dicomdir.createNewDicomDir();if (status.good()){while ( /* there are files */ )    dicomdir.addDicomFile( /* current filename */ );status = dicomdir.writeDicomDir();if (status.bad())    cerr << "Error: cannot write DICOMDIR (" << status.text() << ")" << endl;} elsecerr << "Error: cannot create DICOMDIR (" << status.text() << ")" << endl;------------------------------------------------------------

江西魏工 发表于 2016-5-11 18:41:25

好贴

13636600130 发表于 2016-5-13 08:40:34

留个脚印。。。。。。

13636600006 发表于 2016-5-14 16:14:42

好贴,顶起

江西魏工 发表于 2016-5-18 03:18:05

谢谢分享

mri 发表于 2016-5-19 14:16:56

看看!!!!!谢谢楼主!!!

mdeimage 发表于 2016-5-19 18:28:22

回复看下,!!

RTphysics 发表于 2016-5-21 00:36:29

先看看在说

13636600006 发表于 2016-5-22 23:01:52

学习了!!!!!!!!!

medimagedev 发表于 2016-5-23 00:11:55

好贴!
页: [1] 2
查看完整版本: DCMTK简介三-dcmdata程序库