]> Creatis software - bbtk.git/blob - packages/demo/bbs/appli/demoFiltering1.bbs
minor modifs
[bbtk.git] / packages / demo / bbs / appli / demoFiltering1.bbs
1 description "Basic segmentation and filtering of an image"
2 author "jpr@creatis.insa-lyon.fr"
3 category "demo"
4
5 // 3 Slices, 2 volumes
6
7 include std
8 include vtk
9 include wx
10 include itk
11 include itkvtk
12 include wxvtk
13
14 # Here loads hola.mhd
15 include vtk/boxes/bbLoadHola
16 new LoadHola reader
17 # uncomment next lines to have a file selector
18 #new FileSelector openFileDialog
19 #new ImageReader reader
20 #  connect openFileDialog.Out reader.In
21
22 #Get image dimensions, ...
23 new ImageProperties mc
24    connect reader.Out mc.In
25    
26 #Get number of planes  (Z)
27 new GetVectorIntElement gveZ
28    connect mc.Size gveZ.In
29    set gveZ.I 2
30    
31 #Compute the number of the 'middle' slice on Z axis
32 new Div div2
33   connect   gveZ.Out div2.In1
34   set div2.In2 2
35   
36 #---------------------------------------------------------------------
37
38 new Slider sliceSider
39   set sliceSider.Title "Slice"
40   
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
46   
47 new Slider lowerThresholdSlider
48   set lowerThresholdSlider.Title "LowerThreshold"
49   set lowerThresholdSlider.Max  50
50   set lowerThresholdSlider.In   20
51   set lowerThresholdSlider.ChangeResolution 1
52
53 new Slider lowerOpacitySlider
54   set lowerOpacitySlider.Title "LowerOpacity"
55   set lowerOpacitySlider.Max    100
56   set lowerOpacitySlider.In     20
57   set lowerOpacitySlider.Orientation V
58   
59 new Slider upperThresholdSlider
60   set upperThresholdSlider.Title "UpperThreshold"
61   set upperThresholdSlider.Max  50
62   set upperThresholdSlider.In   500
63   set upperThresholdSlider.ChangeResolution 1 
64
65 new Slider upperOpacitySlider
66   set upperOpacitySlider.Title "UpperOpacity"
67   set upperOpacitySlider.Max    100
68   set upperOpacitySlider.In     100  
69   set upperOpacitySlider.Orientation V
70   
71 new Slider smoothSlider
72   set smoothSlider.Title "Smooth"
73   set smoothSlider.Max  10
74   set smoothSlider.In   1
75   set smoothSlider.ChangeResolution 1 
76     
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"
80
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
86   
87 #---------------------------------------------------------------------
88
89 new Viewer2D viewer2DImageOriginal
90   connect reader.Out                    viewer2DImageOriginal.In
91   connect sliceSider.Out                viewer2DImageOriginal.Slice
92   connect sliceSider.BoxChange          viewer2DImageOriginal.BoxExecute
93     
94 #---------------------------------------------------------------------
95
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
102
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
108   
109 #---------------------------------------------------------------------
110
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
116
117
118 new Viewer2D viewer2DImageSmooth
119   connect smooth.Out                    viewer2DImageSmooth.In
120   connect sliceSider.Out                        viewer2DImageSmooth.Slice
121   connect sliceSider.BoxChange          viewer2DImageSmooth.BoxExecute
122
123
124 #---------------------------------------------------------------------
125
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
131
132
133 new ColourSelectorButton colourLower
134    set colourLower.In "1 1 0"
135    
136 new ColourSelectorButton colourUpper  
137    set colourUpper.In "1 0 0"
138    
139 #---------------------------------------------------------------------
140
141 new Viewer3D  viewernvImagethreshold3D
142 #  set viewernvImagethreshold3D.nTypeView "5" 
143
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
151
152
153 #---------------------------------------------------------------------
154 new Viewer3D  viewernvImageSmooth3D
155 #  set viewernvImageSmooth3D.nTypeView "5" 
156   //connect refreshimages.Out           viewernvImageSmooth3D.BoxExecute
157
158 new Div div3
159    connect lowerOpacitySlider.Out div3.In1
160    set div3.In2 100
161
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
168
169
170 #---------------------------------------------------------------------
171
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
177
178 new LayoutLine sliderLayout
179   set sliderLayout.Orientation V
180
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 
186       
187 new LayoutLine toolLayout
188   set toolLayout.Orientation H  
189   connect  sliderLayout.Widget toolLayout.Widget1
190   connect  buttonLayout.Widget toolLayout.Widget2
191
192
193 //new ImageWriter imw
194 //  connect smooth.Out imw.In
195   connect refresh.BoxChange smooth.BoxExecute
196
197 new LayoutLine vSliderLayout
198    connect lowerOpacitySlider.Widget  vSliderLayout.Widget1  
199    connect upperOpacitySlider.Widget  vSliderLayout.Widget2
200     
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
206
207 #---------------------------------------------------------------------
208 new LayoutSplit splitUp
209   set splitUp.Proportion 38
210   connect toolLayout.Widget     splitUp.Widget1
211   connect upLayout.Widget       splitUp.Widget2
212
213   connect sliceSider.Widget                 sliderLayout.Widget1
214   connect lowerThresholdSlider.Widget   sliderLayout.Widget2
215   connect upperThresholdSlider.Widget   sliderLayout.Widget3
216   connect smoothSlider.Widget           sliderLayout.Widget4     
217   
218
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
226
227 #---------------------------------------------------------------------
228
229 exec isoextractorthreshold
230 exec isoextractorsmooth
231
232
233 exec mainSplit