1 description "Basic segmentation and filtering of an image"
2 author "jpr@creatis.insa-lyon.fr"
15 include vtk/boxes/bbLoadHola
17 # uncomment next lines to have a file selector
18 #new FileSelector openFileDialog
19 #new ImageReader reader
20 # connect openFileDialog.Out reader.In
22 #Get image dimensions, ...
23 new ImageProperties mc
24 connect reader.Out mc.In
26 #Get number of planes (Z)
27 new GetVectorIntElement gveZ
28 connect mc.Size gveZ.In
31 #Compute the number of the 'middle' slice on Z axis
33 connect gveZ.Out div2.In1
36 #---------------------------------------------------------------------
39 set slider.Title "Slice"
41 #Slider size is the number of planes
42 connect gveZ.Out slider.Max
43 #initial slice is the middle one
44 connect div2.Out slider.In
45 set slider.ChangeResolution 1
47 new Slider lowerThresholdSlider
48 set lowerThresholdSlider.Title "LowerThreshold"
49 set lowerThresholdSlider.Max 50
50 set lowerThresholdSlider.In 20
51 set lowerThresholdSlider.ChangeResolution 1
53 new Slider upperThresholdSlider
54 set upperThresholdSlider.Title "UpperThreshold"
55 set upperThresholdSlider.Max 50
56 set upperThresholdSlider.In 500
57 set upperThresholdSlider.ChangeResolution 1
59 new Slider smoothSlider
60 set smoothSlider.Title "Smooth"
61 set smoothSlider.Max 10
63 set smoothSlider.ChangeResolution 1
65 new CommandButton refresh
66 set refresh.Label "Refresh"
67 set refresh.In "exec isoextractorthreshold;exec isoextractorsmooth;exec mainSplit"
69 new MultipleInputs refreshimages
70 //connect slider.BoxChange refreshimages.In1
71 connect upperThresholdSlider.BoxChange refreshimages.In2
72 connect lowerThresholdSlider.BoxChange refreshimages.In3
73 connect smoothSlider.BoxChange refreshimages.In4
75 #---------------------------------------------------------------------
77 new Viewer2D viewer2DImageOriginal
78 connect reader.Out viewer2DImageOriginal.In
79 connect slider.Out viewer2DImageOriginal.Slice
80 connect slider.BoxChange viewer2DImageOriginal.BoxExecute
82 #---------------------------------------------------------------------
84 new BinaryThresholdImageFilter threshold
85 connect upperThresholdSlider.Out threshold.UpperThreshold
86 connect lowerThresholdSlider.Out threshold.LowerThreshold
87 set threshold.InsideValue 255
88 set threshold.OutsideValue 0
89 connect reader.Out threshold.In
91 new Viewer2D viewer2DImageSegmented
92 connect threshold.Out viewer2DImageSegmented.In
93 connect slider.Out viewer2DImageSegmented.Slice
94 // connect slider.BoxChange viewer2DImageSegmented.BoxExecute
95 connect refreshimages.Out viewer2DImageSegmented.BoxExecute
97 #---------------------------------------------------------------------
99 new ImageGaussianSmooth smooth
100 connect threshold.Out smooth.In
101 connect smoothSlider.Out smooth.StdDevX
102 connect smoothSlider.Out smooth.StdDevY
103 connect smoothSlider.Out smooth.StdDevZ
106 new Viewer2D viewer2DImageSmooth
107 connect smooth.Out viewer2DImageSmooth.In
108 connect slider.Out viewer2DImageSmooth.Slice
109 connect slider.BoxChange viewer2DImageSmooth.BoxExecute
112 #---------------------------------------------------------------------
114 new LayoutLine upLayout
115 set upLayout.Orientation H
116 connect viewer2DImageOriginal.Widget upLayout.Widget1
117 connect viewer2DImageSegmented.Widget upLayout.Widget2
118 connect viewer2DImageSmooth.Widget upLayout.Widget3
121 new ColourSelectorButton colourLower
122 set colourLower.In "1 1 0"
124 new ColourSelectorButton colourUpper
125 set colourUpper.In "1 0 0"
127 #---------------------------------------------------------------------
129 new Viewer3D viewernvImagethreshold3D
130 # set viewernvImagethreshold3D.nTypeView "5"
132 new IsoSurfaceExtractor isoextractorthreshold
133 connect threshold.Out isoextractorthreshold.In
134 set isoextractorthreshold.Opacity 1.0
135 set isoextractorthreshold.Isovalue 100
136 connect colourUpper.Out isoextractorthreshold.Colour
137 connect viewernvImagethreshold3D.Renderer isoextractorthreshold.Renderer
140 #---------------------------------------------------------------------
141 new Viewer3D viewernvImageSmooth3D
142 # set viewernvImageSmooth3D.nTypeView "5"
143 //connect refreshimages.Out viewernvImageSmooth3D.BoxExecute
145 new IsoSurfaceExtractor isoextractorsmooth
146 connect smooth.Out isoextractorsmooth.In
147 set isoextractorsmooth.Opacity 0.2
148 set isoextractorsmooth.Isovalue 200
149 connect colourLower.Out isoextractorsmooth.Colour
150 connect viewernvImageSmooth3D.Renderer isoextractorsmooth.Renderer
153 #---------------------------------------------------------------------
155 new LayoutSplit downLayout
156 set downLayout.Orientation H
157 set downLayout.Proportion 50
158 connect viewernvImagethreshold3D.Widget downLayout.Widget1
159 connect viewernvImageSmooth3D.Widget downLayout.Widget2
161 new LayoutLine sliderLayout
162 set sliderLayout.Orientation V
164 new LayoutLine buttonLayout
165 set buttonLayout.Orientation V
166 connect colourLower.Widget buttonLayout.Widget1
167 connect colourUpper.Widget buttonLayout.Widget2
168 connect refresh.Widget buttonLayout.Widget3
170 new LayoutLine toolLayout
171 set toolLayout.Orientation H
172 connect sliderLayout.Widget toolLayout.Widget1
173 connect buttonLayout.Widget toolLayout.Widget2
175 connect refresh.BoxChange smooth.BoxExecute
177 #---------------------------------------------------------------------
178 new LayoutSplit splitUp
179 set splitUp.Proportion 50
180 connect toolLayout.Widget splitUp.Widget1
181 connect upLayout.Widget splitUp.Widget2
183 connect slider.Widget sliderLayout.Widget1
184 connect lowerThresholdSlider.Widget sliderLayout.Widget2
185 connect upperThresholdSlider.Widget sliderLayout.Widget3
186 connect smoothSlider.Widget sliderLayout.Widget4
189 new LayoutSplit mainSplit
190 set mainSplit.Proportion 66
191 set mainSplit.WinHeight 1200
192 set mainSplit.WinWidth 1600
193 set mainSplit.WinTitle "Processing / Viewing example (demoFiltering1.bbs) "
194 connect splitUp.Widget mainSplit.Widget1
195 connect downLayout.Widget mainSplit.Widget2
197 #---------------------------------------------------------------------
199 exec isoextractorthreshold
200 exec isoextractorsmooth