如何解析DICOM文件中的Pixel Data ?

2023-05-16

DICOM文件可以大致分为两部分:
一部分:与图像相关的元信息,包括患者信息,检查信息,序列信息,图像信息等等。
另一部分:图像的像素数据。
在解析DICOM文件中的像素数据的时候,我们先需要读取以下图像相关信息:
以下是某个CT影像中的图像信息示例:

(0028,0002)        Samples per Pixel               VR: US        Length: 2         Value: 1 
(0028,0004)        Photometric Interpretation  VR: CS        Length: 12         Value: MONOCHROME2
(0028,0010)        Rows                        VR: US        Length: 2         Value: 512 
(0028,0011)        Columns                     VR: US        Length: 2         Value: 512 
(0028,0030)        Pixel Spacing               VR: DS        Length: 22         Value: 0.48828125\0.48828125
(0028,0100)        Bits Allocated              VR: US        Length: 2         Value: 16 
(0028,0101)        Bits Stored                 VR: US        Length: 2         Value: 12 
(0028,0102)        High Bit                    VR: US        Length: 2         Value: 11 
(0028,0103)        Pixel Representation        VR: US        Length: 2         Value: 0 
(0028,1050)        Window Center               VR: DS        Length: 12         Value: 00100\00100
(0028,1051)        Window Width                VR: DS        Length: 12         Value: 00500\00500
(0028,1052)        Rescale Intercept           VR: DS        Length: 6         Value: -1000
(0028,1053)        Rescale Slope               VR: DS        Length: 2         Value: 1
(0028,2110)        Lossy Image Compression     VR: CS        Length: 2         Value: 01
(0028,2112)        Lossy Image Compression Ratio   VR: DS        Length: 8         Value: 6.228918


1.(0028,0002)        Samples per Pixel 
        每一个像素的取样数,一般来说,CT,MR,DR等灰度图像都是1,而彩超等彩**图像都是3,分别表示R, G, B三个颜色通道。

2.(0028,0004)        Photometric Interpretation
    我们经常碰到的Photometric Interpretation有以下几种类型:
        Monochrome2  一般的灰度图像都采用这种,Pixel值越大,图像就越白。
        Monochrome1 只有部分CR, DR图像使用,Pixel值越大,图像就越黑。
        Palette Colour 一般用于彩超图像,每个像素占用8位或者16位,调色板保存在[0028,1201]RedPaletteColorLookupTableData, [0028,1202]GreenPaletteColorLookupTableData, [0028,1203]BluePaletteColorLookupTableData的属性中。
        RGB  这是最常用的彩**图像格式。
        YBR_FULL  另外一种彩**图像格式, 存储格式为Y(Luminance 亮度), B(Blueness 蓝色), R(Redness, 红色)
        YBR_FULL_422 一般用于JPG有损压缩格式的彩**图像,每两个像素共同使用32位,每一个像素都有自己的Y(Luminance 亮度),但是共享相同的B(Blueness 蓝色), R(Redness, 红色)。所以,它的像素值存储方式是:YYBR,YYBT,YYBR
        YBR_RCT 用于JPEG 2000无损压缩彩**图*像,Reversible Color Transformation, 可逆色彩变换。
        Y = (R+2G+B)/4,  CB = B-G  , CR = R - G
        G = Y - (CR+CB)/4 ,  R = CR + G,  B = CB + G
        YBR_ICT 用于JPEG 2000有损压缩彩**图像 Irreversible Color Transformation, 不可逆色彩变换。
        Y = + .29900R + .58700G + .11400B
        CB = - .16875R - .33126G + .50000B
        CR = + .50000R - .41869G - .08131B

3.  (0028,0010)Rows 
    图像的高度

4.  (0028,0011)Columns
    图像的宽度

5.  (0028,0030)Pixel Spacing  
    图像像素间距,读取Pixel Data的时候不需要,主要用于长度测量。

6.  (0028,0100)Bits Allocated
    一个像素取样点存储时分配到的位数,一般RGB的图像,每一个颜色通道都使用8位,所以一般取值为8。对于灰度图像,如果是256级灰阶,一般就是8位。如果高于256级灰阶,一般就采用16位。

