ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

1.4 DICOM图像CT值计算

2021-11-07 17:32:43  阅读:248  来源: 互联网

标签:1.4 字节 DICOM 0028 像素 图像 bit CT


  上一篇文章分析了如何解析DICOM图像。在此基础上,本文章将讲解如何计算CT值。

主要流程如图所示:
请添加图片描述
  不同设备产生的DICOM图像像素格式不同,比如CT图像保存的是Hu值,超声(US)图像保存的是RGB值。
  以最常见的CT图像举例:
  CT值的单位是Hounsfield,简称为Hu,范围是 -1024-3071,数据范围是4096。用于衡量人体组织对X射线的吸收率,设定水的吸收率为0Hu。
  CT值越高,图像显示越白,比如骨头CT值高,成亮白色,空气CT值低,成黑色。脊柱颜色亮白,肺中空气黑色。
在这里插入图片描述
  Dicom图像中PixelData存储的值并不是CT值,CT值需要计算才能获得。
  CT图像一个像素一般占两个字节,其中使用前12个bit存储像素值,即能表示的数据范围在2^12=4096,覆盖了CT值范围。一般医院影像科看CT图像都是在医用显示器上看,能达到12bit灰阶,所以可以完整的显示所有的像素。一般这种显示器价格在数万元。
  而普通的显示器是8bit灰阶,显示范围在0-255,所以只能显示部分像素值,需要通过调整窗宽窗位来显示不同的像素。
  网上很多博客描述CT值计算,需要读取两个DICOM Tag信息,(0028|1052):rescale intercept和(0028|1053):rescale slope.
  然后通过公式:
    Hu = pixel * slope + intercept
  如果通过DCMTK等框架来实现是没有问题,框架已经将PixelData中的像素值计算出来,可以直接用来计算CT值。
  但如果自己实现DICOM解析引擎,则PixelData中的像素值需要进行一些转换才能使用。
CT图像中和CT值计算的Tag:
(0028,0002) Samples per Pixel
每一个像素的取样数,一般来说,CT,MR,DR等灰度图像都是1,而彩超等彩**图像都是3,分别表示R, G, B三个颜色通道。
(0028,0100)Bits Allocated
  一个像素的像素值占用了多少位bit,一般是两个字节,16bit
(0028,0101)Bits Stored
  一个像素的像素值使用了多少位bit,一般是12bit
(0028,0102)High Bit
   最高位序号,它定义了存储点在分配的内存中的排列方式,它的值是最后一个bit的序号。如果第一个bit放在0位,那么最后一个bit为Bits Stored -1
(0028,0103)Pixel Representation
  像素值的数据表示形式,0表示unsigned integer. 无符号整数,直接保存像素值本身。1表示二补数,保存的是像素值的二补数,其实就是有符号整数,此时像素值可正可负。
(0028,1052)Rescale Intercept
  缩放截距
  CT图像的Hu值有正值和负值,而PixelData中数据通常存储为无符号整数。使用12bit可以存储0-4095的正值,存储同样范围的包含负值和正值需要占用更多的字节。为了可以通过PixelData计算出负值Hu值,可以通过数学公式中的斜率和截距来计算。因此,CT DICOM文件通常具有负截距。线性缩放也适用于这样的情况,一个像素可能有一个大范围的值,而存储的值尽可能少的比特,同时避免量化错误。
(0028,1053Rescale Slope
  缩放斜率

通过如下方式方式获取CT值:

  1. 通过(0002,0010) Transfer Syntax UID判断图像是否压缩格式,如果压缩调用享用的解压缩算法解压
  2. 通过(0002,0010) Transfer Syntax UID判断图像是大端还是小端,先进行字节级别的移位。如果是小端则前后字节整体进行互换,字节内bit顺序不变。如果是大端则不变。
  3. 通过(0028,0100)Bits Allocated,(0028,0101)Bits Stored,(0028,0102)High Bit对数据进行操作。
    比如一般Bits Allocated为16,Bits Stored为12,High Bit为11,表示一个像素占用两个字节,其中使用了前12个字节。则Pixel = Pixel && 0x0FFF。
  4. 通过(0028|1052)rescale intercept和(0028|1053)rescale slope计算CT值Hu = pixel * slope + intercept
      以上步骤计算出 -1024-3071范围内的CT值,写篇文章会讲解如何从12位bit CT值转换为8bit RGB值

标签:1.4,字节,DICOM,0028,像素,图像,bit,CT
来源: https://blog.csdn.net/tianma2012/article/details/121190291

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有