vtkImageViewer2:可视化RGB d

2024-10-04 15:24:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在python中使用vtkImageViewer2可视化RGB图像。该图像是一个灰度CTA图像的组合(我已经转换为3通道图像使用np.堆栈)红色通道里有个面具。我已将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()


谢谢你


Tags: to图像imageselfnumpy可视化npmask

热门问题