7. (0028,0101)Bits Stored          
        一个像素取样点存储时使用到的位数。比方说示例中CT影像,采用的是4K灰阶,像素值取值范围为0~4095,所以使用到的位数为12位。

8.  (0028,0102)High Bit 
    最高位序号,它定义了存储点在分配的内存中的排列方式,它的值是最后一个bit的序号。如果第一个bit放在0位,那么最后一个bit为Bits Stored -1。

9.  (0028,0103)Pixel Representation 
     如果这个值为0, 这表明是无符号类型,其VR类型应该为US,Unsigned Short. 如果这个值为1, 这表明为有符号类型,其VR类型应该为SS,Signed Short.

10.  (0028,1050)Window Center 和 (0028,1051)        Window Width
       窗宽窗位,不解释

11.  (0028,1052)Rescale Intercept 和 (0028,1053)Rescale Slope
      用于根据像素值计算原始值,比方说,CT可以用于计算HU值。
      比方说:HU = Rescale Slope * X + Rescale Intercept.

12.  (0028,2110)Lossy Image Compression
      当该值为1时,表明该图像曾经经过有损压缩处理。即使后来解压缩后,再用非压缩格式存储和传输,该值也需要保持为1.

13.   (0028,2112)Lossy Image Compression Ratio
      有损压缩压缩率。

对于多帧图像,我们还需要读取Number of Frames (0028,0008)来获取帧数,然后,逐帧读取Pixel Data。

