- 浏览: 3415437 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
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 2859最近在DcmSCU发送一个findRequest后,DcmSC ... -
DICOM标准(2011)
2012-10-22 10:31 2903DICOM标准(2011) 最新版,下载请看我的百度云网 ... -
DCMTK:wwwapp instalation
2012-10-18 15:55 3219问题 最近按照wwwapp.txt安装work ... -
workList in DCMTK问题总结
2012-10-17 19:37 3454最近正在配置DCMTK中的worklist,因为需要响应C-F ... -
web Server支持 perl
2012-10-17 10:06 3331最近使用DCMTK 安装worklist 需要用到webser ... -
DICOM C-GET vs C-MOVE
2012-10-08 17:01 6431DICOM中C-Get 和C-Move的区别。 C-Move ... -
【最新snapshot】DCMTK3.6.1(MD支持库)安装说明
2012-09-25 16:16 7266【前言】 最近,因为需要开发DICOM ... -
【原创】自定义Appender类,输出DCMTK日志
2012-09-24 10:30 5099就像DCMTK官方论坛说的 ... -
问题:自定义Appender输出DCMTK的oflog
2012-09-24 10:09 2731在我调试DCMTK的DcmNet过程中,发现在Oflog中,D ... -
DCMTK:Receiving Images from PACS using DCMSCU
2012-09-15 14:03 5074通过DCMTK的DCMSCU,从PACS获取图像,看看人 ... -
DCMTK: Set output directory to DcmSCP
2012-09-18 09:16 4477Author Message -
DCMTK:DCMSCU get series
2012-09-15 14:02 2716Author Message mano ... -
DCMTK DCMSCU例子
2012-09-15 14:01 5583转载:http://forum.dcmtk.org/viewt ... -
DCMTK DCMScu和DCMScp 细节讨论
2012-09-15 14:04 13521PACS connection Moderator: ... -
DCMTK Howto: User Identity Negotiation
2012-09-18 09:16 6123Howto: User Identity Negotia ... -
DCMTK:howto:dcmscu-example 网络客户端
2012-09-15 14:00 4273DcmSCU example program Th ... -
DCMTK Create a Mammography CAD SR Document
2012-09-18 09:17 2714Howto: Create a Mammography ... -
DCMTK create GSPS object with multiple image references
2012-09-18 09:17 2933Howto: Create GSPS object wi ... -
DCMTK提取Overlay Data
2012-09-14 14:07 4189Howto: Extract Overlay Data ... -
DCMTK获取压缩后的pixel data
2012-09-14 14:06 6287Howto: Accessing Compressed ...
相关推荐
DICOM DCMTK显示DICOM图像 VC DCMTKDICOM DCMTK显示DICOM图像 VC DCMTKDICOM DCMTK显示DICOM图像 VC DCMTK
基于DCMTK的DICOM相关程序编写攻略
用VC++和DCMTK显示DICOM医学图像_solidtdl_Vc_dcmtk_源码.rar.rar
VC 使用DCMTK显示DICOM医学图像的实现教程, 从事VC 编程的程序员大概都知道,DICOM是医学影像存储和传输的国际标准,本教程来自OTI技术论坛专题讨论版,或许这本整理的简短教程对你有所帮助。
基于DCMTK实现DICOM医学影像文件与常见格式的转换
基于DCMTK的DICOM医学图像显示及其调窗方法研究
这是博文《第一个 DCMTK 程序:显示 DICOM 图像(DCMTK 3.6.4 + Qt 5.14.2 + VS2015)》的源码,详细内容见博客文章 https://blog.csdn.net/blackwoodcliff/article/details/109481195
原创DICOM图像查看器,供新手参考学习。基于DCMTK工具包。
VS2005 用DCMTK 显示DICOM图像,并进行调窗处理,本程序在VS2005上运行通过。程序有注解,方便初学者使用。
DICOM是医学影像存储和传输的国际标准,它的制定为不同的医学影像设备和用户提供了统一的接口标准和交互协议。解读 DICOM的医学图像文件格式以及用利用VC++和DCMTK显示方法显示DICOM医学图像
是操作DICOM文件的一个工具包,包含了各种对DICOM文件处理的函数
适合学习研究DICOM的初学者,本文详细介绍和解释如何使用VC++和DCMTK显示DICOM的医学图像
DCMTK工具下载,实现dicom传输文件等功能,包含各种脚本命令帮助
DCMTK是实现DICOM标准的大型部分的库和应用程序的集合。它包括用于检查、构建和转换DICOM图像文件、处理离线媒体、通过网络连接发送和接收图像以及演示图像存储和工作列表服务器的软件。DCMTK是以ANSI C和C++的混合...
DCMTK是免 费开 源 的针 对DICOM 标 准的开发 包。 解读DICOM文件格 式并解决DICOM 医 学图像 显 示 问题是 医 学图像 处理 的基础, 对 医 学影像技 术的研 究具有重要意 义。 解读 了DICOM文件格式 并介 绍 了调 窗...
DCMTK编译文件说明。DCMTK3.6.0
基于DCMTK写的dicom头文件修改添加程序。可批量修改或添加头文件信息。 注:之前发过一个版本有bug,有需要的请下载这个版本。
多帧的DICOM文件,是学习DICOM解析必备文件