正确显示DICOM图像ITK-VTK(图像太暗)

时间:2015-06-09 11:57:23

标签: c++ vtk dicom itk medical

我使用itk :: ImageSeriesReader和itk :: GDCMImageIO读取了dicom图像,然后在阅读后用itk :: FlipImageFilter翻转图像(以获得图像的正确方向)并使用itk将itkImageData转换为vtkImageData :: ImageToVTKImageFilter 。我在QVTKWidget2中使用vtkResliceImageViewer使用VTK可视化图像。 我设置:

 (vtkResliceImageViewer)m_imageViewer[i]->SetColorWindow(windowWidthTAGvalue[0028|1051]);
 (vtkResliceImageViewer)m_imageViewer[i]->SetColorLevel(windowCenterTAGvalue[0028|1050]);

我设置了以下blac& white LookUpTable:

   vtkLookupTable* lutbw = vtkLookupTable::New();
    lutbw->SetTableRange(0,1000);
    lutbw->SetSaturationRange(0,0);
    lutbw->SetHueRange(0,0);
    lutbw->SetValueRange(0,1);
    lutbw->Build();

显示在我的软件中的图像与显示在其他软件中的相同图像相比要暗得多,我无法获得与其他DICOM观众相同的效果

我的软件图像是正确的当我在本例中使用其他一些LookUpTable时也会留下其他软件图像Flow我无法获得相同的效果(第二行图像)我右边的图像比其他图像更暗。

ImageCompare

我错过了为什么我的图像更暗我能做什么?我对dicom进行了大量的研究,ikt / vtk无法找到任何有用的解决方案。

2 个答案:

答案 0 :(得分:2)

请检查Rescale Slope(0028,1053)和Rescale Intercept(0028,1052)的值,并在应用Window级别之前应用Modality LUT变换。 您的数据集可能具有VOI LUT函数(0028,1056)属性值“SIGMOID”而不是“LINEAR”。

答案 1 :(得分:2)

我从你的一个DICOM文件(brain_009.dcm)中提取了图像数据,然后查看了图像数据的直方图。看起来,无论是解释数据是有符号还是无符号,图像中存储的最小值为0,最大值为960。此外,窗口宽度(0028:1051)的值无效“0”,您无法使用它来显示图像。
因此,您的默认显示可以将窗口宽度设置为960,将窗口中心设置为窗口宽度的一半加上最小值。