对于彩*图像,我们还需要读取Planar configuration (0028,0006),它定义了各个彩色通道值在Pixel Data中排列的排列方式。
当此值为0的时候,它这样排列的RGBRGBRGBRGBRGB。
当此值为1的时候,它是这样排列的:RRRRR......GGGGG.......BBBBB。 对于多帧图像,它是这样排列的:第一帧的RRR..,第一帧的GGG...,第一帧的BBB...,第二帧的RRR..,第二帧的GGG...,第二帧的BBB...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何解析DICOM文件中的Pixel Data ? 的相关文章

  • 浙江省赛2015 _ L _ ZOJ 3880

    水题 题目 xff1a ZOJ 3880 There is a popular multiplayer online battle arena game called Demacia of the Ancients There are lo
  • 浙江省赛2015 _ J - Convert QWERTY to Dvorak -> ZOJ 3878

    模拟水题 题目 xff1a ZOJ 3878 Edward a poor copy typist is a user of the Dvorak Layout But now he has only a QWERTY Keyboard wi
  • 浙江省赛2015 _ G - Lunch Time -> ZOJ - 3875

    水题 这道题比赛当时没有做出来 原因是 ends xff0c C 43 43 对ends的处理是在缓冲区插入 0 然后刷新 xff0c 而不是空格 xff0c 能输出空格是因为Windows对 0 默认的处理方式是输出一个空格 xff0c
  • 贪心算法

    算法导引 xff1a 问题 xff1a 有1元 5元 10元 100元 500元的硬币 xff08 假设所有面值硬币都足够 xff09 现在要找给顾客620元 xff0c 最少需要多少枚硬币 xff1f xff08 改编自挑战程序设计竞赛
  • 蓝桥杯_PREV-34_矩阵翻硬币

    题目 xff1a 矩阵翻硬币 链接 问题描述 小明先把硬币摆成了一个 n 行 m 列的矩阵 随后 xff0c 小明对每一个硬币分别进行一次 Q 操作 对第x行第y列的硬币进行 Q 操作的定义 xff1a 将所有第 i x 行 xff0c 第
  • ONL(open network linux) from OCP

    https opennetlinux org github xff1a https github com OpenComputeProject OpenNetworkLinux Open Network Linux is a Linux d
  • C++ string数组注意事项

    string xff1a 经实践string数组 xff0c 如string s 10100 xff0c 不能使用s j k 61 这种方法赋值 具体原因未知 求教为什么 xff1f
  • CodeForces - 954C - Matrix Walk

    坑题 题目 xff1a CodeForces 954C 题意 矩阵的每一元素可以用 Ai j 61 y i 1 43 j 来表示 xff0c xff08 就是二维数组用一维指针表示的方法 xff09 xff0c 给你一个路径序列 xff0c
  • Mathjex练习

    u k i 61 a k i k 1 j 61 1 l k j u j i u k i 61
  • 转载:全排列与next_permutation

    转载声明 xff1a 来自https blog csdn net yingyujianmo article details 52046398 感谢作者的讲解 全排列是面试笔试过程中经常遇到的一个问题 对于练习过的同学来说 xff0c 这个问
  • 转载:如何快速转载CSDN中的博客

    转载声明 xff1a 来自https blog csdn net bolu1234 article details 51867099 感谢作者的分享 前言 对于喜欢逛CSDN的人来说 xff0c 看别人的博客确实能够对自己有不小的提高 xf
  • Matlab日记

    Matlab中对clear函数赋值后如何清除变量 xff1f 方法很多 xff0c 一般用 builtin clear b u i l t i n 执 行 内 建 的 函 数 b u i l
  • QT_Windows_命令行下编译,发布

    本文所使用到的资源链接 xff1a 1 所有QT版本镜像下载 2 单文件制作封装工具Engima Virtual Box 环境配置 xff1a 报如下错 xff0c 参考这个 在我这里是因为 xff1a 系统的环境变量的目录中有几个版本不同
  • 容斥原理详解

    翻译 xff1a vici 64 cust 对容斥原理的描述 容斥原理是一种重要的组合数学方法 xff0c 可以让你求解任意大小的集合 xff0c 或者计算复合事件的概率 描述 容斥原理可以描述如下 xff1a 要计算几个集合并集的大小 x
  • 2018ACM/ICPC全国邀请赛(江苏) 总结

    抱憾打铁 整理了一下今天的思路 xff0c 记录如下 开始时我先开的A题 xff0c 我感觉是模拟 xff0c 和lqs讨论了一下 xff0c 感觉会T xff0c 就想其他方法了 开始wjj开的B xff0c 他说感觉是推个公式 xff0
  • HDU 1002 Java大数

    题意很简单输出 a 43 b a 43 b 只不过 a a 和 b b 都很大 xff0c 需要处理大数问题 Java大数解决方法 xff0c 详见代码 xff1a import java io import java util impor
  • broadcom OF-DPA

    https www broadcom com products ethernet connectivity software of dpa http broadcom switch github io of dpa doc html OFD
  • 【论文笔记】Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition...

    Spatial Temporal Graph Convolutional Networks for Skeleton Based Action Recognition 2018 01 28 15 45 13 研究背景和动机 xff1a 行人
  • Windows下GCC编译环境中文乱码解决方案

    转载声明 xff1a 来自https blog csdn net MyLibs article details 27913281 在编译参数中增加以下两条指令 xff1a fexec charset 61 gbk finput charse
  • C++ 读入优化与输出优化 模板

    来自 xff1a https blog csdn net liyizhixl article details 54412459 简介 C 43 43 是一种神奇的编程语言 自然 xff0c 读入和输出也有着许多种形式 xff1a 如 xff

