【转】DICOM文件格式剖析(初识)

转自:DICOM文件格式剖析(初识)_MoreThinker的博客-CSDN博客_dicom格式

初识DICOM(适合初学者)

初识DICOM文件,发现网上的资料有点少,大部分的资料都不全,在这里做一下总结,关于具体的格式会在后续的文章分析

复杂的DICOM文件

  1. 在这里先说一下DICOM文件是干嘛的?
    DICOM(Digital Imaging and Communications in Medicine)医学数字成像和通信,定义了质量能满足临床需要的,可用于数据交换的医学图像格式。简单来说,DICOM就是一种医学图像格式的标准。而其中包含的信息,将是我们探讨的重点。

  2. DICOM文件出现的原因
    我们知道很多种图像文件格式了,如:JPEG、BMP、TIFF、GIF等。那么为何又提出了DICOM文件(一般文件后缀名是.dcm或.dic),原因很简单,上述的那些图像格式简单,不能够满足医学方面的需求,因此出现了这种很复杂的DICOM文件,为什么说复杂,我们很快就会知道。

DICOM文件格式

DICOM文件(dcm文件)一般由一个DICOM文件头和一个DICOM数据集组成的。
在讲文件头和数据集之前,我们先讲一下DICOM文件的一个最基本的结构——数据元素

数据元素
由一个唯一的数据元素标签来定义,这个数据元素标签相当于一个唯一识别码
一个数据元素由若干字段组成,接下来说一下数据元素的主要结构

  • 标签(Tag):4字节无符号整数,数据元素的唯一标识。由组号(Group)和元素号(Element)两个部分组成,各占2字节;
  • 值类型(VR 即 Value Representation):2字节字符串,是数据元素的数据类型,一般在DICOM标准中有默认的VR字符集编码
  • 数据值长度(Length):2字节或4字节(具体取决于传输语法,在后面的文章会讲解)无符号整数,表明了数据值的长度,当数据值占的字节为奇数时,补多一个字节,以偶数进行记录;
  • 数据域(VF 即 Value Field):长度为数据值长度,为偶数字节,表明了数据元素的值。
    DICOM数据元素格式

1. 文件头
文件头是用于标识数据集的,首先最前面有128字节的文件前言,4字节的DICOM前缀和文件元信息。
(1)文件前言:128字节,用于应用简介或是详细说明的固定长度的数据段,当它无内容时,所以字节都为00H;
(2)DICOM前缀:4字节,包含看一个字符串“DICM”,用于标识该文件是否为DICOM文件;
(3)文件元信息:字节不定,是一些具有数据元素结构的元素体,包含了文件元信息版本、媒体存储SOP类、传输语法、实现的的设备等。
DICOM文件头格式

2. 数据集
数据集由若干的数据元素组成,存储了图像的信息。其中的数据元素是根据Tag标签值由小到大进行排列的。
数据集合格式
常用的标签主要分为:

  • Patient Tag
  • Study Tag
  • Series Tag
  • Image Tag

Tag对应的数据元素字段,这里不再一一列述,可参见下面的文章
dicom文件tag详解:https://blog.csdn.net/wenzhi20102321/article/details/75127101

此外还可以将Tag分为文件元Tag、普通Tag以及像素Tag
文件元Tag:组号为0002的标签,数据元素包含的信息我们在上面讲过了;
像素Tag:标签号为(7fe00,0010)的Tag,是像素数据的开始的地方;
普通Tag:除了文件元Tag和像素Tag之外的Tag。
**注:**我们这里的组号和元素号都是用十六进制来表示。

特殊的Tag:

  • (7fe0,0010)像素元素

  • (0002,0010)传输语法(Transfer Syntax UID)

这里重点讲下传输语法,它表明了文件在磁盘中存储的方式,根据显隐式和大小端传输语法分为三类:
(1)小端隐式语法
(2)小端显式语法
(3)大端显式语法

这里大小端不做具体的解释,简单说就是读取磁盘数据的顺序。
这里以(0002,0010)标签为例子,如果是小端读取,则磁盘中存储的是 02 00 10 00;如果是大端读取,则为 00 02 00 10。
显隐式就是指磁盘内是否有存储VR的数据,隐式则没有,显式则有。

