vtkImageViewer2:可视化RGB数据

时间:2019-07-17 11:07:04

标签: python vtk

我正在尝试使用python中的vtkImageViewer2可视化RGB图像。该图像是灰度CTA图像(我已使用np.stack将其转换为3通道图像)和其红色通道中的蒙版的组合。我已经将3通道的numpy图片(CTA和掩码)转换为vtkImageData。

使用vtkImageViewer对其进行可视化时,可以正确显示图像(带有红色遮罩的灰度图像)。由于需要缩放和其他交互,因此我想使用vtkImageViewer2。但是,在这种情况下,蒙版显示为白色。我尝试使用lookuptable,但这会更改整个图像,并且灰度图像也会更改为蓝色。

有人做到了吗?

可能需要更改可视化工具,但需要选择CTA体积的切片。

这是代码的一部分:


 #first generate image & mask combination

 image = reader.GetOutput() #vtkImageData()
 mask = maskReader.GetOutput()

 # convert vtkImageData to numpy

 scalars = image.GetPointData().GetScalars()
 self.imgnumpy=vtk_to_numpy(scalars)
 self.rgb_image = np.stack((self.imgnumpy,)*3, axis=-1)

 sc = mask.GetPointData().GetScalars()
 self.numpyMask=vtk_to_numpy(sc)

 # generate image with a red mask

 pos = self.numpyMask==1
 redChannel = self.rgb_image[:,0]

 redChannel[pos] = np.max(self.imgnumpy)

 self.rgb_image[:, 0] = redChannel

 # convert it to vtkImageData

 im = numpy_to_vtk(self.rgb_image)
 image3 = vtk.vtkImageData()
 image3.SetDimensions(self.image.GetDimensions())
 image3.SetSpacing(self.image.GetSpacing())
 image3.SetOrigin(self.image.GetOrigin())
 image3.GetPointData().SetScalars(im)

 # visualize image with red mask

 self.vtkWidget = QVTKRenderWindowInteractor()

 self.axialViewer = vtk.vtkImageViewer2()
 self.axialViewer.SetSliceOrientationToXY()
 self.axialViewer.SetRenderWindow(self.vtkWidget.GetRenderWindow())
 self.interactor = self.vtkWidget.GetRenderWindow().GetInteractor()
 self.axialViewer.SetupInteractor(self.interactor)

 maxIntensity = np.max(self.imgnumpy)
 minIntensity = np.min(self.imgnumpy)

 self.axialViewer.SetColorLevel((maxIntensity + minIntensity)*0.5)
 self.axialViewer.SetColorWindow(maxIntensity - minIntensity)
 self.axialViewer.SetSlice(0)
 self.axialViewer.Render()


谢谢

0 个答案:

没有答案