Slicer 5.13
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
Loading...
Searching...
No Matches
qSlicerMultiVolumeExplorerModuleHelper.py
Go to the documentation of this file.
1from __main__ import slicer
2import vtk
3
4
6
7 @staticmethod
8 def RGBtoHex(r, g, b):
9 return f"#{r:02X}{g:02X}{b:02X}"
10
11 @staticmethod
12 def extractFrame(scalarVolumeNode, multiVolumeNode, frameId):
13 # Extract frame from multiVolumeNode and put it into scalarVolumeNode
14 # if no scalar volume given, create one
15 if scalarVolumeNode is None:
16 scalarVolumeNode = slicer.vtkMRMLScalarVolumeNode()
17 scalarVolumeNode.SetScene(slicer.mrmlScene)
18 slicer.mrmlScene.AddNode(scalarVolumeNode)
19
20 # Extract the image data
21 mvImage = multiVolumeNode.GetImageData()
22 extract = vtk.vtkImageExtractComponents()
23 extract.SetInputData(mvImage)
24 extract.SetComponents(frameId)
25 extract.Update()
26
27 ras2ijk = vtk.vtkMatrix4x4()
28 ijk2ras = vtk.vtkMatrix4x4()
29 multiVolumeNode.GetRASToIJKMatrix(ras2ijk)
30 multiVolumeNode.GetIJKToRASMatrix(ijk2ras)
31 scalarVolumeNode.SetRASToIJKMatrix(ras2ijk)
32 scalarVolumeNode.SetIJKToRASMatrix(ijk2ras)
33
34 scalarVolumeNode.SetAndObserveImageData(extract.GetOutput())
35
36 displayNode = scalarVolumeNode.GetDisplayNode()
37 if displayNode is None:
38 displayNode = slicer.mrmlScene.CreateNodeByClass("vtkMRMLScalarVolumeDisplayNode")
39 displayNode.SetReferenceCount(1)
40 displayNode.SetScene(slicer.mrmlScene)
41 slicer.mrmlScene.AddNode(displayNode)
42 displayNode.SetDefaultColorMap()
43 scalarVolumeNode.SetAndObserveDisplayNodeID(displayNode.GetID())
44 return scalarVolumeNode
45
46 @staticmethod
47 def SetBgFgVolumes(bg, fg):
48 appLogic = slicer.app.applicationLogic()
49 selectionNode = appLogic.GetSelectionNode()
50 selectionNode.SetReferenceActiveVolumeID(bg)
51 selectionNode.SetReferenceSecondaryVolumeID(fg)
52 appLogic.PropagateVolumeSelection()
53
54 @staticmethod
55 def SetBgVolume(bg):
56 appLogic = slicer.app.applicationLogic()
57 selectionNode = appLogic.GetSelectionNode()
58 selectionNode.SetReferenceActiveVolumeID(bg)
59 appLogic.PropagateVolumeSelection()
60
61 @staticmethod
63 layoutNodes = slicer.mrmlScene.GetNodesByClass("vtkMRMLLayoutNode")
64 layoutNodes.SetReferenceCount(layoutNodes.GetReferenceCount()-1)
65 layoutNodes.InitTraversal()
66 layoutNode = layoutNodes.GetNextItemAsObject()
67 layoutNode.SetViewArrangement(slicer.vtkMRMLLayoutNode.SlicerLayoutConventionalQuantitativeView)