隐式语法的格式如下:
隐式传输语法格式
显式传输语法的格式根据VR类型分为以下两种:
①VR为OB、OW、OF、UT、UN、SQ
显式VR为OB、OW、OF、UT、UN、SQ
②VR为其它类型
显式VR为其它类型
VR就是数据类型,学过编程语言都会接触到很多的数据类型,而这里的VR跟我们所学的数据类型差不多,不过会有几个比较特殊的,例如OB和SQ,这两种数据类型,会在后面的文章进行专门的讲解。

而VR具体有哪些呢,可以参考其他的文章,这里就不再一一罗列。
医学图像之DICOM格式解析:https://www.cnblogs.com/XDU-Lakers/p/9863114.html

最后这里给出DICOM文件的一个大概的格式:

DICOM文件格式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435575.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】进阶 JavaScript 必知的 33 个点【进阶必备】

转自:进阶 JavaScript 必知的 33 个点【进阶必备】 进阶 JavaScript 必知的 33 个点【进阶必备】 Original 前端小菜鸡之菜鸡互啄 前端开发爱好者 2022-04-11 08:32 收录于话题#javaScript进阶1个 点击下方“前端开发爱好者”,选择“设为星标” 第一…

【转】自动化构建、自动化部署发布一览

转自:自动化构建、自动化部署发布一览 - 知乎 在软件系统开发的过程中,一个项目工程通常会包含很多的代码文件、配置文件、第三方文件、图片、样式文件等等,是如何将这些文件有效的组装起来最终形成一个可以流畅使用的应用程序的呢&#xff…

承博士:让云计算落地生根的中国云计算平台

2010-01-22 09:48:41 [0评论 ] 金蝶中间件秉承自主创新,努力打造自主知识产权的云计算平台;金蝶Apusic云计算解决方案是为大型企业和组织提供私有云的解决方案,通过云计算中间件平台,为云计算提供落地的务实价值。金蝶中间件与国际厂商合作&…

Microsoft Windows CE .NET 中的中断体系结构

概述 通过 Microsoft Windows CE .NET,Microsoft 已经升级了 Windows CE 的中断体系结构。该操作系统 (OS) 所具有的处理共享中断的能力极大地扩展了 Windows CE .NET 支持许多中断体系结构的能力。本文从原始设备制造商 (OEM) 和应用程序开发人员的角度探讨了处理…

微软企业库5.0学习笔记(三十三)数据访问模块

前言 鉴于企业库5.0已经发布正式版,同时有广大读者的要求(臭屁一下,o(∩_∩)o...),后面文章的内容和代码将基于Enterprise Library5.0和Unity2.0来写,感谢大家的一贯支持。 正文 数据库访问模块都能实现哪些…

ARM中断分析之一:中断控制器和CPU、外设的关系

“中断控制器”也是CPU众多外设中的一个,不同的是,它一方面接收其它外设中断引脚的输入,另一方面,它会发出中断信号给CPU。下图是一张中断控制器外设的框图,s3c2410的框图。 为了把中断控制器、CPU、外设联系起来&…

【转】Jenkins项目常用三种构建类型风格详解

转自:Jenkins项目常用三种构建类型风格详解_ぃ小小宇宙的博客-CSDN博客_jenkins项目类型 Jenkins构建的项目类型介绍 jenkins 的安装配置请参考:《jenkins war包安装部署,tomcatJDKmaven》 Jenkins中自动构建项目的类型有很多,…

ARM中断分析之二:裸机下面的中断处理

EINT4中断的裸机处理 这是基于S3C2410的EINT4中断的裸机处理,当中断发生时就把LED灯取反显示。下面是电路图。 上面是外部KEY连接到CPU的EINT4引脚上面,即:按下键就会产生一个中断。 按照先前介绍的,中断处理流程来介绍&#xff0…

【转】Jenkins 构建触发器操作详解

转自:Jenkins 构建触发器操作详解 - 习久性成 - 博客园 前言 触发远程构建 【https://www.cnblogs.com/Rocky_/p/8297260.html】 例如,使用脚本:通过一个网址的访问来触发构建,这样就不需要登录jenkins系统也能触发构建了。 示…

