1 from Slicer import slicer
2
3
5
7
8 self._helper = mainGUIClass
9
10 - def ApplyFrangiVesselness(self,inVolumeNode,outVolumeNode,sigmaMin,sigmaMax,numberOfSigmaSteps,alpha,beta,gamma):
11
12 self._helper.debug("Starting execution of Frangi...")
13
14 if not inVolumeNode or not outVolumeNode:
15 slicer.Application.ErrorMessage("No input volume or no output volume found. Aborting Frangi..\n")
16 return
17 else:
18
19 image = inVolumeNode.GetImageData()
20
21 v = slicer.vtkvmtkVesselnessMeasureImageFilter()
22 v.SetInput(image)
23 v.SetSigmaMin(sigmaMin)
24 v.SetSigmaMax(sigmaMax)
25 v.SetNumberOfSigmaSteps(numberOfSigmaSteps)
26 v.SetAlpha(alpha)
27 v.SetBeta(beta)
28 v.SetGamma(gamma)
29 v.Update()
30
31 matrix = slicer.vtkMatrix4x4()
32 inVolumeNode.GetIJKToRASMatrix(matrix)
33
34 outVolumeData = slicer.vtkImageData()
35 outVolumeData.DeepCopy(v.GetOutput())
36 outVolumeData.Update()
37
38 outVolumeNode.SetAndObserveImageData(outVolumeData)
39 outVolumeNode.SetIJKToRASMatrix(matrix)
40
41 - def ApplySatoVesselness(self,inVolumeNode,outVolumeNode,sigmaMin,sigmaMax,numberOfSigmaSteps,alpha,alpha2):
42
43 self._helper.debug("Starting execution of Sato...")
44
45 if not inVolumeNode or not outVolumeNode:
46 slicer.Application.ErrorMessage("No input volume or no output volume found. Aborting Sato..\n")
47 return
48 else:
49
50 image = inVolumeNode.GetImageData()
51
52 v = slicer.vtkvmtkSatoVesselnessMeasureImageFilter()
53 v.SetInput(image)
54 v.SetSigmaMin(sigmaMin)
55 v.SetSigmaMax(sigmaMax)
56 v.SetNumberOfSigmaSteps(numberOfSigmaSteps)
57 v.SetAlpha1(alpha)
58 v.SetAlpha2(alpha2)
59 v.Update()
60
61 matrix = slicer.vtkMatrix4x4()
62 inVolumeNode.GetIJKToRASMatrix(matrix)
63
64 outVolumeData = slicer.vtkImageData()
65 outVolumeData.DeepCopy(v.GetOutput())
66 outVolumeData.Update()
67
68 outVolumeNode.SetAndObserveImageData(outVolumeData)
69 outVolumeNode.SetIJKToRASMatrix(matrix)
70
71
72 - def ApplyVED(self,inVolumeNode,outVolumeNode,sigmaMin,sigmaMax,numberOfSigmaSteps,alpha,beta,gamma,c,timestep,epsilon,wstrength,sensitivity,numberOfIterations,numberOfDiffusionSubIterations):
73
74 self._helper.debug("Starting execution of VED...")
75
76 if not inVolumeNode or not outVolumeNode:
77 slicer.Application.ErrorMessage("No input volume or no output volume found. Aborting VED..\n")
78 return
79 else:
80
81 image = inVolumeNode.GetImageData()
82
83 v = slicer.vtkvmtkVesselEnhancingDiffusionImageFilter()
84 v.SetInput(image)
85 v.SetSigmaMin(sigmaMin)
86 v.SetSigmaMax(sigmaMax)
87 v.SetNumberOfSigmaSteps(numberOfSigmaSteps)
88 v.SetAlpha(alpha)
89 v.SetBeta(beta)
90 v.SetGamma(gamma)
91 v.SetC(c)
92 v.SetTimeStep(timestep)
93 v.SetEpsilon(epsilon)
94 v.SetWStrength(wstrength)
95 v.SetSensitivity(sensitivity)
96 v.SetNumberOfIterations(numberOfIterations)
97 v.SetNumberOfDiffusionSubIterations(numberOfDiffusionSubIterations)
98 v.Update()
99
100 matrix = slicer.vtkMatrix4x4()
101 inVolumeNode.GetIJKToRASMatrix(matrix)
102
103 outVolumeData = slicer.vtkImageData()
104 outVolumeData.DeepCopy(v.GetOutput())
105 outVolumeData.Update()
106
107 outVolumeNode.SetAndObserveImageData(outVolumeData)
108 outVolumeNode.SetIJKToRASMatrix(matrix)
109