技术文章和通讯

DICOM文件中访问数据

杰夫·马瑟MathWorks


医学数字成像和通信(DICOM)格式描述如何组合成像模式(之间发送的消息计算机断层扫描(CT)、核磁共振(MR)和超声波设备),定义了一组在一个网络中传送他们的操作。这些信息也可以写入文件离线存储图片存档系统,CD,或其他类型的存储设备。DICOM-formatted信息结合图片和元数据来创建丰富的医学成像过程的描述。这种格式是非常详细的,2500多页的一个规范。

MATLAB和图像处理工具箱提供容易获得DICOM数据。访问数据在DICOM文件非常容易,只需使用TIFF或JPEG图像。本文提供的示例使用DICOM和提供了背景信息格式。

之前DICOM:混乱

DICOM大大增加了医疗设备间的通信,降低了集成的硬件和软件解决方案的成本和复杂性。金宝搏官方网站在日本,每个制造商使用专有的图像格式和通信协议连接与第三方产品的硬件解决方案。金宝搏官方网站下载188bet金宝搏整合医疗硬件和软件来自不同供应商的翻译从一个到另一个供应商的协议。这个过程是混乱和困难重重。产业发展提供数据转换服务。

随着DICOM标准作为一个正式的出现在1993年,一个协议取代了许多协议和格式。DICOM是通用格式,缓解来自不同供应商的集成的解决方案。金宝搏官方网站例如,可以集成一个磁共振扫描器从通用电气医疗系统图片档案系统(pac)从爱克发和另一个供应商的胶片打印机不使用翻译设备。集成不是局限于硬件。等软件MATLAB支持DICOM可以分享图片与所有这些设备金宝app,提供每个必要的硬件设备实现了DICOM服务。

一个简单的第一个例子

在医学成像,病人是一个成像研究,这可能包含多个系列的图像。在单个执行每个系列形态如先生、CT或x射线装置,可以有多个相关的图片。假设我们有一个研究组成的一系列20横向大脑MRI图像和我们想读到MATLAB。(这些20 20 DICOM图像存储在文件名称等brain_017.dcm,你可以下载MATLAB中央如果你想运行示例)。假设我们知道每个图像是由- 256和256 -包含签署了16位数据。我们可以用下面的代码阅读系列:

% Preallocate 256 -的- 256 - 1 - 20图像数组。X = repmat (int16 (0) (256 256 1 20]);
%的系列图片。p = = sprintf(1:20文件名的brain_ % 03 d。dcm的p);X (:: 1, p) = dicomread(文件名);结束
%显示图像栈。蒙太奇(X, [])

运行此代码后,MATLAB工作区包含4 - d与图像数据数组,和先生的情节片出现。

dicom_fig1_w.jpg
点击图片查看放大图。

您可以使用MATLAB的图像处理工具箱与这个数据执行多个任务。例如,MATLAB提供复杂的体积可视化技术来重建三维表面从这些切片,然后应用表面和灯光效果。的帮助部分中的示例isocaps函数显示了这个实现。的imtransformtformarray图像处理工具箱中的函数可以很容易从横向数据提取切片在不同的方向。例如,“从三维核磁共振成像中提取切片数据集“例子展示了如何从一个类似的数据集提取saggital片。您还可以使用形态学图像处理工具箱中的函数执行操作,如图像分割、特征提取和图像数据。或者,您可以编写自己的函数执行体积估计,收缩包装,等等。

访问DICOM元数据

在前面的示例中,我们做了几个假设我们预先分配存储阵列。所有这些假设是基于DICOM文件中存在的元数据。此外,图像像素的值被限制在一个狭窄的全部可能的图像的动态范围,所以我们必须传递一个空数组作为一个特殊的参数蒙太奇重新调节数据。让我们在DICOM文件中使用的元数据属性(1)智能preallocate数组和(2)重新调节数据值填补16位的动态范围。

因为所有的图像在一系列必须有相同的尺寸和位深度,我们只需要让本系列的元数据从一个图像preallocate数组。的图像处理工具箱函数dicominfo返回从DICOM文件的元数据。

