我正在尝试使用ITK读取图像并使用VTK显示。
但是有一个问题一直困扰着我。
我使用类itkGDCMImageIO和itkImageSeriesReader读取图像。
阅读后,我可以做两件事:
1。 我可以使用itkImageToVTKImageFilter将ITK图像转换为vtkImageData,并使用vtkImageReslicer获取所有三个轴。然后,我使用类vtkImageMapper,vtkActor2D,vtkRenderer和QVTKWidget来显示图像。
在这种情况下,当我显示图像时,颜色存在一些问题。其中一些非常明亮,另一些则很暗,几乎看不到它们。
2。 第二种情况是注册管道。在这里,我像以前一样阅读图像,然后使用ITK软件指南章节中关于注册的类。然后我重新采样图像并使用itkImageSeriesWriter。
问题就出现了。将图像写入文件后,我将此新图像与我在XMedcon软件中用作输入的图像进行比较。如果我写的图像在我的软件中显得过于明亮,那么当我在XMedcon中比较它们时,没有任何变化。否则,如果我的软件中的图像太暗,则看起来在XMedcon中显得格格不入。
我注意到,在比较两个图像(原始图像和新图像)时,在两种情况下,模态,像素尺寸和glmax都会发生变化。
我认为问题出在glmax上,因为较暗的图像会发生重大变化。
我真的不知道该怎么办。这与颜色级别/窗口有关吗?最奇怪的是所有图像非常相似,标签相同,只有部分图像在显示/写入时显示错误。
答案 0 :(得分:4)
我不熟悉VTK / ITK的具体细节,但听起来我觉得问题比这更普遍。医学图像具有高动态范围,并且如果窗口没有设置到某个适当的范围,图像通常会显得非常暗或非常明亮。 DICOM标签窗口中心(0028,1050)和窗口宽度(0028,1051)将包括由模态选择的一些默认窗口设置。通常这些值是合理的,但并非总是如此。有关如何缩放原始图像像素以进行显示的详细信息,请参阅DICOM standard(11_03pu.pdf是文件名)部分C.11.2.1.2的第3部分。一般的想法是,您需要对图像应用线性缩放以获得适当的像素值以供显示。
答案 1 :(得分:1)
您使用哪种像素类型?在大多数情况下,使用ITK时使用浮点类型更简单,但原始医学图像通常很短,所以这可能是你的问题。
您还应该在每个步骤之后将图像写入磁盘(例如,以MHD格式),并使用已知可正常工作的查看器(例如vv)(http://www.creatis.insa-)进行检查。 lyon.fr/rio/vv)。您也可以在此处发布它们以及您的代码以供进一步审核。
祝你好运!答案 2 :(得分:0)
您所描述的第一个问题:
- 我可以使用itkImageToVTKImageFilter将ITK图像转换为vtkImageData,并使用vtkImageReslicer获取所有三个轴。然后,我使用类vtkImageMapper,vtkActor2D,vtkRenderer和QVTKWidget来显示图像。
醇>在这种情况下,当我显示图像时,颜色存在一些问题。其中一些非常明亮,另一些则很暗,几乎看不到它们。
我建议如下:检查VTK中的窗口/级别,它们可能不适合您的图像。如果他们是腹部断层扫描窗口= 350水平50应该是一个很好的颜色水平。