【转】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,一经查实,立即删除!

相关文章

SVN各个状态:A C D M G U R I具体含义

svn status命令查看svn状态 ?:不在svn的控制中 A:add,新增 C:conflict,冲突; tc以他们改得为准 D:delete,删除 M:modify,本地已经修改 G:modify and merGed…

WINCE Driver 心得总结

一. Windows CE的驱动程序的区分 1.从加载以及接口方式来区分 可以分为本机设备驱动(Built-In Driver)、可加载驱动(Loadable Driver)以及混合型驱动。 (1)本机设备驱动 本机设备驱动…

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

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

Struts配置

Struts应用采用两个基于XML的配置文件来配置,分别是web.xml和struts-cofig.xml文件。web.xml文件是配置所有web应用的而struts-config.xml文件是struts专用的配置文件,事实上也是可以根据需要给这个配置文件起其他名称的. Web应用的发布描述文件:web应用发布描述文件…

【转】开发者需要了解的领域特定语言(DSL)

转自:开发者需要了解的领域特定语言(DSL) - 知乎 领域特定语言是在特定领域下用于特定上下文的语言。作为开发者,很有必要了解领域特定语言的含义,以及为什么要使用特定领域语言。 领域特定语言domain-specific lang…

POJ 2240题(Floyd)

//使用Floyd的变形实现//这就是个套汇的问题&#xff0c;可以用Floyd求最大环&#xff0c;然后判断是不是大于1。#include <cstdio>#include <string>#include <map>using namespace std;map<string,int> MAP;double value[31][31];double rate;double…

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

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

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

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

【转】g++以及gcc的区别

转自&#xff1a;g以及gcc的区别 - 知乎 GCC &#xff0c;gcc 和g&#xff1a; 一直没搞清这几个东西的概念&#xff0c;搜了半天看到了一个不错的解释&#xff0c;所以大致记录一下&#xff0c;以免以后再忘记&#xff0c;链接。&#xff08;原谅没找到原文出处&#xff09;…

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

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

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

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

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

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

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

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

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

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

单节点hadoop部署成功

经过前面的配置&#xff1a; linux-ot1w:/home/macula/download/hadoop-0.20.2 # bin/start-all.sh starting namenode, logging to /home/macula/download/hadoop-0.20.2/bin/../logs/hadoop-macula-namenode-linux-ot1w.out Password: localhost: starting datanode, logging…

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

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

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

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

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

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

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

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

ARM中断分析之四:WinCE的OAL层的中断分析

从前面的介绍&#xff0c;我们知道了裸机中断处理的流程、WINCE驱动的中断处理&#xff0c;但是&#xff0c;WINCE底层是怎么处理中断的呢&#xff1f;这里就是介绍WinCE系统的OAL层的中断处理。它和裸机的处理总体一样&#xff0c;只是实现细节方面有点区别&#xff0c;具体流…