1 description "Interactive Segmenting of hair X-Ray images"
2 author "info-dev at creatis.insa-lyon.fr"
14 new FileSelector openFileDialog
16 new ImageReader reader
17 connect openFileDialog.Out reader.In
19 #Get image dimensions, ...
20 new ImageProperties mc
21 connect reader.Out mc.In
23 #Get number of planes (Z)
24 new GetVectorIntElement gveZ
25 connect mc.Size gveZ.In
28 #Compute the number of the 'middle' slice on Z axis
30 connect gveZ.Out div2.In1
33 #---------------------------------------------------------------------
36 set slider.Title "Slice"
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
44 new Slider lowerThresholdSlider
45 set lowerThresholdSlider.Title "LowerThreshold"
46 set lowerThresholdSlider.Max 50
47 set lowerThresholdSlider.In 20
48 set lowerThresholdSlider.ChangeResolution 1
50 new Slider upperThresholdSlider
51 set upperThresholdSlider.Title "UpperThreshold"
52 set upperThresholdSlider.Max 50
53 set upperThresholdSlider.In 500
54 set upperThresholdSlider.ChangeResolution 1
56 new Slider smoothSlider
57 set smoothSlider.Title "Smooth"
58 set smoothSlider.Max 10
60 set smoothSlider.ChangeResolution 1
62 new CommandButton refresh
63 set refresh.Label "Refresh"
64 set refresh.In "exec isoextractorthreshold;exec isoextractorsmooth;exec mainSplit"
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
72 #---------------------------------------------------------------------
74 new Viewer2D viewer2DImageOriginal
75 connect reader.Out viewer2DImageOriginal.In
76 connect slider.Out viewer2DImageOriginal.Slice
77 connect slider.BoxChange viewer2DImageOriginal.BoxExecute
79 #---------------------------------------------------------------------
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
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
94 #---------------------------------------------------------------------
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
103 new Viewer2D viewer2DImageSmooth
104 connect smooth.Out viewer2DImageSmooth.In
105 connect slider.Out viewer2DImageSmooth.Slice
106 connect slider.BoxChange viewer2DImageSmooth.BoxExecute
109 #---------------------------------------------------------------------
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
118 new ColourSelectorButton colourLower
119 set colourLower.In "0.5 0 0.5"
121 new ColourSelectorButton colourUpper
122 set colourUpper.In "0.5 0.5 0.0"
124 #---------------------------------------------------------------------
126 new Viewer3D viewernvImagethreshold3D
127 # set viewernvImagethreshold3D.nTypeView "5"
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
137 #---------------------------------------------------------------------
138 new Viewer3D viewernvImageSmooth3D
139 # set viewernvImageSmooth3D.nTypeView "5"
140 //connect refreshimages.Out viewernvImageSmooth3D.BoxExecute
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
150 #---------------------------------------------------------------------
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
158 new LayoutLine sliderLayout
159 set sliderLayout.Orientation V
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
167 new LayoutLine toolLayout
168 set toolLayout.Orientation H
169 connect sliderLayout.Widget toolLayout.Widget1
170 connect buttonLayout.Widget toolLayout.Widget2
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"
178 #---------------------------------------------------------------------
179 new LayoutSplit splitUp
180 connect toolLayout.Widget splitUp.Widget1
181 connect upLayout.Widget splitUp.Widget2
183 connect slider.Widget sliderLayout.Widget1
184 connect lowerThresholdSlider.Widget sliderLayout.Widget2
185 connect upperThresholdSlider.Widget sliderLayout.Widget3
186 connect smoothSlider.Widget sliderLayout.Widget4
189 new LayoutSplit mainSplit
190 set mainSplit.Proportion 30
191 connect splitUp.Widget mainSplit.Widget1
192 connect downLayout.Widget mainSplit.Widget2
194 #---------------------------------------------------------------------
196 exec isoextractorthreshold
197 exec isoextractorsmooth