9 //include PackRecalage/boxes/checkerView.bbs
11 //Uncomment the image readers you need
13 /////////////////////////////////////////////////
15 ////////////////////////////////////////////////
17 new FileSelector imageSelector1
18 set imageSelector1.Wildcard "*.mhd"
19 new FileSelector imageSelector2
20 set imageSelector2.Wildcard "*.mhd"
22 new MetaImageReader image
23 connect imageSelector1.Out image.In
25 new MetaImageReader image2
26 connect imageSelector2.Out image2.In
29 ///////////////////////////////////////////////
31 //////////////////////////////////////////////
38 ///////////////////////////////////////////////
40 //////////////////////////////////////////////
44 new SliceImage imgslice1
45 new SliceImage imgslice2
46 connect image.Out imgslice1.In
47 connect image2.Out imgslice2.In
49 ////////////////////////////////////////////
51 ///////////////////////////////////////////
53 #Viewer containing image 1
55 new LayoutLine v1Layout
57 connect image.Out viewer1.In
58 set viewer1.nTypeView "0"
59 connect viewer1.Widget v1Layout.Widget1
61 #Viewer containing image 2
63 new LayoutLine v2Layout
65 connect image2.Out viewer2.In
66 set viewer2.nTypeView "0"
67 connect viewer2.Widget v2Layout.Widget1
69 //////////////////////////////////////
70 //Layouts for the images
71 //////////////////////////////////////
73 #LayoutSplit were the images will be
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
81 ////////////////////////////////////////////////////////////////
82 //Information Sliders and Buttons for the Recalage
83 ///////////////////////////////////////////////////////////////
85 #Layout line that will contain the buttons
87 new LayoutLine buttonsLayout
88 set buttonsLayout.Orientation V
90 #Slider were the angle will be entered
93 set slider.Title "Angle"
97 set slider.ReactiveOnTrack "1"
98 connect slider.Widget buttonsLayout.Widget1
100 #Slider were the xScale will be entered
103 set sliderX.Title "% Scale in X"
107 set sliderX.ReactiveOnTrack "1"
108 connect sliderX.Widget buttonsLayout.Widget2
110 #Slider were the yScale will be entered
113 set sliderY.Title "% Scale in Y"
117 set sliderY.ReactiveOnTrack "1"
118 connect sliderY.Widget buttonsLayout.Widget3
120 //////////////////////////////////////////////////
121 //Transformation Boxes
122 //////////////////////////////////////////////////
124 #Box were the transformation will be made
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
132 new ReSlicerBox reslice1
133 connect viewer1.Point reslice1.Origin
134 connect transform.Out reslice1.Transform
135 connect imgslice2.Out reslice1.In
137 //////////////////////////////////////////////////
139 //////////////////////////////////////////////////
141 #Convolution Filter for both of the Images
143 new ImageConvolution convol1
144 connect imgslice1.Out convol1.In
145 new ImageConvolution convol2
146 connect reslice1.Out convol2.In
148 ////////////////////////////////////////////////
149 //Recalage Properties
150 ////////////////////////////////////////////////
154 new ImageRecalageProperties properties
155 connect image.Out properties.In
156 connect image.BoxChange properties.BoxExecute
158 # Create the ZSlider for the slices
161 set sdrZ.ReactiveOnTrack 1
163 connect properties.LengthZ sdrZ.Max
164 set sdrZ.Title "Z for slice"
166 connect sdrZ.Out imgslice1.Z
167 connect sdrZ.Out imgslice2.Z
168 connect sdrZ.BoxChange imgslice1.BoxExecute
169 connect sdrZ.BoxChange imgslice2.BoxExecute
171 #Create slider for Convolution Factor
174 set sdrF.ReactiveOnTrack 1
178 set sdrF.Title "Convolution Factor"
180 connect sdrF.Out convol1.Factor
181 connect sdrF.Out convol2.Factor
183 #Create CheckBox for Convolution Filter On/Off
188 connect checkF.Out convol1.On
189 connect checkF.Out convol2.On
191 new MultipleInputs multF
192 connect sdrF.BoxChange multF.In1
193 connect checkF.BoxChange multF.In2
195 connect multF.BoxChange convol1.BoxExecute
196 connect multF.BoxChange convol2.BoxExecute
198 #Create Sliders for WinLevel and ColorLevel
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"
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"
214 # Connection to viewers
216 connect colorLevel.Out viewer1.ColorLevel
217 connect colorLevel.Out viewer2.ColorLevel
219 connect windowLevel.Out viewer1.WindowLevel
220 connect windowLevel.Out viewer2.WindowLevel
222 new MultipleInputs multLevels
223 connect colorLevel.BoxChange multLevels.In1
224 connect windowLevel.BoxChange multLevels.In2
226 connect multLevels.BoxChange viewer1.BoxExecute
227 connect multLevels.BoxChange viewer2.BoxExecute
231 new CommandButton saveBut
232 set saveBut.Label "Save Image"
234 new FileSelector fileSave
235 set fileSave.OpenSave "Save"
236 set fileSave.Wildcard "*.mhd"
238 new MetaImageWriter writSave
239 connect reslice1.Out writSave.In
240 connect fileSave.Out writSave.Filename
242 connect saveBut.BoxChange fileSave.BoxExecute
243 connect fileSave.BoxChange writSave.BoxExecute
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
253 set sdr.ReactiveOnTrack 1
259 set sdr2.ReactiveOnTrack 1
263 # Create viewer & layout for Checkerboard
264 new LayoutSplit checkerBoard
266 new ViewerNV viewerCH
267 set viewerCH.nTypeView "0"
268 set checkerBoard.Proportion 80
272 connect colorLevel.Out viewerCH.ColorLevel
273 connect windowLevel.Out viewerCH.WindowLevel
275 # Graphical pipeline for CheckBoard
276 connect sdr.Out cbb.Cols
277 connect sdr2.Out cbb.Rows
278 connect cbb.Out viewerCH.In
280 connect sdr.Widget ly.Widget2
281 connect sdr2.Widget ly.Widget3
283 connect viewerCH.Widget checkerBoard.Widget1
284 connect ly.Widget checkerBoard.Widget2
285 /////////////end of Checkboard////////////////////
287 //////////////Transparency///////////////////////////
288 #Image Transparency view
290 new TransparencyBox trans
291 connect convol1.Out trans.In1
292 connect convol2.Out trans.In2
298 set sdrP.ReactiveOnTrack true
300 connect sdrP.Out trans.Percent
302 new ViewerNV transView
303 connect trans.Out transView.In
304 set transView.nTypeView "0"
306 new LayoutSplit transparency
307 connect transView.Widget transparency.Widget1
308 connect sdrP.Widget transparency.Widget2
309 set transparency.Proportion 80
311 connect colorLevel.Out transView.ColorLevel
312 connect windowLevel.Out transView.WindowLevel
313 ///////////////////end of Transparency////////////////
316 /////////////////Image Switcher//////////////////////
318 new ImageSwitcherBox switch
319 connect convol1.Out switch.In1
320 connect convol2.Out switch.In2
323 connect checkS.Out switch.On
324 set checkS.Title "On"
331 set sdrT.ReactiveOnTrack "True"
333 connect sdrT.Out switch.Time
335 new Viewer2D viewerSwitch
336 connect switch.Out viewerSwitch.In
338 connect sdrT.BoxChange switch.BoxExecute
339 connect switch.BoxChange viewerSwitch.BoxExecute
341 new LayoutSplit switcher
342 set switcher.Proportion "70"
344 new LayoutSplit switchWindow
345 set switchWindow.Proportion "80"
346 connect viewerSwitch.Widget switchWindow.Widget1
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
354 connect switchTool.Widget switchWindow.Widget2
356 connect switchWindow.Widget switcher.Widget1
357 connect sdrT.Widget switcher.Widget2
359 //////////////end of Image Switch///////////////////
361 #Multiple inputs for managing the interaction
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
370 new MultipleInputs mult2
371 connect multF.BoxChange mult2.In1
372 connect mult.BoxChange mult2.In2
374 # Execution pipeline for checkboard
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
383 connect mult3.BoxChange cbb.BoxExecute
384 connect cbb.BoxChange viewerCH.BoxExecute
386 #Execution pipeline for Transparency
388 new MultipleInputs mult4
389 connect mult2.BoxChange mult4.In1
390 connect sdrP.BoxChange mult4.In2
392 connect mult4.BoxChange trans.BoxExecute
393 connect trans.BoxChange transView.BoxExecute
395 ///////////////////////////////////////////////////////////////
400 connect switcher.Widget tabs.Widget1
401 connect checkerBoard.Widget tabs.Widget2
402 connect transparency.Widget tabs.Widget3
404 #Layout where the images and the buttons will be displayed
407 connect sdrZ.Widget tools.Widget1
408 connect colorLevel.Widget tools.Widget2
409 connect windowLevel.Widget tools.Widget3
410 connect saveBut.Widget tools.Widget5
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
418 connect convolTools.Widget tools.Widget4
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
427 new LayoutSplit window2
428 connect tabs.Widget window2.Widget1
429 connect tools.Widget window2.Widget2
430 set window2.Proportion "90"
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