医站点医维基

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1294|回复: 11

[DCMTK] DCMTK简介三-dcmdata程序库

[复制链接]

336

主题

409

回帖

2805

积分

管理员

积分
2805

热心会员推广达人优秀版主荣誉管理论坛元老

发表于 2015-12-4 21:03:03 | 显示全部楼层 |阅读模式
本帖最后由 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 XML
dcmconv: Convert DICOM file encoding
dcmcrle: Encode DICOM file to RLE transfer syntax
dcmdrle: Decode RLE-compressed DICOM file
dcmdump: Dump DICOM file and data set
dcmftest: Test if file uses DICOM part 10 format
dcmgpdir: Create a general purpose DICOMDIR
dcmodify: Modify DICOM files
dump2dcm: Convert ASCII dump to DICOM file
xml2dcm: 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;
} else
cerr << "Error: cannot read DICOM file (" << status.text() << ")" << endl;
--创建一个DICOM dataset数据集,并保存为文件
char uid[100];
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;
--如何为多个文件创建一般目的的DICOMDIR
DicomDirInterface 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;
} else
cerr << "Error: cannot create DICOMDIR (" << status.text() << ")" << endl;
------------------------------------------------------------

回复

使用道具 举报

135

主题

407

回帖

1461

积分

版主

积分
1461

热心会员推广达人优秀版主荣誉管理论坛元老

发表于 2016-5-11 18:41:25 | 显示全部楼层
好贴
回复

使用道具 举报

0

主题

408

回帖

815

积分

高级会员

积分
815

最佳新人

发表于 2016-5-13 08:40:34 | 显示全部楼层
留个脚印。。。。。。
回复

使用道具 举报

0

主题

396

回帖

791

积分

高级会员

积分
791

最佳新人

发表于 2016-5-14 16:14:42 | 显示全部楼层
好贴,顶起
回复

使用道具 举报

135

主题

407

回帖

1461

积分

版主

积分
1461

热心会员推广达人优秀版主荣誉管理论坛元老

发表于 2016-5-18 03:18:05 | 显示全部楼层
谢谢分享
回复

使用道具 举报

4

主题

415

回帖

1084

积分

版主

积分
1084

热心会员推广达人优秀版主荣誉管理论坛元老

发表于 2016-5-19 14:16:56 | 显示全部楼层
看看!!!!!谢谢楼主!!!
回复

使用道具 举报

0

主题

412

回帖

1035

积分

版主

积分
1035

热心会员推广达人优秀版主荣誉管理论坛元老

发表于 2016-5-19 18:28:22 | 显示全部楼层
回复看下,!!
回复

使用道具 举报

138

主题

436

回帖

1502

积分

版主

积分
1502

热心会员推广达人优秀版主荣誉管理论坛元老

发表于 2016-5-21 00:36:29 | 显示全部楼层
先看看在说
回复

使用道具 举报

0

主题

396

回帖

791

积分

高级会员

积分
791

最佳新人

发表于 2016-5-22 23:01:52 | 显示全部楼层
学习了!!!!!!!!!
回复

使用道具 举报

13

主题

398

回帖

1051

积分

版主

积分
1051

热心会员推广达人优秀版主荣誉管理论坛元老

发表于 2016-5-23 00:11:55 | 显示全部楼层
好贴!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|关于我们|医维基|网站地图|Archiver|手机版|医疗之家 ( 沪ICP备2023001278号-1 )  

GMT+8, 2024-4-27 16:50 , Processed in 0.133354 second(s), 26 queries .

Designed by Medical BBS

快速回复 返回顶部 返回列表