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 sliceSider.Title "Slice"
41 #Slider size is the number of planes
42 connect gveZ.Out sliceSider.Max
43 #initial slice is the middle one
44 connect div2.Out sliceSider.In
45 set sliceSider.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 lowerOpacitySlider
54 set lowerOpacitySlider.Title "LowerOpacity"
55 set lowerOpacitySlider.Max 100
56 set lowerOpacitySlider.In 20
57 set lowerOpacitySlider.Orientation V
59 new Slider upperThresholdSlider
60 set upperThresholdSlider.Title "UpperThreshold"
61 set upperThresholdSlider.Max 50
62 set upperThresholdSlider.In 500
63 set upperThresholdSlider.ChangeResolution 1
65 new Slider upperOpacitySlider
66 set upperOpacitySlider.Title "UpperOpacity"
67 set upperOpacitySlider.Max 100
68 set upperOpacitySlider.In 100
69 set upperOpacitySlider.Orientation V
71 new Slider smoothSlider
72 set smoothSlider.Title "Smooth"
73 set smoothSlider.Max 10
75 set smoothSlider.ChangeResolution 1
77 new CommandButton refresh
78 set refresh.Label "Refresh"
79 set refresh.In "exec isoextractorthreshold;exec isoextractorsmooth;exec viewer2DImageSegmented; exec viewer2DImageSmooth; exec viewer2DImageOriginal; exec mainSplit"
81 new MultipleInputs refreshimages
82 connect sliceSider.BoxChange refreshimages.In1
83 connect upperThresholdSlider.BoxChange refreshimages.In2
84 connect lowerThresholdSlider.BoxChange refreshimages.In3
85 connect smoothSlider.BoxChange refreshimages.In4
87 #---------------------------------------------------------------------
89 new Viewer2D viewer2DImageOriginal
90 connect reader.Out viewer2DImageOriginal.In
91 connect sliceSider.Out viewer2DImageOriginal.Slice
92 connect sliceSider.BoxChange viewer2DImageOriginal.BoxExecute
94 #---------------------------------------------------------------------
96 new BinaryThresholdImageFilter threshold
97 connect upperThresholdSlider.Out threshold.UpperThreshold
98 connect lowerThresholdSlider.Out threshold.LowerThreshold
99 set threshold.InsideValue 255
100 set threshold.OutsideValue 0
101 connect reader.Out threshold.In
103 new Viewer2D viewer2DImageSegmented
104 connect threshold.Out viewer2DImageSegmented.In
105 connect sliceSider.Out viewer2DImageSegmented.Slice
106 // connect sliceSider.BoxChange viewer2DImageSegmented.BoxExecute
107 connect refreshimages.Out viewer2DImageSegmented.BoxExecute
109 #---------------------------------------------------------------------
111 new ImageGaussianSmooth smooth
112 connect threshold.Out smooth.In
113 connect smoothSlider.Out smooth.StdDevX
114 connect smoothSlider.Out smooth.StdDevY
115 connect smoothSlider.Out smooth.StdDevZ
118 new Viewer2D viewer2DImageSmooth
119 connect smooth.Out viewer2DImageSmooth.In
120 connect sliceSider.Out viewer2DImageSmooth.Slice
121 connect sliceSider.BoxChange viewer2DImageSmooth.BoxExecute
124 #---------------------------------------------------------------------
126 new LayoutLine upLayout
127 set upLayout.Orientation H
128 connect viewer2DImageOriginal.Widget upLayout.Widget1
129 connect viewer2DImageSegmented.Widget upLayout.Widget2
130 connect viewer2DImageSmooth.Widget upLayout.Widget3
133 new ColourSelectorButton colourLower
134 set colourLower.In "1 1 0"
136 new ColourSelectorButton colourUpper
137 set colourUpper.In "1 0 0"
139 #---------------------------------------------------------------------
141 new Viewer3D viewernvImagethreshold3D
142 # set viewernvImagethreshold3D.nTypeView "5"
144 new IsoSurfaceExtractor isoextractorthreshold
145 connect threshold.Out isoextractorthreshold.In
146 set isoextractorthreshold.Opacity 1
147 #set isoextractorthreshold.Isovalue 10
148 set isoextractorthreshold.Isovalue 100
149 connect colourUpper.Out isoextractorthreshold.Colour
150 connect viewernvImagethreshold3D.Renderer isoextractorthreshold.Renderer
153 #---------------------------------------------------------------------
154 new Viewer3D viewernvImageSmooth3D
155 # set viewernvImageSmooth3D.nTypeView "5"
156 //connect refreshimages.Out viewernvImageSmooth3D.BoxExecute
159 connect lowerOpacitySlider.Out div3.In1
162 new IsoSurfaceExtractor isoextractorsmooth
163 connect smooth.Out isoextractorsmooth.In
164 connect div3.Out isoextractorsmooth.Opacity
165 set isoextractorsmooth.Isovalue 200
166 connect colourLower.Out isoextractorsmooth.Colour
167 connect viewernvImageSmooth3D.Renderer isoextractorsmooth.Renderer
170 #---------------------------------------------------------------------
172 new LayoutSplit downLayout
173 set downLayout.Orientation H
174 set downLayout.Proportion 50
175 connect viewernvImagethreshold3D.Widget downLayout.Widget1
176 connect viewernvImageSmooth3D.Widget downLayout.Widget2
178 new LayoutLine sliderLayout
179 set sliderLayout.Orientation V
181 new LayoutLine buttonLayout
182 set buttonLayout.Orientation V
183 connect colourLower.Widget buttonLayout.Widget1
184 connect colourUpper.Widget buttonLayout.Widget2
185 connect refresh.Widget buttonLayout.Widget3
187 new LayoutLine toolLayout
188 set toolLayout.Orientation H
189 connect sliderLayout.Widget toolLayout.Widget1
190 connect buttonLayout.Widget toolLayout.Widget2
193 //new ImageWriter imw
194 // connect smooth.Out imw.In
195 connect refresh.BoxChange smooth.BoxExecute
197 new LayoutLine vSliderLayout
198 connect lowerOpacitySlider.Widget vSliderLayout.Widget1
199 connect upperOpacitySlider.Widget vSliderLayout.Widget2
201 new LayoutSplit layout3D
202 set layout3D.Orientation H
203 set layout3D.Proportion 90
204 connect downLayout.Widget layout3D.Widget1
205 connect vSliderLayout.Widget layout3D.Widget2
207 #---------------------------------------------------------------------
208 new LayoutSplit splitUp
209 set splitUp.Proportion 38
210 connect toolLayout.Widget splitUp.Widget1
211 connect upLayout.Widget splitUp.Widget2
213 connect sliceSider.Widget sliderLayout.Widget1
214 connect lowerThresholdSlider.Widget sliderLayout.Widget2
215 connect upperThresholdSlider.Widget sliderLayout.Widget3
216 connect smoothSlider.Widget sliderLayout.Widget4
219 new LayoutSplit mainSplit
220 set mainSplit.Proportion 50
221 set mainSplit.WinHeight 1200
222 set mainSplit.WinWidth 1600
223 set mainSplit.WinTitle "Processing / Viewing example (demoFiltering1.bbs) "
224 connect splitUp.Widget mainSplit.Widget1
225 connect layout3D.Widget mainSplit.Widget2
227 #---------------------------------------------------------------------
229 exec isoextractorthreshold
230 exec isoextractorsmooth