]> Creatis software - bbtk.git/blob - packages/demo/bbs/appli/demoFiltering1.bbs
Change default values
[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 slider
39   set slider.Title "Slice"
40   
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
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 upperThresholdSlider
54   set upperThresholdSlider.Title "UpperThreshold"
55   set upperThresholdSlider.Max  50
56   set upperThresholdSlider.In   500
57   set upperThresholdSlider.ChangeResolution 1 
58
59 new Slider smoothSlider
60   set smoothSlider.Title "Smooth"
61   set smoothSlider.Max  10
62   set smoothSlider.In   1
63   set smoothSlider.ChangeResolution 1 
64     
65 new CommandButton refresh
66    set refresh.Label "Refresh"
67    set refresh.In "exec isoextractorthreshold;exec isoextractorsmooth;exec mainSplit"
68
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
74   
75 #---------------------------------------------------------------------
76
77 new Viewer2D viewer2DImageOriginal
78   connect reader.Out                    viewer2DImageOriginal.In
79   connect slider.Out                    viewer2DImageOriginal.Slice
80   connect slider.BoxChange              viewer2DImageOriginal.BoxExecute
81     
82 #---------------------------------------------------------------------
83
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
90
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
96   
97 #---------------------------------------------------------------------
98
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
104
105
106 new Viewer2D viewer2DImageSmooth
107   connect smooth.Out                    viewer2DImageSmooth.In
108   connect slider.Out                    viewer2DImageSmooth.Slice
109   connect slider.BoxChange              viewer2DImageSmooth.BoxExecute
110
111
112 #---------------------------------------------------------------------
113
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
119
120
121 new ColourSelectorButton colourLower
122    set colourLower.In "1 1 0"
123    
124 new ColourSelectorButton colourUpper  
125    set colourUpper.In "1 0 0"
126    
127 #---------------------------------------------------------------------
128
129 new Viewer3D  viewernvImagethreshold3D
130 #  set viewernvImagethreshold3D.nTypeView "5" 
131
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
138
139
140 #---------------------------------------------------------------------
141 new Viewer3D  viewernvImageSmooth3D
142 #  set viewernvImageSmooth3D.nTypeView "5" 
143   //connect refreshimages.Out           viewernvImageSmooth3D.BoxExecute
144
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
151
152
153 #---------------------------------------------------------------------
154
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
160
161 new LayoutLine sliderLayout
162   set sliderLayout.Orientation V
163
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 
169       
170 new LayoutLine toolLayout
171   set toolLayout.Orientation H  
172   connect  sliderLayout.Widget toolLayout.Widget1
173   connect  buttonLayout.Widget toolLayout.Widget2
174
175
176 //new ImageWriter imw
177 //  connect smooth.Out imw.In
178   connect refresh.BoxChange smooth.BoxExecute
179
180
181 #---------------------------------------------------------------------
182 new LayoutSplit splitUp
183   set splitUp.Proportion 50
184   connect toolLayout.Widget     splitUp.Widget1
185   connect upLayout.Widget       splitUp.Widget2
186
187   connect slider.Widget                 sliderLayout.Widget1
188   connect lowerThresholdSlider.Widget   sliderLayout.Widget2
189   connect upperThresholdSlider.Widget   sliderLayout.Widget3
190   connect smoothSlider.Widget           sliderLayout.Widget4     
191   
192
193 new LayoutSplit mainSplit
194   set mainSplit.Proportion 66
195   connect splitUp.Widget        mainSplit.Widget1
196   connect downLayout.Widget     mainSplit.Widget2
197
198 #---------------------------------------------------------------------
199
200 exec isoextractorthreshold
201 exec isoextractorsmooth
202
203
204 set mainSplit.WinTitle "demoFiltering1"
205 exec mainSplit