DCMTK C ++:如何从dicom文件中获取数据像素

时间:2016-07-08 03:22:58

标签: c++ dicom dcmtk

我将DCMTK用于C ++项目,并希望从dicom文件中检索像素。 我用了一个基本的例子:

$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
$key = array_search('green', $array); // $key = 2;
echo $key;

在"对像素数据执行有用的操作"部分,我如何使用pixelData变量来获取像素

1 个答案:

答案 0 :(得分:3)

首先:您已经像素数据作为无符号字符数组。例如,您可以将它们传输到8位单色位图并在屏幕上显示它们。构造位图所需的高度和宽度可以从DicomImage对象

获得

但是,它在很大程度上取决于你的考虑因素和#34;有用的东西" getOutputData()是否是您选择的方法。这是因为getOutputData()实际上是一种渲染方法。假设您有一个典型的CT,MR或CR图像,灰度范围已被重新调整为8位。

您可能更喜欢在完整灰度范围内提取像素数据并滚动自己的渲染和处理方法。在这种情况下,我建议你使用getInterData(),它返回内部存储的具有完整灰度范围的像素数据。模态LUT已经应用于中间数据,因此得到的是值数组的封装(类DiPixel),每个值对设备测量的灰度值进行编码(例如,在CT的情况下为Hounsfield单位)。

DiPixel将这些灰度作为空指针返回。要正确处理这些值,您需要确定它们的表示(例如Uint8,Sint16,...)。

使用这种方法显然需要付出更多努力,但对于任何超出渲染像素数据的方法,它都是保留原始灰度值的唯一方法