]> Creatis software - bbtk.git/blob - packages/demo/bbs/appli/demoViewingHairXRayImages.bbs
Input Proportion works !!!
[bbtk.git] / packages / demo / bbs / appli / demoViewingHairXRayImages.bbs
1 description "Interactive Segmenting of hair X-Ray images"
2 author "info-dev at 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 new FileSelector openFileDialog
15
16 new ImageReader reader
17   connect openFileDialog.Out reader.In
18
19 #Get image dimensions, ...
20 new ImageProperties mc
21    connect reader.Out mc.In
22    
23 #Get number of planes  (Z)
24 new GetVectorIntElement gveZ
25    connect mc.Size gveZ.In
26    set gveZ.I 2
27    
28 #Compute the number of the 'middle' slice on Z axis
29 new Div div2
30   connect   gveZ.Out div2.In1
31   set div2.In2 2
32   
33 #---------------------------------------------------------------------
34
35 new Slider slider
36   set slider.Title "Slice"
37   
38   #Slider size is the number of planes
39   connect gveZ.Out     slider.Max
40   #initial slice is the middle one
41   connect div2.Out slider.In
42   set slider.ChangeResolution 1
43   
44 new Slider lowerThresholdSlider
45   set lowerThresholdSlider.Title "LowerThreshold"
46   set lowerThresholdSlider.Max  50
47   set lowerThresholdSlider.In   20
48   set lowerThresholdSlider.ChangeResolution 1
49   
50 new Slider upperThresholdSlider
51   set upperThresholdSlider.Title "UpperThreshold"
52   set upperThresholdSlider.Max  50
53   set upperThresholdSlider.In   500
54   set upperThresholdSlider.ChangeResolution 1 
55
56 new Slider smoothSlider
57   set smoothSlider.Title "Smooth"
58   set smoothSlider.Max  10
59   set smoothSlider.In   1
60   set smoothSlider.ChangeResolution 1 
61     
62 new CommandButton refresh
63    set refresh.Label "Refresh"
64    set refresh.In "exec isoextractorthreshold;exec isoextractorsmooth;exec mainSplit"
65
66 new MultipleInputs refreshimages
67   //connect slider.BoxChange             refreshimages.In1
68   connect upperThresholdSlider.BoxChange refreshimages.In2
69   connect lowerThresholdSlider.BoxChange refreshimages.In3
70   connect smoothSlider.BoxChange         refreshimages.In4
71   
72 #---------------------------------------------------------------------
73
74 new Viewer2D viewer2DImageOriginal
75   connect reader.Out                    viewer2DImageOriginal.In
76   connect slider.Out                    viewer2DImageOriginal.Slice
77   connect slider.BoxChange              viewer2DImageOriginal.BoxExecute
78     
79 #---------------------------------------------------------------------
80
81 new BinaryThresholdImageFilter threshold
82   connect upperThresholdSlider.Out threshold.UpperThreshold
83   connect lowerThresholdSlider.Out threshold.LowerThreshold  
84   set threshold.InsideValue 255
85   set threshold.OutsideValue 0
86   connect reader.Out threshold.In
87
88 new Viewer2D viewer2DImageSegmented
89   connect threshold.Out                 viewer2DImageSegmented.In
90   connect slider.Out                    viewer2DImageSegmented.Slice
91 //  connect slider.BoxChange            viewer2DImageSegmented.BoxExecute
92   connect refreshimages.Out             viewer2DImageSegmented.BoxExecute
93   
94 #---------------------------------------------------------------------
95
96 new ImageGaussianSmooth smooth
97   connect threshold.Out smooth.In
98   connect smoothSlider.Out smooth.StdDevX
99   connect smoothSlider.Out smooth.StdDevY
100   connect smoothSlider.Out smooth.StdDevZ
101
102
103 new Viewer2D viewer2DImageSmooth
104   connect smooth.Out                    viewer2DImageSmooth.In
105   connect slider.Out                    viewer2DImageSmooth.Slice
106   connect slider.BoxChange              viewer2DImageSmooth.BoxExecute
107
108
109 #---------------------------------------------------------------------
110
111 new LayoutLine upLayout
112   set upLayout.Orientation H
113   connect viewer2DImageOriginal.Widget          upLayout.Widget1
114   connect viewer2DImageSegmented.Widget         upLayout.Widget2
115   connect viewer2DImageSmooth.Widget            upLayout.Widget3
116
117
118 new ColourSelectorButton colourLower
119    set colourLower.In "0.5 0 0.5"
120    
121 new ColourSelectorButton colourUpper  
122    set colourUpper.In "0.5 0.5 0.0"
123    
124 #---------------------------------------------------------------------
125
126 new Viewer3D  viewernvImagethreshold3D
127 #  set viewernvImagethreshold3D.nTypeView "5" 
128
129 new IsoSurfaceExtractor  isoextractorthreshold
130   connect threshold.Out isoextractorthreshold.In
131   set isoextractorthreshold.Opacity 1
132   set isoextractorthreshold.Isovalue 10
133   connect colourUpper.Out isoextractorthreshold.Colour  
134   connect viewernvImagethreshold3D.Renderer     isoextractorthreshold.Renderer
135
136
137 #---------------------------------------------------------------------
138 new Viewer3D  viewernvImageSmooth3D
139 #  set viewernvImageSmooth3D.nTypeView "5" 
140   //connect refreshimages.Out           viewernvImageSmooth3D.BoxExecute
141
142 new IsoSurfaceExtractor  isoextractorsmooth
143   connect smooth.Out isoextractorsmooth.In
144   set isoextractorsmooth.Opacity 1
145   set isoextractorsmooth.Isovalue 10
146   connect colourLower.Out isoextractorsmooth.Colour
147   connect viewernvImageSmooth3D.Renderer        isoextractorsmooth.Renderer
148
149
150 #---------------------------------------------------------------------
151
152 new LayoutSplit downLayout
153   set downLayout.Orientation H
154   set downLayout.Proportion 50
155   connect viewernvImagethreshold3D.Widget       downLayout.Widget1
156   connect viewernvImageSmooth3D.Widget          downLayout.Widget2
157
158 new LayoutLine sliderLayout
159   set sliderLayout.Orientation V
160
161 new LayoutLine buttonLayout
162   set buttonLayout.Orientation V
163   connect colourLower.Widget buttonLayout.Widget1
164   connect colourUpper.Widget   buttonLayout.Widget2
165   connect refresh.Widget       buttonLayout.Widget3 
166       
167 new LayoutLine toolLayout
168   set toolLayout.Orientation H  
169   connect  sliderLayout.Widget toolLayout.Widget1
170   connect  buttonLayout.Widget toolLayout.Widget2
171
172
173 //new ImageWriter imw
174 //  connect smooth.Out imw.In
175   connect refresh.BoxChange smooth.BoxExecute
176 //  set imw.Filename "/home/jpr/t8_eau_smooth.mhd"  
177
178 #---------------------------------------------------------------------
179 new LayoutSplit splitUp
180   connect toolLayout.Widget     splitUp.Widget1
181   connect upLayout.Widget       splitUp.Widget2
182
183   connect slider.Widget                 sliderLayout.Widget1
184   connect lowerThresholdSlider.Widget   sliderLayout.Widget2
185   connect upperThresholdSlider.Widget   sliderLayout.Widget3
186   connect smoothSlider.Widget           sliderLayout.Widget4     
187   
188
189 new LayoutSplit mainSplit
190   set mainSplit.Proportion 30
191   connect splitUp.Widget        mainSplit.Widget1
192   connect downLayout.Widget     mainSplit.Widget2
193
194 #---------------------------------------------------------------------
195
196 exec isoextractorthreshold
197 exec isoextractorsmooth
198 exec mainSplit