随机推荐

  • RMQ(range minimum/maximum query)即查询区间最大最小值。

    转载来自 https www cnblogs com yyxayz p 4109390 html 对于求区间最大最小值 xff0c 我们自然而然就想到了一个O xff08 n xff09 时间复杂度的算法 xff0c 但是如果询问有很多呢
  • 数论小知识点总结

    m i 61 1 g c d m i 61 d m d m d i 61 1 m g
  • 牛客国庆集训派对Day1(A C E L)

    链接 xff1a https www nowcoder com acm contest 201 question 牛客国庆集训派对Day1 A Tobaku Mokushiroku Kaiji xff08 水题 xff09 C Utawar
  • 牛客国庆集训派对Day2(A F H)

    链接 xff1a https www nowcoder com acm contest 202 question 牛客国庆集训派对Day2 A 矩阵乘法 xff08 分块 xff09 F 平衡二叉树 xff08 数据结构 xff09 H 卡
  • Git learn

    分布式版本控制系统 Git https git scm com 一 初始化 init xff0c 添加 add 到暂存区 stage xff0c 提交 commit 到版本库 master 二 工作区 xff0c 版本库 状态 status
  • 牛客国庆集训派对Day4(A D I J)

    链接 xff1a https www nowcoder com acm contest 204 question 牛客国庆集训派对Day4 A 深度学习 xff08 思维水题 xff09 D 最小生成树 xff08 思维 xff09 I 连
  • Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2) (A B C)

    链接 xff1a http codeforces com contest 1060 Codeforces Round 513 A Phone Numbers xff08 水题 xff09 B Maximum Sum of Digits xf
  • 计算几何 (POJ1127 、 )

    计算几何 1 判断线段是否相交 1 判断线段是否相交 在不需求出交点 xff0c 只需判断两条线段是否相交 xff0c 可以使用 1 快 速 排 斥 实
  • oled显示乱码解决方法

    有时候oled偶尔发生乱码 xff0c xff08 大多数时候正常 xff0c 偶尔乱码 原因分析 xff0c 由于显示oled时使用的i2c连线较长 xff0c 会出现更大的电感 进而出现振铃现象 解决办法 在时钟线和数据线中串联100欧
  • 次短路

    次短路 概念 xff1a 次短路是相对于最短路的 xff0c 简单来说就是第二短的路径 方法 xff1a d i j k s t r
  • 2017icpc沈阳站_M_HDU-6229_(思维)

    链接 xff1a http acm hdu edu cn showproblem php pid 61 6229 题意 xff1a 给一个矩阵上面有一些坏点 xff0c 坏点不能走 xff0c 起点是 0 0
  • CSP认证 201803-3 URL映射

    CSP认证 201803 3 URL映射 链接 xff1a http 118 190 20 162 view page gpid 61 T71 题意 xff1a 从简条件下的 U R L 映 射 URL映射
  • 2017icpc沈阳站_M_HDU-6229_(思维)

    链接 xff1a http acm hdu edu cn showproblem php pid 61 6229 题意 xff1a 给一个矩阵上面有一些坏点 xff0c 坏点不能走 xff0c 起点是 0 0
  • 【Java】程序设计竞赛(Java 方向)

    目录 1 头文件2 输入3 输出4 大数计算5 进制转换6 字符串7 排序8 优先队列9 二分10 Map11 Set 1 头文件 span class token keyword import span java span class t
  • HDU_3089_约瑟夫环快速递推

    HDU 3089 约瑟夫环快速递推 链接 xff1a http acm hdu edu cn showproblem php pid 61 3089 题意 xff1a 约瑟夫环问题 给出 n n n 个人 xff0c 从 1
  • 【ACM】编程笔记

    1 编译错误1 Windows下GCC编译环境中文乱码2 Java中编译错误 编码GBK的不可映射字符 2 JavaJava中 String 和 Integer 的相互转换 3 C C 43 43 C 43 43 中 int 和 strin
  • RSA 算法流程及证明

    RSA 算法流程及证明 需要的前置知识 xff1a 欧拉函数 xff0c 欧拉定理 xff0c 费马小定理 xff0c 同余式乘法性质 xff0c 互质数判断 算法描述算法流程RSA 算法证明RSA 算法 C 43 43 实现参考资料 算法
  • ftp上传不成功,提示 200 227 501 错误

    solve xff1a 检查文件名是不是中文字符 xff0c 若是 xff0c 请换成英文文件名 origin xff1a https www cnblogs com mubin p 3528353 html
  • 【WIN10】添加全局快捷键

    WIN10 添加全局快捷键 打开控制面板 点击管理工具 将 设置好快捷键 的 快捷方式 复制 移动 进 管理工具文件夹 重启 xff0c 一定要重启 xff0c 加张图片告诉你 重启
  • 如何解析DICOM文件中的Pixel Data ?

    DICOM文件可以大致分为两部分 xff1a 一部分 xff1a 与图像相关的元信息 xff0c 包括患者信息 xff0c 检查信息 xff0c 序列信息 xff0c 图像信息等等 另一部分 xff1a 图像的像素数据 在解析DICOM文件