dicom_code_w.gif

正如您可以看到的,有许多的元数据值,或属性。值的“行”、“列”和“BitsStored”告诉我们什么我们需要知道,我们可以重写的代码读取图像栈。

nRows = info.Rows;nCols = info.Columns;nPlanes = info.SamplesPerPixel;nFrames = 20;%目录中的文件的数量
X = repmat (int16 (0), [nRows, nCols, nPlanes nFrames]);
p = 1: nFrames帧= sprintf (“brain_ % 03 d。dcm的p);X (:,:,: p) = dicomread(帧);结束

我们仍然要理所当然的是,图像包含签署data&msdash;“PixelRepresentation”值“1”表示类型的但总剩余的我们需要的是容易获得的信息。我们可以用这个元数据的imlincomb图像处理工具箱的函数重新调节图像数据来填补整个16位的动态范围。重新将灰度值的线性组合是“y = (x - b) * m”,其中b是最小x值和m是一个常数比来自输入和输出范围。

%最小和最大像素值的跟踪。minPixels = repmat (0, 1, nFrames]);maxPixels = repmat (0, 1, nFrames]);
p = 1: nFrames帧= sprintf (“brain_ % 03 d。dcm的p);信息= dicominfo(帧);minPixels (p) = info.SmallestImagePixelValue;maxPixels (p) = info.LargestImagePixelValue;结束
%重新调节图像从0开始。b = min (minPixels);m = 2 ^ 16 / (max (maxPixels) - b);Y = imlincomb (m X - (m * b),“uint16”);

DICOM详细信息元数据

如前面的示例所示,一个典型的DICOM文件包含大量属性。原因是日本消息封装所有医学成像过程的信息,包括关于病人的详细信息,研究成像,图像系列除了图像帧存储在文件中。在一起,组成一个所有这些属性信息对象。

DICOM规范包含众多信息对象定义(iod),如先生的形象,超声波多帧图像,和放射治疗计划。DICOM文件先生在上面的例子中包含图像信息对象。dicomread理解大多数iod的DICOM规范中列出。

iod的定义而言,较小的功能单元,或模块对应于特定的现实世界的对象,如病人,成像设备等。在DICOM hundred-or-so模块描述一切可以结合DICOM对象信息。例如,下表列出了模块,构成一个形象IOD先生:

模块的图像IOD先生:

模块描述病人病人的细节一般通用的信息研究,成像过程的一组病人研究(U)病人信息的研究一般系列一般信息关于一个特定的成像过程的参照系信息空间与图像在一系列通用设备通用信息产生系列通用图像细节的图像形态识别和描述图像系列图像平面内的切片厚度/位置/间距和其他方向的细节图像像素的实际图像像素和如何解释他们的信息对比/丸(C)药物的详细信息给先生成像时图像值特定于磁共振成像叠加平面(U)图形或位图文本显示与特定图像VOI的附近地区(U)信息变换图像的对比或强度SOP常见的消息的创建日期/时间和其他通用的DICOM的细节

一些模块,如病人,一般研究中,一般设备,和图像像素,在许多iod的发现。其他模块只出现在特定的碘。MR图像模块,例如,只有图像IOD先生的一部分。

描述病人IOD包含模块,研究系列,为特定的医学成像和图像的过程。也注意到有些模块有“(C)”或“(U)”附近的名字,这意味着这个IOD他们“有条件地”或“用户可选”模块;条件和用户可选模块可能会或可能不会出现在每一个形象IOD先生。例如,对比/丸模块只会出现如果药物时成像,和VOI附近地区模块不需要由设备实现DICOM文件写道。

所有的模块和属性中定义的3.3 PS DICOM规范,这是网上的国家电气制造商协会。此外,所有列出的属性是定义在数据字典。供应商有时定义私有属性特定于他们的硬件。当你不需要做任何特别的私人属性与阅读dicomreaddicominfo,如果你想提供额外的信息属性不是DICOM规范的一部分,您可以提供您自己的数据字典。

