DICOM 文件中,VR,VL,SQ,图像二进制的几个注意点

DICOM 文件的结构,在网上有很多的学习资料,这里只介绍些容易混淆的概念,作为回看笔记。

1. 传输语法

每个传输语法,起都是表达的三个概念:大小端、显隐式、压缩算法

DICOM Implicit VR Little Endian: 1.2.840.10008.1.2
DICOM Explicit VR Little Endian: 1.2.840.10008.1.2.1
DICOM Explicit VR Big Endian: 1.2.840.10008.1.2.2
JPEG_LOSSLESS_TRANSFER_SYNTAX: “1.2.840.10008.1.2.4.70”;
在dcmtk中,dcmdata工程内dcxfer.cc文件都有明确的标识,例如JPEG_LOSSLESS_TRANSFER_SYNTAX: “1.2.840.10008.1.2.4.70”; 表示

{ UID_JPEGProcess14SV1TransferSyntax, // "1.2.840.10008.1.2.4.70""JPEG Lossless, Non-hierarchical, 1st Order Prediction",EXS_JPEGProcess14SV1,EBO_LittleEndian,EVT_Explicit,EJE_Encapsulated,14L ,14L,OFFalse,OFFalse,ESC_none },

上边就表示了JPEG_LOSSLESS_TRANSFER_SYNTAX这个传输语法,是小端和显式的。

2 显式VR

  • 当VR是OB OW OF UT SQ UT UN的时候,VL占用4个字节
组号元素号VR+预留值长度数据元素值
2字节2字节2字节+2字节(0x00,0x00)4字节由数据长度决定

在这里插入图片描述

  • 当为其他普通类型的时候,是如下的结构
组号元素号VR+预留值长度数据元素值
2字节2字节2字节2字节由数据长度决定

在这里插入图片描述

  • 隐式
组号元素号值长度数据元素值
2字节2字节4字节由数据长度决定

在这里插入图片描述

3. Sequence二进制文件编码

3.1. 显式长度

当Sequence的数据元素值被编码为32位无符号整数值的时候,这个长度应该包括由该数据元素传递的零个或多个Item产生的总长度。如果项目序列包含零个项目,则此数据元素长度应为00000000H。
在这里插入图片描述
以下是一个例子:
在这里插入图片描述
因为这个文件是显式小端(边)编码方式,标注1表示组号和元素号,标注2中显示,前两个字节是SQ,接下来2个字节是预留00 00,标注3中,长度是0x18,也就是24个字节长度,这就表示接下来的24个字节都是此Sequence元素。
接下来我们再详细看下Sequence内部item的定义的结构;内部的Item以FFFE,E000开始,然后是4个字节的长度,然后是一个标准的DataSet集合。
在这里插入图片描述
上图中,标注1就是Sequence中的Item的开始。
在这里插入图片描述

  • 再看另外一个例子2,这个可以大家自己分析一下
    在这里插入图片描述

3.2 当Sequence中,是未定义的长度,也就是,数据元素长度字段为FFFF,FFFFH的值的时候,此时,它应与序列定界项目结合使用。序列定界项目应位于项目序列的最后一个项目之后,其Item的标签应为(FFFE,E0DD),项目长度为00000000H。

在这里插入图片描述
以下是一个西门子CT产生的dicom文件片段,我个人感觉这个文件是错误的。
在这里插入图片描述
大家可以看到标注1的位置,表示这个sequence是没有设定长度的,所以,它的结尾是以FFFE,E0DD结束,后边再跟上0000 0000.也就是标注4所指的位置。这里,注意一下,第一个item的长度是四个字节,使用55 00 00 00来表示,换算为十进制就是85个字节,实际上接下来有122个字节,这里我感觉应该是7A 00 00 00。接下来的item都是正常,这里注意,内部也同样包含了一个SQ,内部的SQ的长度也是用FF FF FF FF表示的,这里的第一个item的长度文件内记为10 00 00 00,也就是16个字节,通过观察,确实是16个字节的长度,这样也可以进一步证明,标识2的位置55 00 00 00是错误的。或者,我理解错了,大家一起探讨。

4 文件二进制数据

隐式小端

下面给的一个例子是隐式,小端的例子。可见GroupTag(7FE0)和ElementTag(0010),在实际二进制排列中是e07f 1000的二进制;0x00080000=524288个字节=2Byte512512在这里插入图片描述

显式,小端

可见GroupTag(7FE0)和ElementTag(0010),VR:OW 缺省两个字节 ,VL: 0X00 08 00 00=524288个字节=2Byte512512
在这里插入图片描述

JpegLossLess 二进制存储方式 小端 显式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

解决VSCode打开终端Terminal闪退的问题

一、背景 在新电脑上使用了VSCode,但是一打开Terminal,Terminal马上就消失了,在网上找了很久,都没有找到对应的分析 二、解决思路 首先,是从这个文档中找到了灵感,这个文档里面汇集了大部分的问题&#…

孩子都能学会的FPGA:第三十二课——用FPGA实现一个通用的SPI主机发送模块

(原创声明:该文是作者的原创,面向对象是FPGA入门者,后续会有进阶的高级教程。宗旨是让每个想做FPGA的人轻松入门,作者不光让大家知其然,还要让大家知其所以然!每个工程作者都搭建了全自动化的仿…

二百一十五、Flume——Flume拓扑结构之复制和多路复用的开发案例(亲测,附截图)

一、目的 对于Flume的复制和多路复用拓扑结构,进行一个小的开发测试 二、复制和多路复用拓扑结构 (一)结构含义 Flume 支持将事件流向一个或者多个目的地。 (二)结构特征 这种模式可以将相同数据复制到多个channe…

微信生态下的私域流量载体有哪些?

私域流量的本质就是:降低我的获客成本,提高我产品服务的复购率,增加我和用户之间的粘性,挖掘用户的终身价值。 私域流量一般我们特指微信体系的个人号、公众号、社群和小程序,现在朋友圈和视频号也成为了打造微信私域…

HubSpot和AI的完美结合:解锁业务增长密码

随着数字化时代的发展,智能营销已经成为企业走向成功的关键之一。在这个领域的领先者之一,HubSpot积极整合人工智能(AI)技术,为数字营销、销售和服务带来了新的可能性。今天运营坛将带领大家深入探讨HubSpot和人工智能…

活动预告 | 微盟技术沙龙 - Elasticsearch 在微盟的实践 12/21/2023

微盟技术沙龙 「微盟技术沙龙」是由微盟研发中心发起并联合各方小伙伴为开发者举办的系列技术沙龙,从用户,产品,技术等方面与开发者进行交流。 微盟技术沙龙关注开发者在实际应用中遇到的问题。提供最真实的干货,以技术会友&…

GPU 性能测试软件:GPU-Z,2023 年 9 月 12 日更新

GPU-Z是一款用于Windows操作系统的免费工具,它用于查看和监控计算机的图形处理单元(GPU)信息。这个工具是专为计算机硬件爱好者、游戏玩家、系统管理员和技术支持人员设计的 GPU-Z 的特点 GPU信息:GPU-Z能够显示关于您计算机中G…

命令执行 [BUUCTF 2018]Online Tool1

打开题目 我们代码审计一下 if (isset($_SERVER[HTTP_X_FORWARDED_FOR])) { $_SERVER[REMOTE_ADDR] $_SERVER[HTTP_X_FORWARDED_FOR]; } 如果存在xxf头且不为空,则将xxf头内容(真实的客户端ip)赋给ROMOTE_ADDR(代理服务器传过…

如何使用蜘蛛池蚂蚁SEO

​蜘蛛池是一种利用搜索引擎爬虫进行推广营销的方式。它的核心是建立一个能够吸引搜索引擎爬虫的网站群,这些网站能够产生大量的优质内容,并形成一个巨大的网站群,从而吸引更多的搜索引擎爬虫。 如何联系蚂蚁seo? baidu搜索&…

【C语言(十二)】

数据在内存中的存储 一、整数在内存中的存储 整数的2进制表示方法有三种,即 原码、反码和补码 有符号的整数,三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,最高位的⼀位是被当做符号…

无参数RCE知识点

什么是无参数RCE? 无参rce,就是说在无法传入参数的情况下,仅仅依靠传入没有参数的函数套娃就可以达到命令执行的效果 核心代码 if(; preg_replace(/[^\W]\((?R)?\)/, , $_GET[code])) { eval($_GET[code]); } 这段代码的核心就是只…

西工大计院计算机系统基础实验二(配置gdb插件)

第二次实验是二进制炸弹实验,为了简化操作,并且让大家接下来能够按照作者之前已经为网安院写好的博客西工大网络空间安全学院计算机系统基础实验二(清楚实验框架及phase_1)-CSDN博客来走,大家需要下载一款好用的gdb插件…

canvas基本绘制对象

目录 绘制画布 设置画布 绘制圆形 绘制矩形填充渐变色 绘制文字及文字样式 绘制画布 <canvas id"canvas" width"800" height"600"></canvas> 设置画布 //获得画布元素var canvasdocument.getElementById(canvas);var ctxca…

基于Java (spring-boot)的二手物品交易平台

​ 一、项目介绍 1、管理员功能 &#xff08;1&#xff09;登录&#xff1a;管理员能够根据账号访问系统。 &#xff08;2&#xff09;用户管理&#xff1a;管理员可以添加、删除、修改用户信息&#xff0c;查看用户列表&#xff0c;对用户进行管理和控制。例如&#xff0c…

Python将Labelme文件的标注信息绘制到图片上

Python将Labelme文件的标注信息绘制到图片上 前言前提条件相关介绍实验环境Python将Labelme文件的标注信息绘制到图片上代码实现输出结果 前言 由于本人水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更多精彩内容&#xff0c;可点击进入Python日常小操作专栏、O…

怎么把图片转文字?这几个图片转文字方法一定要知道!

怎么把图片转文字&#xff1f;无论是从书籍、网络还是社交媒体上&#xff0c;我们经常需要从图片中提取文字来进行复制、编辑或翻译。手动操作耗时耗力&#xff0c;效率低下&#xff0c;那么怎么把图片转文字呢&#xff1f;今天我将介绍三种不同的方法来实现图片转文字。 图片转…

OceanMind海睿思案例入选第二届中国数据治理年会“DCMM百项优秀案例”

近日&#xff0c;中国电子信息行业联合会在北京成功举办“第二届中国数据治理年会”。 本届大会以“数据强基、智领未来”为主题&#xff0c;汇聚我国数据治理领域的资深专家、学者、企业大咖同台论道&#xff0c;共话数据未来的发展与创新。 中新赛克海睿思作为DCMM3级乙方代…

HPM6750系列--总章

本栏目介绍先楫半导体出品的HPM6750芯片&#xff08;基于HPM6750evkmini开发板&#xff09; ​​​​​​​ 内容概述 HPM6750系列--第一篇 初识HPM6750 介绍HPM6750芯片信息&#xff0c;包括主频、内存、外设配置&#xff0c;并列举了各种开发工具和开发资源。 HPM6750系列--…

Cloudflare始终使用HTTPS且带参数跳转到www的域名

文章目录 设置教程设置图跳转实测 设置教程 关闭 SSL/TLS -> 边缘证书 的 Always Use HTTPS 规则 -> 页面规则 -> URL: http://www.example.com/* 设置成始终使用HTTPS 规则 -> 页面规则 -> URL: example.com/* 设置成 转发URL301重定向到 to https://www.ex…