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