X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=packages%2Fdemo%2Fbbs%2Fappli%2FdemoViewingHairXRayImages.bbs;fp=packages%2Fdemo%2Fbbs%2Fappli%2FdemoViewingHairXRayImages.bbs;h=9b9e3cd413392bdb435e705e1fbfd0a39d6dc7dc;hb=6444b3a9a11c353fbd62af41f741512fd63c5603;hp=0000000000000000000000000000000000000000;hpb=9f6d1a6420a64127d9b199fc0f55c01e85485c39;p=bbtk.git diff --git a/packages/demo/bbs/appli/demoViewingHairXRayImages.bbs b/packages/demo/bbs/appli/demoViewingHairXRayImages.bbs new file mode 100644 index 0000000..9b9e3cd --- /dev/null +++ b/packages/demo/bbs/appli/demoViewingHairXRayImages.bbs @@ -0,0 +1,198 @@ +description "Interactive Segmenting of hair X-Ray images" +author "info-dev at creatis.insa-lyon.fr" +category "demo" + +// 3 Slices, 2 volumes + +include std +include vtk +include wx +include itk +include itkvtk +include wxvtk + +new FileSelector openFileDialog + +new ImageReader reader + connect openFileDialog.Out reader.In + +#Get image dimensions, ... +new ImageProperties mc + connect reader.Out mc.In + +#Get number of planes (Z) +new GetVectorIntElement gveZ + connect mc.Size gveZ.In + set gveZ.I 2 + +#Compute the number of the 'middle' slice on Z axis +new Div div2 + connect gveZ.Out div2.In1 + set div2.In2 2 + +#--------------------------------------------------------------------- + +new Slider slider + set slider.Title "Slice" + + #Slider size is the number of planes + connect gveZ.Out slider.Max + #initial slice is the middle one + connect div2.Out slider.In + set slider.ChangeResolution 1 + +new Slider lowerThresholdSlider + set lowerThresholdSlider.Title "LowerThreshold" + set lowerThresholdSlider.Max 50 + set lowerThresholdSlider.In 20 + set lowerThresholdSlider.ChangeResolution 1 + +new Slider upperThresholdSlider + set upperThresholdSlider.Title "UpperThreshold" + set upperThresholdSlider.Max 50 + set upperThresholdSlider.In 500 + set upperThresholdSlider.ChangeResolution 1 + +new Slider smoothSlider + set smoothSlider.Title "Smooth" + set smoothSlider.Max 10 + set smoothSlider.In 1 + set smoothSlider.ChangeResolution 1 + +new CommandButton refresh + set refresh.Label "Refresh" + set refresh.In "exec isoextractorthreshold;exec isoextractorsmooth;exec mainSplit" + +new MultipleInputs refreshimages + //connect slider.BoxChange refreshimages.In1 + connect upperThresholdSlider.BoxChange refreshimages.In2 + connect lowerThresholdSlider.BoxChange refreshimages.In3 + connect smoothSlider.BoxChange refreshimages.In4 + +#--------------------------------------------------------------------- + +new Viewer2D viewer2DImageOriginal + connect reader.Out viewer2DImageOriginal.In + connect slider.Out viewer2DImageOriginal.Slice + connect slider.BoxChange viewer2DImageOriginal.BoxExecute + +#--------------------------------------------------------------------- + +new BinaryThresholdImageFilter threshold + connect upperThresholdSlider.Out threshold.UpperThreshold + connect lowerThresholdSlider.Out threshold.LowerThreshold + set threshold.InsideValue 255 + set threshold.OutsideValue 0 + connect reader.Out threshold.In + +new Viewer2D viewer2DImageSegmented + connect threshold.Out viewer2DImageSegmented.In + connect slider.Out viewer2DImageSegmented.Slice +// connect slider.BoxChange viewer2DImageSegmented.BoxExecute + connect refreshimages.Out viewer2DImageSegmented.BoxExecute + +#--------------------------------------------------------------------- + +new ImageGaussianSmooth smooth + connect threshold.Out smooth.In + connect smoothSlider.Out smooth.StdDevX + connect smoothSlider.Out smooth.StdDevY + connect smoothSlider.Out smooth.StdDevZ + + +new Viewer2D viewer2DImageSmooth + connect smooth.Out viewer2DImageSmooth.In + connect slider.Out viewer2DImageSmooth.Slice + connect slider.BoxChange viewer2DImageSmooth.BoxExecute + + +#--------------------------------------------------------------------- + +new LayoutLine upLayout + set upLayout.Orientation H + connect viewer2DImageOriginal.Widget upLayout.Widget1 + connect viewer2DImageSegmented.Widget upLayout.Widget2 + connect viewer2DImageSmooth.Widget upLayout.Widget3 + + +new ColourSelectorButton colourLower + set colourLower.In "0.5 0 0.5" + +new ColourSelectorButton colourUpper + set colourUpper.In "0.5 0.5 0.0" + +#--------------------------------------------------------------------- + +new Viewer3D viewernvImagethreshold3D +# set viewernvImagethreshold3D.nTypeView "5" + +new IsoSurfaceExtractor isoextractorthreshold + connect threshold.Out isoextractorthreshold.In + set isoextractorthreshold.Opacity 1 + set isoextractorthreshold.Isovalue 10 + connect colourUpper.Out isoextractorthreshold.Colour + connect viewernvImagethreshold3D.Renderer isoextractorthreshold.Renderer + + +#--------------------------------------------------------------------- +new Viewer3D viewernvImageSmooth3D +# set viewernvImageSmooth3D.nTypeView "5" + //connect refreshimages.Out viewernvImageSmooth3D.BoxExecute + +new IsoSurfaceExtractor isoextractorsmooth + connect smooth.Out isoextractorsmooth.In + set isoextractorsmooth.Opacity 1 + set isoextractorsmooth.Isovalue 10 + connect colourLower.Out isoextractorsmooth.Colour + connect viewernvImageSmooth3D.Renderer isoextractorsmooth.Renderer + + +#--------------------------------------------------------------------- + +new LayoutSplit downLayout + set downLayout.Orientation H + set downLayout.Proportion 50 + connect viewernvImagethreshold3D.Widget downLayout.Widget1 + connect viewernvImageSmooth3D.Widget downLayout.Widget2 + +new LayoutLine sliderLayout + set sliderLayout.Orientation V + +new LayoutLine buttonLayout + set buttonLayout.Orientation V + connect colourLower.Widget buttonLayout.Widget1 + connect colourUpper.Widget buttonLayout.Widget2 + connect refresh.Widget buttonLayout.Widget3 + +new LayoutLine toolLayout + set toolLayout.Orientation H + connect sliderLayout.Widget toolLayout.Widget1 + connect buttonLayout.Widget toolLayout.Widget2 + + +//new ImageWriter imw +// connect smooth.Out imw.In + connect refresh.BoxChange smooth.BoxExecute +// set imw.Filename "/home/jpr/t8_eau_smooth.mhd" + +#--------------------------------------------------------------------- +new LayoutSplit splitUp + connect toolLayout.Widget splitUp.Widget1 + connect upLayout.Widget splitUp.Widget2 + + connect slider.Widget sliderLayout.Widget1 + connect lowerThresholdSlider.Widget sliderLayout.Widget2 + connect upperThresholdSlider.Widget sliderLayout.Widget3 + connect smoothSlider.Widget sliderLayout.Widget4 + + +new LayoutSplit mainSplit + set mainSplit.Proportion 30 + connect splitUp.Widget mainSplit.Widget1 + connect downLayout.Widget mainSplit.Widget2 + +#--------------------------------------------------------------------- + +exec isoextractorthreshold +exec isoextractorsmooth +exec mainSplit