- 浏览: 3448680 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
sonichy:
Qt5改动很多,要改改了。
基于QItemDelegate的例子1 SpinBoxDelegate -
我的主页6:
楼主,2.2子查询的分页方式:SELECT * FROM ar ...
Mysql 分页语句Limit用法 -
liguoqi:
非常感谢楼主的用心指导,工具以及图片例子都提供了 赞!
两款免费DCIOM 图像浏览软件介绍和DICOM图像例子供下载 -
liguoqi:
问下这个图片怎么解压损坏呀
两款免费DCIOM 图像浏览软件介绍和DICOM图像例子供下载 -
liguoqi:
楼主讲解的非常详细,还附带工具和图片例子,非常感谢
两款免费DCIOM 图像浏览软件介绍和DICOM图像例子供下载
Howto: Add private data elements to a DICOM dataset
The following example shows how to add private data elements to a DICOM dataset (if not present yet):
#include "dcmtk/config/osconfig.h" #include "dcmtk/dcmdata/dctk.h" #define PRV_PrivateCreator DcmTag(0x0029, 0x0010, EVR_LO) #define PRV_PrivateElement1 DcmTag(0x0029, 0x1000, EVR_LO) #define PRV_PrivateElement2 DcmTag(0x0029, 0x1010, EVR_US) #define PRV_PrivateElement3 DcmTag(0x0029, 0x1020, EVR_OB) void addPrivateElements(DcmItem &item) { if (!item.tagExists(PRV_PrivateCreator)) { item.putAndInsertString(PRV_PrivateCreator, "Your Company Name"); item.putAndInsertString(PRV_PrivateElement1, "Some Text"); item.putAndInsertUint16(PRV_PrivateElement2, 12345); item.putAndInsertUint8Array(PRV_PrivateElement3, NULL /*data*/, 0 /*length*/); } }Please note that for private tags the value representation (VR) has to be specified explicitly to be complete.
It is also possible to register private tags to the data dictionary during runtime:
#include "dcmtk/config/osconfig.h" #include "dcmtk/dcmdata/dctk.h" #define PRIVATE_CREATOR_NAME "Your Company Name" #define PRIVATE_ELEMENT1_TAG 0x0029, 0x1000 #define PRIVATE_ELEMENT2_TAG 0x0029, 0x1010 #define PRIVATE_ELEMENT3_TAG 0x0029, 0x1020 void registerPrivateTags() { DcmDataDictionary &dict = dcmDataDict.wrlock(); dict.addEntry(new DcmDictEntry(PRIVATE_ELEMENT1_TAG, EVR_LO, "PrivateText", 1, 1, "private", OFTrue, PRIVATE_CREATOR_NAME)); dict.addEntry(new DcmDictEntry(PRIVATE_ELEMENT2_TAG, EVR_US, "PrivateInteger", 1, 1, "private", OFTrue, PRIVATE_CREATOR_NAME)); dict.addEntry(new DcmDictEntry(PRIVATE_ELEMENT3_TAG, EVR_OB, "PrivateBlob", 1, 1, "private", OFTrue, PRIVATE_CREATOR_NAME)); dcmDataDict.unlock(); }This can be useful for reading datasets with implicit VR (otherwise the VR would be unknown) and e.g. for the textual output of the print() method.
However, this does not mean that you can omit the VR from the putAndInsertXXX()
calls. This will change with the next snapshot/release (see commit), so the following will then be possible:
#include "dcmtk/config/osconfig.h" #include "dcmtk/dcmdata/dctk.h" #define PRIVATE_CREATOR_NAME "Your Company Name" #define PRIVATE_CREATOR_TAG 0x0029, 0x0010 #define PRIVATE_ELEMENT1_TAG 0x0029, 0x1000 #define PRIVATE_ELEMENT2_TAG 0x0029, 0x1010 #define PRIVATE_ELEMENT3_TAG 0x0029, 0x1020 #define PRV_PrivateCreator DcmTag(PRIVATE_CREATOR_TAG) #define PRV_PrivateElement1 DcmTag(PRIVATE_ELEMENT1_TAG, PRIVATE_CREATOR_NAME) #define PRV_PrivateElement2 DcmTag(PRIVATE_ELEMENT2_TAG, PRIVATE_CREATOR_NAME) #define PRV_PrivateElement3 DcmTag(PRIVATE_ELEMENT3_TAG, PRIVATE_CREATOR_NAME) void registerPrivateTags() { DcmDataDictionary &dict = dcmDataDict.wrlock(); dict.addEntry(new DcmDictEntry(PRIVATE_ELEMENT1_TAG, EVR_LO, "PrivateText", 1, 1, "private", OFTrue, PRIVATE_CREATOR_NAME)); dict.addEntry(new DcmDictEntry(PRIVATE_ELEMENT2_TAG, EVR_US, "PrivateInteger", 1, 1, "private", OFTrue, PRIVATE_CREATOR_NAME)); dict.addEntry(new DcmDictEntry(PRIVATE_ELEMENT3_TAG, EVR_OB, "PrivateBlob", 1, 1, "private", OFTrue, PRIVATE_CREATOR_NAME)); dcmDataDict.unlock(); } void addPrivateElements(DcmItem &item) { if (!item.tagExists(PRV_PrivateCreator)) { item.putAndInsertString(PRV_PrivateCreator, PRIVATE_CREATOR_NAME); item.putAndInsertString(PRV_PrivateElement1, "Some Text"); item.putAndInsertUint16(PRV_PrivateElement2, 12345); item.putAndInsertUint8Array(PRV_PrivateElement3, NULL /*data*/, 0 /*length*/); } } int main() { DcmFileFormat fileformat; fileformat.loadFile("test_in.dcm"); registerPrivateTags(); addPrivateElements(*fileformat.getDataset()); fileformat.saveFile("test_out.dcm", EXS_LittleEndianExplicit); fileformat.print(COUT); return 0; }
柳北风儿
个人博客: http://qimo601.iteye.com
发表评论
-
DCMTK: DcmSCP, error:QueryRetrieveLevel larger remaining bytes
2012-11-06 09:48 3019最近在DcmSCU发送一个findRequest后,DcmSC ... -
DICOM标准(2011)
2012-10-22 10:31 2983DICOM标准(2011) 最新版,下载请看我的百度云网 ... -
DCMTK:wwwapp instalation
2012-10-18 15:55 3318问题 最近按照wwwapp.txt安装work ... -
workList in DCMTK问题总结
2012-10-17 19:37 3581最近正在配置DCMTK中的worklist,因为需要响应C-F ... -
web Server支持 perl
2012-10-17 10:06 3400最近使用DCMTK 安装worklist 需要用到webser ... -
DICOM C-GET vs C-MOVE
2012-10-08 17:01 6625DICOM中C-Get 和C-Move的区别。 C-Move ... -
【最新snapshot】DCMTK3.6.1(MD支持库)安装说明
2012-09-25 16:16 7437【前言】 最近,因为需要开发DICOM ... -
【原创】自定义Appender类,输出DCMTK日志
2012-09-24 10:30 5249就像DCMTK官方论坛说的 ... -
问题:自定义Appender输出DCMTK的oflog
2012-09-24 10:09 2835在我调试DCMTK的DcmNet过程中,发现在Oflog中,D ... -
DCMTK:Receiving Images from PACS using DCMSCU
2012-09-15 14:03 5180通过DCMTK的DCMSCU,从PACS获取图像,看看人 ... -
DCMTK: Set output directory to DcmSCP
2012-09-18 09:16 4558Author Message -
DCMTK:DCMSCU get series
2012-09-15 14:02 2782Author Message mano ... -
DCMTK DCMSCU例子
2012-09-15 14:01 5792转载:http://forum.dcmtk.org/viewt ... -
DCMTK DCMScu和DCMScp 细节讨论
2012-09-15 14:04 14419PACS connection Moderator: ... -
DCMTK Howto: User Identity Negotiation
2012-09-18 09:16 6180Howto: User Identity Negotia ... -
DCMTK:howto:dcmscu-example 网络客户端
2012-09-15 14:00 4349DcmSCU example program Th ... -
DCMTK Create a Mammography CAD SR Document
2012-09-18 09:17 2785Howto: Create a Mammography ... -
DCMTK create GSPS object with multiple image references
2012-09-18 09:17 3013Howto: Create GSPS object wi ... -
DCMTK提取Overlay Data
2012-09-14 14:07 4258Howto: Extract Overlay Data ... -
DCMTK获取压缩后的pixel data
2012-09-14 14:06 6450Howto: Accessing Compressed ...
相关推荐
通过这个查看器,开发者可以了解如何利用DCMTK解析DICOM头信息,以及如何将这些信息与图像数据结合,以在用户界面上呈现出来。 【标签】"DCMTK"是关键的开发库,它提供了对DICOM协议的全面支持,包括数据结构、网络...
4. **API接口**:DCMTK提供了C++接口,允许开发者直接在代码中操作DICOM数据。这些接口包括数据元素访问、解析和构造,以及网络通信等功能。 5. **网络通信**:DCMTK支持DICOM网络服务类应用实体(AE),可以实现...
基于DCMTK的DICOM相关程序编写攻略
在这个项目中,我们主要关注如何使用Visual C++(VC++)和DICOM ToolKit (DCMTK)库来显示DICOM医学图像。DICOM是一种广泛应用于医疗成像领域的标准格式,用于存储、交换、打印和呈现医学图像。下面将详细介绍这个...
VC 使用DCMTK显示DICOM医学图像的实现教程, 从事VC 编程的程序员大概都知道,DICOM是医学影像存储和传输的国际标准,本教程来自OTI技术论坛专题讨论版,或许这本整理的简短教程对你有所帮助。
在实际开发过程中,利用VC++(Microsoft Visual C++)和DCMTK(DICOM Toolkit)库可以有效地实现DICOM图像的显示功能。DCMTK是一个开放源码的软件开发包,支持多种操作系统,广泛应用于医学影像领域的软件开发中。 ...
- **提取像素数据**:从DICOM数据集中提取像素数据。 - **显示图像**:利用VC++的图形界面功能显示像素数据,形成可视化的医学图像。 ##### 4. 示例代码片段 ```cpp // 假设已经成功编译并链接了DCMTK #include ...
DCMTK提供了丰富的API和命令行工具,使得开发人员能够轻松地在自己的应用程序中集成DICOM功能。 DCMTK的核心组件包括以下几个部分: 1. **dcmdata**:这是DCMTK的基础模块,负责处理DICOM数据元素和数据集。它包含...
在这个“DICOM文件信息修改程序”中,我们聚焦于如何使用DCMTK这一开源工具来操作DICOM文件的元数据。 DCMTK(DICOM Toolkit)是德国工业大学的一个项目,提供了一系列C++库和命令行工具,用于处理DICOM数据。它...
这是博文《第一个 DCMTK 程序:显示 DICOM 图像(DCMTK 3.6.4 + Qt 5.14.2 + VS2015)》的源码,详细内容见博客文章 https://blog.csdn.net/blackwoodcliff/article/details/109481195
DCMTK(DICOM for Medical Applications Toolkit)是一个开源软件库,专门用于处理DICOM(Digital Imaging and Communications in Medicine)标准的数据,这种标准广泛应用于医学成像领域。DICOM格式包含了大量的...
在使用DCMTK时,开发者通常会结合脚本语言(如Python、Perl或bash)编写自定义脚本来自动化这些任务。例如,可以编写一个脚本来定期从远程设备获取新的DICOM图像,然后将它们存储到本地数据库或进行进一步的处理。 ...
DICOM是医学影像存储和传输的国际标准,它的制定为不同的医学影像设备和用户提供了统一的接口标准和交互协议。解读 DICOM的医学图像文件格式以及用利用VC++和DCMTK显示方法显示DICOM医学图像
DCMTK(DICOM Toolkit)是开放源代码的软件库,专为开发和处理遵循DICOM(Digital Imaging and Communications in Medicine)标准的医疗影像数据而设计。DICOM是一种广泛使用的国际标准,它定义了医疗设备之间以及...
在医疗图像处理和分析中,DCMTK是一个不可或缺的工具,因为它提供了一系列的命令行工具和C++类库,方便开发者读取、写入和操作DICOM数据。 **DICOM标准** DICOM标准不仅仅涉及图像格式,还包括元数据,如患者信息...
DCMTK是实现DICOM标准的大型部分的库和应用程序的集合。它包括用于检查、构建和转换DICOM图像文件、处理离线媒体、通过网络连接发送和接收图像以及演示图像存储和工作列表服务器的软件。DCMTK是以ANSI C和C++的混合...