首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hounsfield单位可以转移吗?

Hounsfield单位可以转移吗?
EN

Stack Overflow用户
提问于 2019-06-18 18:55:40
回答 2查看 828关注 0票数 4

我正在做一些来自LIDC数据库的胸部扫描,我正在尝试应用迭代(最优)阈值来提取肺部区域。许多研究人员使用的初始阈值为(或-500左右),尽管他们使用的是相同的数据库。我引用

每次肺CT扫描的HU值为+2000 ~-2000 HU。肺区是一个低密度区域,范围从-1000到-450 to,称为非身体区。

为此,我正在使用Matlab,我的扫描有不同的范围,问题是,它们中没有一个肺面积在(-1000到-450 the )范围内(或者至少据我所知),所有的区域范围都是从0到以上,除了边缘区域(扫描机产生的区域)。

如何使这些扫描有正常范围(移动hounsfield单位或其他东西),使我能够正常工作在一个肺窗口(宽度为1500,中心为-500)?

扫描示例:下面是一个Dicom片段,其属性如下:

  • 寡妇中心:-600
  • 窗口宽度: 1600
  • 撤销:-1024
  • 最小值:-1024
  • 最大值:+4095

我使用函数dicomreadVolume读取扫描:

代码语言:javascript
复制
% Read the scan volume: (the result will be in 4D )
[V,s,d] = dicomreadVolume(fullfile('scan folder...'));

% Convert into 3D:
V2 = squeeze(V);

% display the slice number 83
imtool(V2(:, :, 83));

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-19 11:38:11

从直方图来看,函数dicomreadVolume()似乎没有考虑渐升斜率和渐强拦截。我假设图像的像素表示(0028,0103)是0 (=无符号整数)。

所以实际上,你不是在Matlab中处理HU,而是处理原始像素值。通过对每个像素进行线性变换,实现了对HU的变换。线性变换由Rescale Intercept (0028,1052)和Rescale斜率(0028,1053)定义:

代码语言:javascript
复制
<pixel value in HU> := RescaleIntercept + RescaleSlope * <untransformed pixel value> 

我强烈建议这样做,而不是用从某一特定图像中获得的随机值来改变范围。这是因为HU在扫描的所有图像上都是有效的。

票数 3
EN

Stack Overflow用户

发布于 2021-01-14 11:38:50

除了kritzel_sw的答案之外,您还可以使用dicominfo函数访问MATLAB中的任意渐升斜率和渐强截距,该函数提供了对大多数dicom标记的访问:

代码语言:javascript
复制
files = fullfile('scan folder...')

% Read all meta information (dicom tags)
metaInfo = dicominfo(files{1});

% Read the scan volume: (the result will be in 4D )
[V,s,d] = dicomreadVolume();
V = metaInfo.RescaleIntercept + metaInfo.RescaleSlope * squeeze(V); 

这将正确地恢复像素值。对于一致的dicom堆栈,rescale截取和斜率应该是相同的,但是如果您想确保可以遍历所有的切片(文件)并比较这些值,或者将它们应用于卷V的对应z片。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56655398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档