]> Creatis software - creaRigidRegistration.git/blob - PackRecalage/bbs/appli/Recalage2D.bbs
6405f32813911d2f9e5f5ec26aface6b45f76cbb
[creaRigidRegistration.git] / PackRecalage / bbs / appli / Recalage2D.bbs
1 load wx
2 load std
3 load vtk
4 load wxvtk
5 load creaMaracasVisu
6
7 load PackRecalage
8
9 //include PackRecalage/boxes/checkerView.bbs
10
11 //Uncomment the image readers you need
12
13 /////////////////////////////////////////////////
14 // File Selector
15 ////////////////////////////////////////////////
16 /*
17 new FileSelector imageSelector1
18   set imageSelector1.Wildcard "*.mhd"
19 new FileSelector imageSelector2
20   set imageSelector2.Wildcard "*.mhd"
21
22 new MetaImageReader image
23   connect imageSelector1.Out image.In
24
25 new MetaImageReader image2 
26   connect imageSelector2.Out image2.In  
27 */
28
29 ///////////////////////////////////////////////
30 // Gimmick
31 //////////////////////////////////////////////
32
33 include creaImageIO
34
35 new Gimmick image
36 new Gimmick image2
37
38 ///////////////////////////////////////////////
39 //Image Slicers
40 //////////////////////////////////////////////
41
42 # Create the slicers
43
44 new SliceImage imgslice1
45 new SliceImage imgslice2
46   connect image.Out imgslice1.In
47   connect image2.Out imgslice2.In
48
49 ////////////////////////////////////////////
50 //Image Viewers
51 ///////////////////////////////////////////
52
53 #Viewer containing image 1
54
55 new LayoutLine v1Layout
56 new ViewerNV viewer1
57   connect image.Out viewer1.In
58   set viewer1.nTypeView "0"
59   connect viewer1.Widget v1Layout.Widget1
60
61 #Viewer containing image 2
62
63 new LayoutLine v2Layout
64 new ViewerNV viewer2
65   connect image2.Out viewer2.In
66   set viewer2.nTypeView "0"
67   connect viewer2.Widget v2Layout.Widget1
68
69 //////////////////////////////////////
70 //Layouts for the images
71 //////////////////////////////////////
72
73 #LayoutSplit were the images will be
74
75 new LayoutSplit initialImages
76   set initialImages.Proportion "50"
77   set initialImages.Orientation H
78   connect v1Layout.Widget initialImages.Widget1
79   connect v2Layout.Widget initialImages.Widget2
80
81 ////////////////////////////////////////////////////////////////
82 //Information Sliders and Buttons for the Recalage
83 ///////////////////////////////////////////////////////////////
84
85 #Layout line that will contain the buttons
86
87 new LayoutLine buttonsLayout
88   set buttonsLayout.Orientation V
89
90 #Slider were the angle will be entered
91
92 new Slider slider
93   set slider.Title "Angle"
94   set slider.In 0
95   set slider.Min -180
96   set slider.Max 180
97   set slider.ReactiveOnTrack "1"
98   connect slider.Widget buttonsLayout.Widget1 
99
100 #Slider were the xScale will be entered
101
102 new Slider sliderX
103   set sliderX.Title "% Scale in X"
104   set sliderX.In 100
105   set sliderX.Min 10
106   set sliderX.Max 500
107   set sliderX.ReactiveOnTrack "1"
108   connect sliderX.Widget buttonsLayout.Widget2 
109
110 #Slider were the yScale will be entered
111
112 new Slider sliderY
113   set sliderY.Title "% Scale in Y"
114   set sliderY.In 100
115   set sliderY.Min 10
116   set sliderY.Max 500
117   set sliderY.ReactiveOnTrack "1"
118   connect sliderY.Widget buttonsLayout.Widget3
119
120 //////////////////////////////////////////////////
121 //Transformation Boxes
122 //////////////////////////////////////////////////
123
124 #Box were the transformation will be made
125
126 new Transform2DBox transform
127   connect viewer2.Point transform.CenterPoint
128   connect slider.Out transform.Angle
129   connect sliderX.Out transform.ScaleX
130   connect sliderY.Out transform.ScaleY
131
132 new ReSlicerBox reslice1
133   connect viewer1.Point reslice1.Origin
134   connect transform.Out reslice1.Transform
135   connect imgslice2.Out reslice1.In
136
137 //////////////////////////////////////////////////
138 //Convolution Filter
139 //////////////////////////////////////////////////
140
141 #Convolution Filter for both of the Images
142
143 new ImageConvolution convol1
144   connect imgslice1.Out convol1.In
145 new ImageConvolution convol2
146   connect reslice1.Out convol2.In
147
148 ////////////////////////////////////////////////
149 //Recalage Properties
150 ////////////////////////////////////////////////
151
152 #Image Properties
153
154 new ImageRecalageProperties properties
155   connect image.Out properties.In
156   connect image.BoxChange properties.BoxExecute
157
158 # Create the ZSlider for the slices
159
160 new Slider sdrZ
161   set sdrZ.ReactiveOnTrack 1
162   set sdrZ.Min 0
163   connect properties.LengthZ sdrZ.Max
164   set sdrZ.Title "Z for slice"
165
166   connect sdrZ.Out imgslice1.Z
167   connect sdrZ.Out imgslice2.Z
168   connect sdrZ.BoxChange imgslice1.BoxExecute
169   connect sdrZ.BoxChange imgslice2.BoxExecute
170
171 #Create slider for Convolution Factor
172
173 new Slider sdrF
174   set sdrF.ReactiveOnTrack 1
175   set sdrF.Max "100"
176   set sdrF.Min "0"
177   set sdrF.In "0"
178   set sdrF.Title "Convolution Factor"
179
180   connect sdrF.Out convol1.Factor
181   connect sdrF.Out convol2.Factor
182
183 #Create CheckBox for Convolution Filter On/Off
184
185 new CheckBox checkF
186   set checkF.In "True"
187
188   connect checkF.Out convol1.On
189   connect checkF.Out convol2.On
190
191 new MultipleInputs multF
192   connect sdrF.BoxChange multF.In1
193   connect checkF.BoxChange multF.In2
194
195   connect multF.BoxChange convol1.BoxExecute
196   connect multF.BoxChange convol2.BoxExecute
197
198 #Create Sliders for WinLevel and ColorLevel
199
200 new Slider colorLevel
201   set colorLevel.Min "0"
202   connect properties.ColorLevel colorLevel.Max 
203   connect properties.MidColorLevel colorLevel.In
204   set colorLevel.ReactiveOnTrack true
205   set colorLevel.Title "Color Level"
206
207 new Slider windowLevel
208   set windowLevel.Min "0"
209   connect properties.ColorLevel windowLevel.Max
210   connect properties.MidColorLevel windowLevel.In
211   set windowLevel.ReactiveOnTrack true
212   set windowLevel.Title "Window Level"
213
214 # Connection to viewers
215
216   connect colorLevel.Out viewer1.ColorLevel
217   connect colorLevel.Out viewer2.ColorLevel
218
219   connect windowLevel.Out viewer1.WindowLevel
220   connect windowLevel.Out viewer2.WindowLevel
221
222 new MultipleInputs multLevels
223   connect colorLevel.BoxChange multLevels.In1
224   connect windowLevel.BoxChange multLevels.In2
225
226   connect multLevels.BoxChange viewer1.BoxExecute
227   connect multLevels.BoxChange viewer2.BoxExecute
228
229 # Button for saving
230
231 new CommandButton saveBut
232   set saveBut.Label "Save Image"
233
234 new FileSelector fileSave
235   set fileSave.OpenSave "Save"
236   set fileSave.Wildcard "*.mhd"
237
238 new MetaImageWriter writSave
239   connect reslice1.Out writSave.In 
240   connect fileSave.Out writSave.Filename
241
242   connect saveBut.BoxChange fileSave.BoxExecute
243   connect fileSave.BoxChange writSave.BoxExecute
244
245 ////////////////////Checkboard/////////////////////////
246 # Create the visulization box for checkerBoard
247 new CheckBoardBox cbb
248   connect convol1.Out cbb.In1
249   connect convol2.Out cbb.In2
250
251 # Create the slider1
252 new Slider sdr
253   set sdr.ReactiveOnTrack 1
254   set sdr.Max 50
255   set sdr.In 14
256
257 # Create the slider2
258 new Slider sdr2
259   set sdr2.ReactiveOnTrack 1
260   set sdr2.Max 50
261   set sdr2.In 14
262
263 # Create viewer & layout for Checkerboard
264 new LayoutSplit checkerBoard
265 new LayoutLine ly
266 new ViewerNV viewerCH
267   set viewerCH.nTypeView "0"
268   set checkerBoard.Proportion 80
269
270 #Connecting levels 
271
272   connect colorLevel.Out viewerCH.ColorLevel
273   connect windowLevel.Out viewerCH.WindowLevel
274
275 # Graphical pipeline for CheckBoard
276   connect sdr.Out cbb.Cols
277   connect sdr2.Out cbb.Rows
278   connect cbb.Out viewerCH.In
279   
280   connect sdr.Widget ly.Widget2
281   connect sdr2.Widget ly.Widget3
282
283   connect viewerCH.Widget checkerBoard.Widget1 
284   connect ly.Widget checkerBoard.Widget2
285 /////////////end of Checkboard////////////////////
286
287 //////////////Transparency///////////////////////////
288 #Image Transparency view
289
290 new TransparencyBox trans
291   connect convol1.Out trans.In1
292   connect convol2.Out trans.In2
293
294 new Slider sdrP
295   set sdrP.Max "100"
296   set sdrP.Min "0"
297   set sdrP.In "50"
298   set sdrP.ReactiveOnTrack true
299
300   connect sdrP.Out trans.Percent
301
302 new ViewerNV transView
303   connect trans.Out transView.In
304   set transView.nTypeView "0"
305
306 new LayoutSplit transparency
307   connect transView.Widget transparency.Widget1
308   connect sdrP.Widget transparency.Widget2
309   set transparency.Proportion 80
310
311   connect colorLevel.Out transView.ColorLevel
312   connect windowLevel.Out transView.WindowLevel
313 ///////////////////end of Transparency////////////////
314
315
316 /////////////////Image Switcher//////////////////////
317
318 new ImageSwitcherBox switch
319   connect convol1.Out switch.In1 
320   connect convol2.Out switch.In2  
321
322 new CheckBox checkS
323   connect checkS.Out switch.On
324   set checkS.Title "On"
325   set checkS.In "true"
326
327 new Slider sdrT
328   set sdrT.Max "1000"
329   set sdrT.Min "0"
330   set sdrT.In "500"
331   set sdrT.ReactiveOnTrack "True"
332
333 connect sdrT.Out switch.Time
334
335 new Viewer2D viewerSwitch
336   connect switch.Out viewerSwitch.In
337   
338   connect sdrT.BoxChange switch.BoxExecute
339   connect switch.BoxChange viewerSwitch.BoxExecute
340
341 new LayoutSplit switcher
342   set switcher.Proportion "70"
343
344 new LayoutSplit switchWindow
345   set switchWindow.Proportion "80"
346   connect viewerSwitch.Widget switchWindow.Widget1
347
348 new LayoutSplit switchTool
349   set switchTool.Orientation H
350   set switchTool.Proportion "50"
351   connect switch.Widget switchTool.Widget1
352   connect checkS.Widget switchTool.Widget2
353
354   connect switchTool.Widget switchWindow.Widget2
355
356   connect switchWindow.Widget switcher.Widget1 
357   connect sdrT.Widget switcher.Widget2
358
359 //////////////end of Image Switch///////////////////
360
361 #Multiple inputs for managing the interaction
362
363 new MultipleInputs mult
364   connect slider.BoxChange mult.In1
365   connect sliderX.BoxChange mult.In2
366   connect sliderY.BoxChange mult.In3
367   connect viewer1.BoxChange mult.In4
368   connect viewer2.BoxChange mult.In5
369
370 new MultipleInputs mult2
371   connect multF.BoxChange mult2.In1
372   connect mult.BoxChange mult2.In2
373
374 # Execution pipeline for checkboard
375
376 new MultipleInputs mult3
377   connect ly.BoxChange mult3.In1
378   connect mult2.BoxChange mult3.In2
379   connect imgslice1.BoxChange mult3.In3
380   connect imgslice2.BoxChange mult3.In4
381   connect multLevels.BoxChange mult3.In5
382
383   connect mult3.BoxChange cbb.BoxExecute
384   connect cbb.BoxChange viewerCH.BoxExecute
385
386 #Execution pipeline for Transparency
387
388 new MultipleInputs mult4
389   connect mult2.BoxChange mult4.In1
390   connect sdrP.BoxChange mult4.In2
391
392   connect mult4.BoxChange trans.BoxExecute
393   connect trans.BoxChange transView.BoxExecute
394
395 ///////////////////////////////////////////////////////////////
396
397 #Layout for the tabs
398
399 new LayoutTab tabs
400    connect switcher.Widget tabs.Widget1
401   connect checkerBoard.Widget tabs.Widget2
402   connect transparency.Widget tabs.Widget3 
403
404 #Layout where the images and the buttons will be displayed
405
406 new LayoutLine tools
407   connect sdrZ.Widget tools.Widget1
408   connect colorLevel.Widget tools.Widget2
409   connect windowLevel.Widget tools.Widget3
410   connect saveBut.Widget tools.Widget5
411
412 new LayoutSplit convolTools
413   set convolTools.Orientation H
414   set convolTools.Proportion "80"
415   connect sdrF.Widget convolTools.Widget1
416   connect checkF.Widget convolTools.Widget2
417
418   connect convolTools.Widget tools.Widget4
419
420 new LayoutSplit window1
421   set window1.WinWidth "600"
422   set window1.Proportion "80"
423   set window1.Orientation V
424   connect initialImages.Widget window1.Widget1
425   connect buttonsLayout.Widget window1.Widget2
426
427 new LayoutSplit window2
428  connect tabs.Widget window2.Widget1
429  connect tools.Widget window2.Widget2
430  set window2.Proportion "90"
431
432 new LayoutSplit main
433   set main.WinWidth "1200"
434   set main.Proportion "50"
435   set main.Orientation H
436   connect window1.Widget main.Widget1
437   connect window2.Widget main.Widget2
438
439 exec main
440