Dicom 图像--像素值(灰度值)转为CT值

1. 概念:

数据:Dicom数据的原始像素值(pixel value)是没有实际意义的,所以我们常用的是Dicom数据的输出像素,即(CT 值).
原始扫描出的 Dicom数据可能并不是规则的矩形,为了后续分析,构建一个长方体,无效区域填充了-2000,但是边界会有一些噪声,CT值处于有效值最小~-3024之间,但数量很少。并且这样算出的CT值最小值会很小,没有实际意义,所以最终的方案是CT值小于-1024的都置成-1024了(-1024往往是无效的数据,所以分割组织时一般不考虑)

CT值的单位是Hounsfield,简称为Hu,范围是 -1024-3071。用于衡量人体组织对X射线的吸收率,设定水的吸收率为0Hu。

在DICOM图像读取的过程中,我们会发现图像的像素值有可能不是这个范围,通常是0-4096,这个值就是我们常见到的像素值或者灰度值。一般我们所处理的图象是经过量化后的灰度图象,标准的CT 灰度图象为12 位灰度图象。


2. 公式:

将图像像素值(灰度值)转换为CT值。

先读取DICOM影像中的 Tag信息:
(0028|1052):rescale intercept
(0028|1053):rescale slope.

通过公式计算CT值:

Hu = pixel * slope + intercept
其中pixel是第i个像素的灰度值
Hu是第i个像素的CT值


3. 具体情况:

但是,这里会有一个问题
有的图像就已经是CT值(HU值),这时候读出来的Solpe=1,Intercept=0。
在这里插入图片描述
而有的DICOM图像则是像素值,所以需要转化,下面这个DICOM影像的Sople=1, Intercept=-1024。
在这里插入图片描述

这个两个值具体多少可以将dicom的tag打印出来看看。


4. DICOM TAG分类和说明

在这里插入图片描述

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

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

dicom的压缩:
DICOM协议中规定了众多的压缩格式,包括无损压缩和有损压缩。
常见的压缩有:
有损压缩:
1、JPEG-LS Lossy (Near-Lossless) Image Compression
  1.2.840.10008.1.2.4.81
2、JPEG Extended (Process 2 & 4)
  1.2.840.10008.1.2.4.51

无损压缩:
1、JPEG 2000 Image Compression (Lossless Only)
  1.2.840.10008.1.2.4.90]
2、JPEG-LS Lossless Image Compression
  1.2.840.10008.1.2.4.80
3、JPEG Lossless, Non-Hierarchical, First-Order Prediction(Process 14[Selection Value 1])
  1.2.840.10008.1.2.4.70

针对不同设备(CT,MR,US)的DICOM图像特点,采用不同的压缩算法,无损压缩的压缩效率低,压缩率不可调节,一般在3倍压缩率。有损压缩效率高,可调节压缩率,一般采用10倍压缩,既能保证图像清晰度,又有较高的压缩率。

一张CT图像一般行列像素数为515*512个,每个像素占用2个字节存储,则原始CT图像大小为512 *512 *2 / 1024 = 512KB,按一个检查600张图像计算,则有300MB,存储空间占用较大。因此一般采用压缩存储。

正常的:
在这里插入图片描述
被压缩的:
在这里插入图片描述

DICOM(Digital Imaging and Communications in Medicine)文件中,CT通常存储在像素数据( Pixel Data)的部分。测量特定区域的CT通常涉及以下几个步骤: 1. **文件解析**:首先需要读取并解析DICOM文件,可以使用像Python的Pydicom库这样的工具,它提供了处理DICOM图像数据的功能。 ```python import pydicom ds = pydicom.read_file('your_dcm_file.dcm') ``` 2. **获取像素数组**:从`PixelData`字段提取原始的灰度或RGB(对于彩色CT),转换成二维或三维数组。 ```python image_array = ds.pixel_array if image_array.ndim == 2: # 对于单层的灰度图像 elif image_array.ndim == 3: # 对于包含多层的彩色图像,通常最后一维代表颜色通道 ``` 3. **设置ROI(感兴趣区,Region of Interest)**:确定你想要测量的区域,可以是一个矩形、圆形或其他自定义形状。这通常通过索引来完成。 4. **计算平均或插CT**:对ROI内的像素应用平均或线性插等方法来获取该区域的CT。如果是多层图像,可能需要对每一层分别计算。 ```python roi_values = image_array[roi_slice, roi_row:roi_row+height, roi_col:roi_col+width].mean() ``` 这里`roi_slice`, `roi_row`, `roi_col`, `height`, `width`分别是ROI在Z轴、Y轴和X轴上的坐标范围。 5. **保存结果**:最后,你可以将测量的CT保存下来作为你需要的数据。 **相关问题--:** 1. Pydicom库如何安装? 2. 如何处理DICOM文件中的元数据信息? 3. 如果ROI跨越了多层怎么办?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值