1 description "3 slicers and a 3D view"
2 author "jpr@creatis.insa-lyon.fr"
3 category "example, tool"
5 // To show how easy it is to add smthing
6 // =====================================
17 include wxvtk/boxes/bbSimpleSlicer
21 new LayoutLine upright
23 new LayoutLine downleft
24 new LayoutSplit downright
25 set downright.Proportion 85
27 connect upright.Widget main.Widget1
28 connect upleft.Widget main.Widget2
29 connect downleft.Widget main.Widget3
30 connect downright.Widget main.Widget4
32 # Use new box (choose the way you want to select images)
33 # -----------------------------------------------------
35 new ImagesChooserDialogBox chooser
37 # Concatenate all the supposed-to-be consistent 2D images into a single vtkImageData
38 # WARNING : File names alphabetical order is suposed to be meaningful ...
40 new ConcatImages reader
41 connect chooser.Out reader.In
43 // Normally (?) the following lines {== BEGIN == / ==END ==}
44 // are now useless; let here as a reminder/example
45 // Don't remove them . JPRx
47 // ==== BEGIN ======================================================
50 # Dummy way to get only the first image from the chooser
51 # ------------------------------------------------------
53 new ImagesChooserDialogBox chooser
55 new GetVectorVtkImageDataElement reader
57 connect chooser.Out reader.In
60 # Here loads 'hola.mhd'
61 # ---------------------
63 # Don't forget to comment out the following 2 lines
64 # If you want to check someting else.
67 include vtk/boxes/bbLoadHola
71 # uncomment next lines to have a file selector
72 # --------------------------------------------
74 new FileSelector openFileDialog
75 new ImageReader reader
76 connect openFileDialog.Out reader.In
79 # uncomment next lines to use a vtkgdcmReader
80 # -------------------------------------
82 new FileSelector openFileDialog
83 new GetInfoGdcmReader reader
84 connect openFileDialog.Out reader.In
87 # uncomment next lines to use Gimmick
88 # -----------------------------------
94 # uncomment next lines to Read a MHD file (and nothing else !)
95 # ------------------------------------------------------------
97 new FileSelector openFileDialog
98 set openFileDialog.Wildcard "(*.mhd)|*.mhd"
99 new MetaImageReader reader
100 connect openFileDialog.Out reader.In
103 # uncomment the following lines to read a 3D images stack
104 # (only if file name order is meaningfull)
105 # -------------------------------------------------------
107 // To choose the directory
108 new DirectorySelector ds
109 // To get the image names into a vector
110 new FilesFromDirectory fd
111 // To read all the files, as a bbitk::ImagePointer
112 new ImageSeriesReader reader
113 // user choosen directory as input
115 set fd.Recursive false
116 // list of files as input
117 #print "Files found in $ds.Out$\n
118 connect fd.Out reader.FileNames
121 # uncomment the following lines to read a 3D images stack
122 # (if the directory contains a 'XCoherent" Serie)
123 # -------------------------------------------------------
125 // To choose the directory
126 new DirectorySelector ds
127 // To get the image names into a vector
128 new FilesFromDirectory fd
129 // user choosen directory as input
131 // order the files, computes an accurate ZSpacing
132 new GetXCoherentInfoGdcmReader reader
133 connect fd.Out reader.In
136 # uncomment the following lines to read a 3D images stack
137 # (with DICOMDirReader)
138 # -------------------------------------------------------
140 include itk/boxes/bbDICOMDirReader
141 // To choose the directory
142 new DirectorySelector ds
143 new DICOMDirReader reader
144 connect ds.Out reader.In
147 // ==== END ======================================================
149 // We need that to set Sliders sizes
151 #Get image dimensions, ...
152 new ImageProperties mc
153 connect reader.Out mc.In
155 #Get number of column (X)
156 new GetVectorIntElement gveX
157 connect mc.Size gveX.In
160 #Get number of rows (Y)
161 new GetVectorIntElement gveY
162 connect mc.Size gveY.In
165 #Get number of planes (Z)
166 new GetVectorIntElement gveZ
167 connect mc.Size gveZ.In
169 //print "Dim Z $gveZ.Out"
171 #Compute the number of the 'middle' slice on X axis
173 connect gveX.Out div0.In1
176 #Compute the number of the 'middle' slice on Y axis
178 connect gveY.Out div1.In1
181 #Compute the number of the 'middle' slice on Z axis
183 connect gveZ.Out div2.In1
187 new SimpleSlicer viewerUL
188 connect reader.Out viewerUL.In
189 connect viewerUL.Widget upleft.Widget1
190 #initial slice is the middle one
191 connect div0.Out viewerUL.Slice
192 #Slider size is the number of planes
193 connect gveX.Out viewerUL.SliderSize
194 set viewerUL.SliderReactiveOnTrack 1
195 set viewerUL.Orientation 0
196 set viewerUL.SliderOrientation H
197 set viewerUL.SliderTitle "Planes YZ"
200 new SimpleSlicer viewerUR
201 connect reader.Out viewerUR.In
202 connect viewerUR.Widget upright.Widget1
203 #initial slice is the middle one
204 connect div1.Out viewerUR.Slice
205 #Slider size is the number of planes
206 connect gveY.Out viewerUR.SliderSize
207 set viewerUR.SliderReactiveOnTrack 1
208 set viewerUR.SliderOrientation H
209 set viewerUR.Orientation 1
210 set viewerUR.SliderTitle "Planes XZ"
213 new SimpleSlicer viewerTD
214 connect reader.Out viewerTD.In
215 connect viewerTD.Widget downleft.Widget1
216 #initial slice is the middle one
217 connect div2.Out viewerTD.Slice
218 #Slider size is the number of planes
219 connect gveZ.Out viewerTD.SliderSize
220 set viewerTD.SliderReactiveOnTrack 1
221 set viewerTD.SliderOrientation H
222 set viewerTD.Orientation 2
223 set viewerTD.SliderTitle "Planes XY"
227 new ImagePlanes planes
228 connect reader.Out planes.In
231 connect planes.PlaneX viewer.Obs1
232 connect planes.PlaneY viewer.Obs2
233 connect planes.PlaneZ viewer.Obs3
236 set chkbox.Title "Interpolate Pixels (in '2D' images)"
238 connect chkbox.BoxChange viewerUL.BoxExecute
239 connect chkbox.BoxChange viewerUR.BoxExecute
240 connect chkbox.BoxChange viewerTD.BoxExecute
242 connect viewer.Widget downright.Widget1
243 connect chkbox.Widget downright.Widget2
245 connect chkbox.Out viewerUL.Interpolate
246 connect chkbox.Out viewerUR.Interpolate
247 connect chkbox.Out viewerTD.Interpolate
249 set main.WinTitle "demoViewing1"