写作DICOM文件

现在我们将创建一个新的DICOM文件。写一个新文件需要一个图像和元数据。我们创建了一个新的图像缩放数据在上面的一个例子中,和dicomwritedicominfo将帮助我们创建我们需要的元数据。

要编写一个DICOM文件,只需使用dicomwrite图像处理工具箱。目前,这个函数支持创建二级捕获(SC) iod的形金宝app象,其中包含所有必要的像素数据和元数据的正确解读图像。从本质上讲,SC图像类似于你会产生framegrabber,或如果你有生成图像自己从头开始或从另一个图像(在上面的示例中)。关于病人的元数据、图像和研究将出现,但最初的硬件信息,图像将不会产生。

写第十帧的图像使用默认元数据扩展到一个新的文件,使用dicomwrite其基本语法:

帧= Y (:,:,: 10);文件名=“brain_scaled_10.dcm”;dicomwrite(框架、文件名)

在这个例子中,dicomwrite推断的元数据是必需的,在适当的地方填写空白值。提供覆盖默认值dicomwrite结构包含属性:

信息= dicominfo (“brain_001.dcm”);dicomwrite(帧,文件名,信息)

dicomwrite选择值,适用于二次捕捉IOD,忽略了休息。当dicomwrite使一个新文件,它实际上是执行两个操作。首先,它创建一个二级捕捉信息对象。然后它编码的信息对象的属性,把他们变成一个流的字节写入输出文件。这最后一步演示了DICOM的概念服务

服务的具体行动来执行提供了一组对象。常见的服务包括存储、打印管理、验证、查询和检索。在处理网络信息,服务是通过添加额外的属性来实现消息,然后将一系列指令发送到接收设备或应用程序,理解额外属性,找出如何处理消息。当处理DICOM文件,属性被添加到文件,和写作或阅读的文件取代了传输指令。

写一个文件包含DICOM数据很像执行存储服务。从本质上讲,IOD的属性加的存储服务组合和“冻结”当写入磁盘。读取文件“融化”IOD和服务属性,和整个背景如何处理信息保存。

编码规则中发现的DICOM标准提供的算法将属性转换为一系列字节传输或存储。可以使用不同的字节顺序方案在编码和图像像素可以使用大量的压缩技术,如JPEG或行程长度编码。在调用dicomwrite上面的文件编码使用所谓的“隐式虚拟现实,小端字节序”风格,和像素不压缩。

一起工作

一大堆传输语法明确定义如何解码DICOM消息。其中一个传输语法出现在DICOM网络传输的开始或在DICOM文件的开始。如果发送方/作家和接受者/读者支持相同的传输语法,进行沟通。金宝app否则,沟通失败。MATLAB的图像处理工具箱的DICOM特性最常用的传输语法的支持。金宝app

与所有这些possibilities-IODs,可选模块,服务和转移syntaxes-it很难确切知道两个模式将如何互动。实现一个服务需要知道哪些属性发送或接收。此外,使服务有用的经常需要知道什么样的数据放入属性和验证信息是正确的。因此,一些制造商支持全套的“服务对象对”在日本是可能的。金宝app此外,不同的应用程序支持不同的传输语法。金宝app

幸运的是,每个应用程序实现DICOM应该知道它支持的一部分。金宝app制造商发布的信息服务、碘和传输语法DICOM的支持金宝app一致性声明。通过比较语句从两个不同的供应商,你可以确定这两个应用程序可以共享信息。

无限的可能与日本

DICOM很容易获得,把医学图像到一个文件中。它在医学领域变得越来越盛行了。

许多医疗设备制造商和软件制造商将DICOM添加到任何产品,可以处理医学图像和数据。

使用MATLAB的图像处理工具箱提供了医学图像,在DICOM文件形态元数据和患者信息。他们还提供数字和图像处理算法,gui构建工具和可视化技术。MATLAB的图像处理工具箱,DICOM医学图像可以快速视图,设计和测试新模式,创建gui驱动医学图像分析系统。

2002年出版的

为相关行业观点文章