我试图在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()
谢谢你
目前没有回答
相关问题 更多 >
编程相关推荐