ARM中断分析之三:WinCE驱动的中断分析

现在有许多高端的ARM芯片,像苹果、三星、华为都采用ARM芯片做为智能手机芯片。 这篇文章介绍基于ARM的WinCE操作系统的驱动的中断分析。WinCE驱动分为两类,这里介绍流驱动,流驱动比较简单。 关于流驱动,下面是一张框图&#xff0c…

【转】密码破解全能工具:Hashcat密码破解攻略

转自:密码破解全能工具:Hashcat密码破解攻略 - FreeBuf网络安全行业门户 Hashcat密码破解 hashcat号称世界上最快的密码破解,世界上第一个和唯一的基于GPGPU规则引擎,免费多GPU(高达128个GPU)&#xff0c…

基于Visual Studio2010讲解LINQ读出数据库数据生成XML

LINQ to XML 是一种启用了 LINQ 的内存 XML 编程接口,使用它,可以在 .NET Framework 编程语言中处理 XML。 LINQ to XML 最重要的优势是它与 Language-Integrated Query (LINQ) 的集成。 由于实现了这一集成,因此,可以对内存 XML…

【转】详解JS的四种异步解决方案:回调函数、Promise、Generator、async/await

转自:详解JS的四种异步解决方案:回调函数、Promise、Generator、async/await 同步&异步的概念 在讲这四种异步方案之前,我们先来明确一下同步和异步的概念: 所谓同步(synchronization),简单来说,就是…

wince6.0 s5pv210 中断

1. 在smdkv210\src\oal\oallib\ksarm.h头文件里可以看到wince的中断定义。 设备中断的起始编号即wince预定义的设备中断ID的基值 SYSINTR_DEVICES EQU 8 一共支持64个设备中断 SYSINTR_MAX_DEVICES EQU 64 可用的设备…

【转】vsftp配置实例-虚拟用户锁定目录

转自: vsftp配置实例-虚拟用户锁定目录_jasonyang69的博客-CSDN博客_vsftpd锁定用户目录 快速解决 vsftpd nologin 虚拟用户 拒绝访问 无法登录_小飞飞飞鱼的博客-CSDN博客_vsftpd 拒绝访问 一、实验步骤 0、启用 nologin shell #vim /etc/shells /bin/sh /bi…

【转】高端球管使用了哪些高科技?

转自:高端球管使用了哪些高科技? 本文来源:第三方维修平台 本文作者:RepairCT 随着人类发现X射线,这项技术不断应用到医学领域,比如X光机、DR、CT、乳腺钼靶等医疗设备,它们的主要核心均是利用…

关于代码组织的一些看法(上)

今天看了一个篇关于架构的文章,略有所感,记录一下。 软件的架构基本是从一个原始需求出发,逐步构建可维护、更灵活的开发框架的过程,在这个构建过程中可能会逐渐的增加代码的复杂度来满足灵活性的要求,从这个层面来讲&…

CE下基于Zylonite硬件平台的SD卡驱动开发

摘要:本文结合实际项目(一款以WINCE为操作系统内核的GSM/PHS双模智能手机)对嵌入式系统Windows CE5.0的底层驱动(SD卡)的架构进行了分析和研究,以MARVELL公司提供的基于INTEL Zylonite硬件平台的BSP为基础&…

pthread-win32在VC2005下的使用

pthread-win32是一个在Win32环境下的Unix POSIX线程库的移植. 有了它, 可以比较方便的移植Unix/Linux多线程程序到Windows下. 在VC2005下使用也很简单: 下载, 地址是 http://sourceware.org/pthreads-win32 里面include目录中是头文件, lib目录中是.lib和.dll文件. 在VC项目的属…

【转】apt命令

转自:apt命令详解 - 简书 apt命令可以说是Ubuntu系统下最为重要的命令,安装、更新、卸载软件,升级系统内核都离不开apt命令。 一、apt的简介 apt的全称是Advanced Packaging Tool是Linux系统下的一款安装包管理工具。 最初的时候&#xff…