已阅读5页,还剩85页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1引言. . . 31.1结构. . . 31.2支持的语言. . . .41.3使用COM对象模型的效果. . 41.4 DicomObjects中的集合. . 41.5 Dicom对象的DICOM数据表示. . 51.6解释和使用序列. . 71.7私有属性. . . 72第一步 - 阅读,查看和写入DICOM文件. . 92.1您的第一个DICOM计划. . 92.2将映像写入磁盘. . 103通过网络简单地发送和接收图像. . 113.1发送图像. . . 113.2接收图像. . . 114查询/检索(SCU). . . 134.1公共特性. . . 134.2 DoQuery . . . 144.3 GetImages . . 144.4 GetUsingMove . .154.5 DoRawQuery . .154.6 MoveSync . .154.7 MoveImages . .154.8基于Dicom连接的Q / R方法. . . . . 155离线媒体. . . . .175.1阅读. . . . . .175.2创建. . . 185.3更新. . . 195.4乘以引用的目录记录. . 196打印. . . 206.1使用DicomPrint打印. . 206.2使用标准化操作打印. . 226.3将DICOM图像打印到Windows打印机. . 227将DICOM图像导出到其他格式. . 237.1单帧. . . 237.2多帧图像/电影. . 237.3非文件导出. . . 238高级图像审查站. . 248.1基本查看控件. . 248.2多帧(电影)图像. . 248.3注释. . . 258.4查找表. . . 288.5 DICOM灰度呈现状态. . 288.6显示速度优化. . 299网络使用. . . 319.1在Web服务器上运行DicomObjects . . . . 319.2在Web客户端上运行DicomObjects . . . . 3310写路由器/修改器. . . . . . 3511编写DICOM服务器. . . 3611.1聆听协会的对象. . 3611.2验证协会. . 3711.3处理C-STORE操作. . 3711.4处理查询/检索请求. . 3811.5处理C-ECHO请求. . 4211.6传输语法和质量问题. . 4211.7性能和可靠性问题. . 4311.8模态WorkList SCP . . 4411.9打印SCP . . . 4411.10存储承诺SCP . . 4512访问和修改像素数据. . 4612.1原始指针的语言. . 4612.2使用变量数组的语言. . 4713创建DICOM图像. . . 4813.1导入其他格式. . 4813.2导入多帧图像. . 4913.3从划痕. . . 5014使用模态WorkList作为SCU . . 5215语言特定功能. . 5315.1 Visual Basic . . . 5315.2 VBScript . . . 5315.3应用程序的Visual Basic(例如MS Access). . 5315.4 Microsoft Visual C + . . . 5315.5 Borland Delphi和Borland C + Builder . . 5515.6 Java . . . 5615.7其他环境. . . 5616日志记录. . . 5716.1日志详细信息和级别. . . 5716.2文件记录. . . 5716.3 DicomLog控制. . 5817高级使用. . . 5917.1超车注册表值. . 5917.2更改默认SOP类的列表. . 5917.3传输语法选择. . 6017.4私人SOP类. . . 6117.5私有传输语法. 6117.6存储承诺. . . 61DicomObjects用户手册第3页1简介本用户手册是DicomObjects帮助文件的重要补充。帮助文件保留主参考指南为所有DicomObjects对象,方法和属性,所以如果你知道的话你需要,直接去帮助文件。然而,本手册从相反的观点出发,和告诉你如何使用DicomObjects来完成特定的目的。在许多情况下,你仍然需要参考帮助文件的参数等的全部细节,但至少在阅读本手册后,你应该知道你需要咨询哪些部分!DicomObjects的目的是允许你,应用程序开发人员,在你的使用DICOM应用程序,尽可能不需要了解DICOM标准的复杂性。它当然不是唯一可用的DICOM“工具包”,但希望它填补了一个重要的利基市场,由于以下特点:DICOM通过高级接口访问,允许许多操作全部发生图像等在需要时可提供更细级别的详细信息,从而允许修改单个图像属性。支持所有DICOM SOP类,甚至类型的图像或尚未定义的其他数据。内部多线程,允许构建高性能服务器,线程客户端如Visual Basic。根据商业产品的预期,提供高水平的支持和建议。定价结构消除了通常与此类工具包相关联的“前期”成本。DicomObjects有很多可能的用途,但这里有一些常见的简单列表:图像查看软件(独立或基于Web)DICOM映像服务器在放射性设备中从头开始创建DICOM图像导入和导出其他格式的图像远程放射学应用中间路由站,从一个应用程序接收图像并发送到另一个应用程序,修改数据本身或周围的关联以克服不兼容性。模式工作列表服务器,使用来自ODBC或HL7的数据质量保证离线媒体读取器和写入器,包括DICOMDIR处理DICOM和Windows打印诊断测试应用程序1.1结构DicomObjects只使用一小部分对象,但大多数都有各种各样的方法和属性可用。主要项目有:DicomViewer这是在运行时只占用窗口中的空间的两个对象之一,并且可以显示多个图像。DicomImage和DicomDataSet这两个持有DICOM实例,并有很多相似之处,区别在于aDicomImage具有像素数据,而DicomDataSet通常不具有像素数据。DicomObjects用户手册第4页Dicom属性这表示在上述对象之一内的单个属性(例如,学习日期)。Dicom打印一个简化DICOM打印的对象。集合DicomImages,DicomDataSets和DicomAttributes对象包含多个项目相应类型。高级对象其他对象包括DicomLog,DicomServer,DicomGlobal和DicomContext(s),但是这些将在下面根据需要引入。1.2支持的语言本手册中用于所有示例的语言是Visual Basic。这有几个原因,主要是:它是用于客户端编程的Medical Connections中使用的语言。即使对那些不习惯的人来说,结构也是相当明显的。使用一致的语言,使本手册简单。当然,语言特定部分使用适当的代码!1.3使用COM对象模型的效果DicomObjects专门使用Windows COM模型,具有以下优点:语言独立性可替换文件(“OCX”文件)中的封装然而,有一些缺点和常见的错误:每个方法必须适用于一个或多个对象,因为没有“独立”方法。一个例如,这可能令人困惑的是“ReadFile”方法,它必须应用于现有对象(一个DicomImages集合或DicomGlobal对象)来创建一个新的对象不同类型。DicomObjects文件必须与应用程序的每个副本一起分发和注册。幸运的是,对于版本4,其他文件依赖现在已经基本上消除了,和大多数现代安装程序没有问题添加和注册组件,如DicomObjects。1.4 DicomObjects中的集合DicomObjects中有一些“Collection”对象,它们共享许多常见的方法,使对象能够添加到集合,访问集合或从集合中删除。以下属性和方法对DicomObjects中的所有集合都是通用的。计数集合中当前的项目数项目(长整数n)返回对集合中第n个项目的引用。这是默认成员集合,因此例如Images.Item(n)可以在Visual Basic中由Images(n)替换。不所有语言支持这种简化,所以完整版或其他形式如Images.GetItem(n)在某些环境中可能是必需的。DicomObjects用户手册第5页添加(对象)将适当类型的对象添加到集合的末尾。一般来说(但有几个重要的例外),只有适当类型的对象可以被添加到集合,例如。只有DicomLabel对象可以添加到DicomLabels集合。删除(长整数n)从集合中移除项目n,将其上方的项目向下移动以填补空白。清除完全清空集合,从中删除所有项目。笔记:在DicomObjects中,所有集合索引从1(而不是0)开始,因此项目范围是从项目(1)至项目(计数)。DicomContexts集合由演示上下文ID索引,在DICOM中必须总是一个小的奇整数,因此索引是1,3,5等。DicomImages和DicomDataSets集合允许通过实例UID索引,所以索引是实际上是一个变体,它应该是一个整数或一个UID字符串。1.5 Dicom对象的DICOM数据表示DicomObjects中最常用的对象是DicomImage,它封装了一个SOP实例,通常包括像素数据。 DicomDataSet实际上是相同的,但是正常用于不包含像素数据的数据集(例如查询结果或序列内的元素)。对于本节的其余部分,将使用DicomImage(或只是图像)作为示例,但除非否则大多数非像素相关的特征同样适用于两者。早期掌握的一个重要概念是DicomImage包含两个完全独立的源数据的:原始DICOM数据集短暂数据,如缩放系数,方向,相关注释和窗口值通常,DICOM数据本身通过图像的Attributes属性访问和修改,和临时数据通过简单的属性,但有一些属性,如Name,PatientID等等,实际上只是底层DICOM数据的快捷方式。所有这些属性都是清楚的在帮助文件中如此指示。几个属性,如窗口宽度和级别是短暂的可以在不修改基础数据的情况下改变的属性,但是在可能的情况下,它们是使用来自DICOM数据集的数据初始化。分离两种类型的数据有两个重要的,经常被误解的后果在DicomImage中:两个或多个DicomImages可以共享相同的永久数据,但有自己的临时数据。当DicomImage添加到DicomImages时,这个功能实际上被使用集合,因为此方法会创建一个全新的DicomImage并将其添加到采集。这个新映像引用相同的永久数据,并且用副本初始化的原始短暂数据,但这可以随后被修改。此过程保存存储器,但允许不同的显示参数(例如“双重”窗口“显示)。对简单DicomImages属性所做的更改通常不会修改底层DICOM数据(除了上面提到的“快捷方式”属性)。所以,如果需要用图像保存当前窗口和宽度设置,这必须由显式地完成添加属性0x0028,0x10510x0028,0x1052,如下所述。DicomObjects用户手册第6页对图像中保存的DICOM数据集的引用通过其Attributes属性进行,该属性是a集合对象。稍微不同的过程适用于访问(读取)和修改数据。1.5.1访问属性通常使用group和element标记从任何语言访问单个属性数字。在某些语言中,诸如image.Attributes.Item(gggg,eeee)或image.Attributes.GetItem(gggg,eeee)是必需的。但是,因为Item是a的默认属性DicomAttributes对象,许多语言允许语法更像image.Attributes(gggg,eeee)。的这个属性返回的值是一个DicomAttribute,它有几个属性,但主要的兴趣是:Exists:如果项目存在于数据集中,则为True。值:包含的数据的变体表示这是默认属性,在某些语言中,显式名称可以省略。变体的类型通常反映底层DICOM数据元素的类型,但有有几个陷阱要考虑:如果数据元素不存在(Exists = false),则类型为VT_ERROR如果数据为零长度(类型2元素和查询数据集中通用),则类型为VT_NULL像素数据(元素0x7FE0,0x0010)的处理方式不同,返回的值相同像素属性 - 即字节或短整数的3维数组。如果元素是序列,则该值为DicomDataSets对象(VT_DISPATCH)。看到下面有关序列处理的细节。否则,如果数据元素可能包含多个值(即DICOM VM是不是“1”),则返回的变体将是适当类型的单维数组值,即使只有一个项目恰好存在。这也将适用于任何属性未知的DicomObjects如私有元素,因为VM无法确定。的这种行为的基本原理是简化编码,因为程序员不需要写用于单值和多值情况的单独代码。从4.1版本起,不再需要使用变量数组处理多个值,因为可以使用DicomAttribute的“VM”属性来确定项目的数量,然后可以使用ValueByIndex(n)属性直接访问单个项目。对于一些应用程序,有必要遍历所有的属性,而不必知道提前存在哪些标签。在支持集合上的直接迭代器的语言中,这很容易(例如Visual Basic中的“For Each”),但是对于缺少此功能的语言,ItemByIndex方法是提供。一些脚本语言(特别是VBScript和一些不寻常的脚本,如MatLab中使用的)不能使用除了变体之外的任何数组。对于这些环境,VariantValue是提供,它可以返回变体的变体数组 - 有关更多详细信息,请参阅帮助文件。Value属性的另一个变体是UnicodeValue。如果值是一个合适的字符串,并且if存在字符集属性(0x0008,0x0005),则根据解释该值适当的字符集规则(如果安装在操作系统上!)。1.5.2更改DICOM数据因为我们不能预先知道特定属性是否甚至存在于数据集DicomObjects中不允许直接修改DicomAttribute的值。相反,a的特定成员DicomAttributes集合可以使用Add和Remove方法来替换或删除DicomObjects用户手册第7页分别。 Add方法使用variant参数来保存通常应为的值与上面为Attribute.Value结果所列出的类型相同,具有以下修改:值将根据需要进行强制转换。值“2”将对任何数值VR有效。零长度字符串可用于设置空值。即使VM为“1-n”,也可以使用单值(虽然数组也是如此允许)。当具有相同标签的属性已经存在时,它被简单地替换。1.6解释和使用序列DICOM允许一个属性包含一系列数据集,DicomObjects提供直接支持这种安排通过允许一个属性包含DicomDataSets对象,其中turn可能包含一个或多个DicomDataSet对象。这种结构是固有的递归,和嵌套到任何深度是允许的(一些DICOM IOD需要4级嵌套!),并且可以用于两者创建和读取数据的顺序。注意,虽然递归是通过两个级别,作为DicomDataSet对象包含一个DicomDataSets集合,其中包含一个或多个DicomDataSet对象,因此有必要小心使用语法。用于检索第一项的完整语法嵌入序列将是:设置sequenceitem = dataset.Attributes(gggg,eeee).Value.Item(1)在许多语言中,这可以使用默认属性来缩减:设置sequenceitem = dataset.Attributes(gggg,eeee).Item(1)进一步收缩会导致问题(例如在Visual Basic中),作为函数参数和索引可以被混淆,所以一个常见的错误是尝试:设置sequenceitem = dataset.Attributes(gggg,eeee).Value(1)当然,其中一个变量用于表示DicomDataSets集合,这种混淆不是出现。要将序列添加到数据集,首先构造新的DicomDataSets集合,创建新的DicomDataSet项目添加到它(使用独立创建或AddNew方法),然后最后将集合添加到顶级数据集。例如设置sequence = new DicomDataSets设置item = sequence.AddNewItem.Attributes.Add(.)Toplevel.Attributes.Add gggg,eeee,sequence在某些语言中,序列可能需要显式转换为VT_DISPATCH类型的变体。1.7私有属性DICOM允许程序员为内部使用创建自己的“私有”属性,应该总是有一个奇数组号,但这会对DicomObjects创建一个问题,因为它不知道提前他们的价值表示(VR)将是什么。 DicomObjects有一个所有的内部字典官方认可的标签在其发布日期,但新的标签正在添加所有的时间,和一个程序员使用最新的定义可能面临同样的问题。 DicomObjects提供了两种处理方式有这个问题:1.7.1 AddExplicit这个方法是普通Attributes.Add方法的一个小变体,提供一个两字符的VR代码,除了标签号和值之外。此代码必须是标准VR类型之一例如“US”(无符号短整型),“LO”(长整型)等。DicomObjects用户手册第8页1.7.2 AddToDictionary这是DicomGlobal对象的一个方法,并添加您喜欢的任何属性(无论是私有还是新)到内部DicomObjects字典。这必须发生在每次程序运行时,因为只有在RAM中的表的副本被修改,但它确实有一些优点超过AddExplicit:也可以添加描述(以后可以使用DicomAttribute.Description检索)VR适用于所有后续使用,包括通过隐式VR传输进行的读取/接收句法。可以添加VM,这可以改进错误检查,并允许DicomAttribute.Value属性在适当时返回单个值,而不是数组。关于未知/私有元素的一些其他点值得注意:DicomObjects通过隐式VR接收的未知项目正确使用VR“UN”传输语法如果属性具有类型“UN”,或者因为隐式接收,或者因为它是显式的发送/写为联合国,你可以,如果你知道的类型,通过设置属性的VR更改它属性(这是版本4之前的只读)所有私有元素都应该有一个元素gggg,0x0010,它总是类型LO(长字符串),粗略地描述属性是什么(例如“XYZ公司内部价值“)DicomObjects用户手册第9页2第一步 - 阅读,查看和写入DICOM文件虽然DICOM首先用于网络通信,并且许多开发人员将使用它该目的,DICOM文件用于此DICOM介绍,因为它们在概念上更容易,并且不依赖外部设备。2.1您的第一个DICOM计划基本示例提供了大多数主要语言,但这里是一个生产的食谱简约的图像查看器。在所有的例子中,实际的脚本是可视的,但是等同物应在任何其他环境中清楚。将DicomObjects导入到开发环境中创建新的表单/对话框将DicomViewer添加到该表单(如果您的GUI使用图标,则将显示为)。将此对象重命名为“Viewer”添加执行以下操作的命令:Viewer.Images.ReadFile“C: Program Files Medical Connections DicomObjects Examples41 Images mono.dcm“如果安装到非默认位置,修改路径运行程序,然后激活已创建的命令。如果一切都很好,产科超声图像应该显示(我的双胞胎!),缩放到适合您创建的DicomViewer。那么上面的命令实际上是做什么的,这怎么介绍你使用DicomObjects?事实上,你已经使用了10个不同的对象类型中的3个,一个DicomViewer,其提供窗口内的显示区域,DicomImage,其表示单个DICOM图像和DicomImages集合,如预期的那样,它保存DicomImage对象的集合。我们将依次考虑这些:2.1.1 DicomViewer这提供了可显示一个或多个图像的矩形区域。它有很多属性和方法,稍后将介绍,但是一些或更重要的是:MultiRows和MultiColumns这些整数属性控制DicomViewer的划分为多个图像“单元格”,一个指定数目的网格,大小相等的行和列,具有能力在每个中显示图像。 图片这是一个DicomImages集合(见下文),一个固有的和不可分离的一部分DicomViewer,它保存要由DicomViewer显示的图像。CurrentI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年机动车检测维修工程师职业资格考试题库及参考答案解析
- 制药工程学期末考试模拟试卷及答案
- 2026年济南市政务服务中心(综合窗口)人员招聘笔试备考试题及答案
- 校长在教师会议上谈读书主题是做与时俱进的教育者――多读书做一条常流常新的小溪
- 2026遗传咨询试题及答案详解
- 江西省南昌市《轮机部(船舶辅机8301)》-海船船员考试在线自测试题含答案(2026年下半年)
- 2026年中央电大行政管理与领导力期末试题含答案详解
- 2026印刷安全教育试题及答案
- 2026年环境保护法律法规考试试卷及答案
- 临时安保服务供应合同三篇
- 2026年司法考试《刑法》专项训练卷(附答案)
- 2026年低压电工证考试试题及答案
- 2026年广西壮族自治区百色市辅警招聘试题及答案
- 2026年《中国脑出血急性期救治临床指南(2026版)》
- 2026年病理生理学试题题库(含答案)
- 初中团课课件
- 2026年安徽省中考物理电学基础知识巩固习题课件
- 髋关节置换手术的术后康复
- 疼痛数字评价NRS量表
- 特种设备检验员考试题库1000题(含答案和解析)
- 2026年道路危险货物运输押运人员从业资格考试题库(含答案)
评论
0/150
提交评论