Package VMTKVesselEnhancement :: Module SlicerVMTKVesselEnhancementSatoGUI
[hide private]
[frames] | no frames]

Source Code for Module VMTKVesselEnhancement.SlicerVMTKVesselEnhancementSatoGUI

  1  from SlicerVMTKAdvancedPageSkeleton import SlicerVMTKAdvancedPageSkeleton 
  2  from Slicer import slicer 
  3   
  4  vtkKWPushButton_InvokedEvent = 10000 
  5  vtkKWSpinBox_ValueChangedEvent = 10000 
  6  vtkKWThumbWheel_ValueChangedEvent = 10001 
  7   
8 -class SlicerVMTKVesselEnhancementSatoGUI(SlicerVMTKAdvancedPageSkeleton):
9
10 - def __init__(self,parentFrame,parentClass):
11 SlicerVMTKAdvancedPageSkeleton.__init__(self,parentFrame,parentClass) 12 13 self._spinboxFrame = slicer.vtkKWFrameWithLabel() 14 self._thrFrame = slicer.vtkKWFrameWithLabel() 15 16 self._sigmaMin = slicer.vtkKWSpinBoxWithLabel() 17 self._sigmaMax = slicer.vtkKWSpinBoxWithLabel() 18 self._numberOfSigmaSteps = slicer.vtkKWThumbWheel() 19 self._alpha = slicer.vtkKWSpinBoxWithLabel() 20 self._alpha2 = slicer.vtkKWSpinBoxWithLabel() 21 22 self._startButton = slicer.vtkKWPushButton() 23 self._resetButton = slicer.vtkKWPushButton()
24
25 - def Destructor(self):
27 28
29 - def BuildGUI(self):
30 SlicerVMTKAdvancedPageSkeleton.BuildGUI(self) 31 32 33 34 self._spinboxFrame.SetParent(self._parentFrame) 35 self._spinboxFrame.Create() 36 self._spinboxFrame.AllowFrameToCollapseOff() 37 self._spinboxFrame.SetLabelText("Tubular structure detection:") 38 self._spinboxFrame.SetReliefToSunken() 39 40 slicer.TkCall("pack %s -side top -expand y -padx 2 -pady 10 -in %s" % (self._spinboxFrame.GetWidgetName(), self._parentFrame.GetWidgetName())) 41 42 self._numberOfSigmaSteps.SetParent(self._spinboxFrame.GetFrame()) 43 self._numberOfSigmaSteps.Create() 44 self._numberOfSigmaSteps.SetRange(0.0,2000.0) 45 self._numberOfSigmaSteps.ClampMinimumValueOn() 46 self._numberOfSigmaSteps.ClampMaximumValueOn() 47 self._numberOfSigmaSteps.ClampResolutionOn() 48 self._numberOfSigmaSteps.SetThumbWheelHeight(10) 49 self._numberOfSigmaSteps.SetResolution(1.0) 50 self._numberOfSigmaSteps.SetLength(150) 51 self._numberOfSigmaSteps.DisplayEntryOn() 52 self._numberOfSigmaSteps.DisplayLabelOn() 53 self._numberOfSigmaSteps.GetLabel().SetText("Steps between max. and min. Diameter") 54 55 56 slicer.TkCall("pack %s -side top -expand y -padx 2 -pady 10" % self._numberOfSigmaSteps.GetWidgetName()) 57 58 self._sigmaMin.SetParent(self._spinboxFrame.GetFrame()) 59 self._sigmaMin.Create() 60 self._sigmaMin.GetWidget().SetRange(0.0,100.0) 61 self._sigmaMin.GetWidget().SetIncrement(0.1) 62 self._sigmaMin.GetWidget().SetWidth(5) 63 self._sigmaMin.GetWidget().SetValueFormat("%.1f") 64 self._sigmaMin.SetLabelText("Min. Diameter of the Tube:") 65 self._sigmaMin.SetBalloonHelpString("Select the minimal diameter of tubes to enhance in physical units (e.g. mm).") 66 67 slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._sigmaMin.GetWidgetName()) 68 69 self._sigmaMax.SetParent(self._spinboxFrame.GetFrame()) 70 self._sigmaMax.Create() 71 self._sigmaMax.GetWidget().SetRange(0.0,100.0) 72 self._sigmaMax.GetWidget().SetIncrement(0.1) 73 self._sigmaMax.GetWidget().SetWidth(5) 74 self._sigmaMax.GetWidget().SetValueFormat("%.1f") 75 self._sigmaMax.SetLabelText("Max. Diameter of the Tube:") 76 self._sigmaMax.SetBalloonHelpString("Select the maximal diameter of tubes to enhance in physical units (e.g. mm).") 77 78 slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._sigmaMax.GetWidgetName()) 79 80 self._thrFrame.SetParent(self._parentFrame) 81 self._thrFrame.Create() 82 self._thrFrame.AllowFrameToCollapseOff() 83 self._thrFrame.SetLabelText("Sensitivity Thresholds:") 84 self._thrFrame.SetReliefToSunken() 85 86 slicer.TkCall("pack %s -side top -expand y -padx 2 -pady 10 -in %s" % (self._thrFrame.GetWidgetName(), self._parentFrame.GetWidgetName())) 87 88 89 self._alpha.SetParent(self._thrFrame.GetFrame()) 90 self._alpha.Create() 91 self._alpha.GetWidget().SetRange(0.0,100.0) 92 self._alpha.GetWidget().SetIncrement(0.1) 93 self._alpha.GetWidget().SetWidth(5) 94 self._alpha.GetWidget().SetValueFormat("%.1f") 95 self._alpha.SetLabelText("Plate-like and line-like structures:") 96 self._alpha.SetBalloonHelpString("This controls the sensitivity for plate-like and line-like structures.") 97 98 slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._alpha.GetWidgetName()) 99 100 101 self._alpha2.SetParent(self._thrFrame.GetFrame()) 102 self._alpha2.Create() 103 self._alpha2.GetWidget().SetRange(0.0,100.0) 104 self._alpha2.GetWidget().SetIncrement(0.1) 105 self._alpha2.GetWidget().SetWidth(5) 106 self._alpha2.GetWidget().SetValueFormat("%.1f") 107 self._alpha2.SetLabelText("Blob-like structures:") 108 self._alpha2.SetBalloonHelpString("This controls the sensitivity for blob-like structures.") 109 110 slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._alpha2.GetWidgetName()) 111 112 113 114 self._startButton.SetParent(self._parentFrame) 115 self._startButton.Create() 116 self._startButton.SetEnabled(1) 117 self._startButton.SetActiveBackgroundColor(0.9,0.9,0.9) 118 self._startButton.SetReliefToRaised() 119 self._startButton.SetBackgroundColor(0.9,0.9,0.9) 120 self._startButton.SetText("Start!") 121 self._startButton.SetBalloonHelpString("Click to start") 122 123 self._resetButton.SetParent(self._parentFrame) 124 self._resetButton.Create() 125 self._resetButton.SetEnabled(1) 126 self._resetButton.SetActiveBackgroundColor(0.9,0.9,0.9) 127 self._resetButton.SetReliefToRaised() 128 self._resetButton.SetBackgroundColor(0.9,0.9,0.9) 129 self._resetButton.SetText("Cancel") 130 self._resetButton.SetBalloonHelpString("Click to reset") 131 132 133 134 slicer.TkCall("pack %s -side top -anchor e -padx 2 -pady 2" % self._startButton.GetWidgetName()) 135 slicer.TkCall("pack %s -side top -anchor e -padx 2 -pady 2" % self._resetButton.GetWidgetName()) 136 137 138 self.Reset()
139 140
141 - def AddGUIObservers(self):
142 SlicerVMTKAdvancedPageSkeleton.AddGUIObservers(self) 143 144 self._numberOfSigmaStepsTag = self._parentClass.AddObserverByNumber(self._numberOfSigmaSteps,vtkKWThumbWheel_ValueChangedEvent) 145 self._sigmaMinTag = self._parentClass.AddObserverByNumber(self._sigmaMin.GetWidget(),vtkKWSpinBox_ValueChangedEvent) 146 self._sigmaMaxTag = self._parentClass.AddObserverByNumber(self._sigmaMax.GetWidget(),vtkKWSpinBox_ValueChangedEvent) 147 self._alphaTag = self._parentClass.AddObserverByNumber(self._alpha.GetWidget(),vtkKWSpinBox_ValueChangedEvent) 148 self._alpha2Tag = self._parentClass.AddObserverByNumber(self._alpha2.GetWidget(),vtkKWSpinBox_ValueChangedEvent) 149 150 151 self._startButtonTag = self._parentClass.AddObserverByNumber(self._startButton,vtkKWPushButton_InvokedEvent) 152 self._resetButtonTag = self._parentClass.AddObserverByNumber(self._resetButton,vtkKWPushButton_InvokedEvent)
153
154 - def RemoveGUIObservers(self):
155 SlicerVMTKAdvancedPageSkeleton.RemoveGUIObservers(self) 156 157 158 self._parentClass.RemoveObserver(self._startButtonTag) 159 self._parentClass.RemoveObserver(self._resetButtonTag)
160
161 - def ProcessGUIEvents(self,caller,event):
162 SlicerVMTKAdvancedPageSkeleton.ProcessGUIEvents(self,caller,event) 163 164 if caller == self._numberOfSigmaSteps and event == vtkKWThumbWheel_ValueChangedEvent: 165 self._parentClass.UpdateMRML() 166 elif caller == self._sigmaMin.GetWidget() and event == vtkKWSpinBox_ValueChangedEvent: 167 self._parentClass.UpdateMRML() 168 elif caller == self._sigmaMax.GetWidget() and event == vtkKWSpinBox_ValueChangedEvent: 169 self._parentClass.UpdateMRML() 170 elif caller == self._alpha.GetWidget() and event == vtkKWSpinBox_ValueChangedEvent: 171 self._parentClass.UpdateMRML() 172 elif caller == self._alpha2.GetWidget() and event == vtkKWSpinBox_ValueChangedEvent: 173 self._parentClass.UpdateMRML() 174 175 176 elif caller == self._startButton and event == vtkKWPushButton_InvokedEvent: 177 self.Execute() 178 self._parentClass.UpdateMRML() 179 elif caller == self._resetButton and event == vtkKWPushButton_InvokedEvent: 180 self.Reset() 181 self._parentClass.UpdateMRML()
182 183
184 - def UpdateMRML(self):
185 SlicerVMTKAdvancedPageSkeleton.UpdateMRML(self) 186 187 node = self._parentClass.GetScriptedModuleNode() 188 189 if node: 190 191 node.SetParameter('SATO_numberOfSigmaSteps',self._numberOfSigmaSteps.GetValue()) 192 node.SetParameter('SATO_sigmaMin',self._sigmaMin.GetWidget().GetValue()) 193 node.SetParameter('SATO_sigmaMax',self._sigmaMax.GetWidget().GetValue()) 194 node.SetParameter('SATO_alpha',self._alpha.GetWidget().GetValue()) 195 node.SetParameter('SATO_alpha2',self._alpha2.GetWidget().GetValue())
196 197
198 - def UpdateGUI(self):
199 SlicerVMTKAdvancedPageSkeleton.UpdateGUI(self) 200 201 node = self._parentClass.GetScriptedModuleNode() 202 203 if node: 204 205 if node.GetParameter('SATO_numberOfSigmaSteps'): 206 self._numberOfSigmaSteps.SetValue(node.GetParameter('SATO_numberOfSigmaSteps')) 207 208 if node.GetParameter('SATO_sigmaMin'): 209 self._sigmaMin.GetWidget().SetValue(node.GetParameter('SATO_sigmaMin')) 210 211 if node.GetParameter('SATO_sigmaMax'): 212 self._sigmaMax.GetWidget().SetValue(node.GetParameter('SATO_sigmaMax')) 213 214 if node.GetParameter('SATO_alpha'): 215 self._alpha.GetWidget().SetValue(node.GetParameter('SATO_alpha')) 216 217 if node.GetParameter('SATO_alpha2'): 218 self._alpha2.GetWidget().SetValue(node.GetParameter('SATO_alpha2'))
219
220 - def Execute(self):
221 SlicerVMTKAdvancedPageSkeleton.Execute(self) 222 223 inVolume = self._parentClass._inVolumeSelector.GetSelected() 224 outVolume = self._parentClass._outVolumeSelector.GetSelected() 225 sigmaMin = float(self._sigmaMin.GetWidget().GetValue()) 226 sigmaMax = float(self._sigmaMax.GetWidget().GetValue()) 227 numberOfSigmaSteps = int(self._numberOfSigmaSteps.GetValue()) 228 alpha = float(self._alpha.GetWidget().GetValue()) 229 alpha2 = float(self._alpha2.GetWidget().GetValue()) 230 231 232 self._parentClass._logic.ApplySatoVesselness(inVolume,outVolume,sigmaMin,sigmaMax,numberOfSigmaSteps,alpha,alpha2)
233 234 235
236 - def Reset(self):
237 SlicerVMTKAdvancedPageSkeleton.Reset(self) 238 239 self._numberOfSigmaSteps.SetValue(10) 240 self._sigmaMin.GetWidget().SetValue(0.2) 241 self._sigmaMax.GetWidget().SetValue(2.0) 242 self._alpha.GetWidget().SetValue(0.5) 243 self._alpha2.GetWidget().SetValue(2.0)
244