Login  Register

Re: WEKA scripting

Posted by Ignacio Arganda-Carreras on Nov 19, 2014; 9:10pm
URL: http://imagej.273.s1.nabble.com/WEKA-scripting-tp5010546p5010557.html

Hello again, Sean,

I have just fixed the bug and made a new release of the plugin. Please go
ahead and update Fiji again.

Thanks for reporting!

ignacio

On Wed, Nov 19, 2014 at 12:17 PM, McKinney, Sean <[hidden email]> wrote:

> Hi Ignacio, thanks for the quick response.  I updated FiJi, as well as
> downloaded a fresh install and updated it, still get the same error.
>
> Sean
>
> -----Original Message-----
> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of
> Ignacio Arganda-Carreras
> Sent: Wednesday, November 19, 2014 10:38 AM
> To: [hidden email]
> Subject: Re: WEKA scripting
>
> Hello Sean,
>
> That seems a bug that was fixed in the latest release. Can you please
> update your Fiji and let me know if the problem persists?
>
> Thanks!
>
> ignacio
>
> On Wed, Nov 19, 2014 at 11:16 AM, McKinney, Sean <[hidden email]> wrote:
>
> > I was trying to use an old script, was getting an error on the
> > wekaSegmentation.trainClassifier() (ArrayIndexOutOfBoundsException).
> > I switched to the webpage example (modified to handle an issue with
> > pulling the clown.jpg) and get the same error.  My FiJi is fully up to
> > date.  Any ideas?
> >
> > Sean
> >
> > importClass(Packages.ij.IJ);
> > importClass(Packages.ij.ImagePlus);
> > importClass(Packages.ij.ImageStack);
> > importClass(Packages.ij.gui.PolygonRoi);
> > importClass(Packages.ij.plugin.Duplicator);
> > importClass(Packages.ij.process.FloatPolygon);
> > importClass(Packages.ij.process.StackConverter);
> > importClass(Packages.trainableSegmentation.FeatureStack);
> > importClass(Packages.trainableSegmentation.FeatureStackArray);
> > importClass(Packages.trainableSegmentation.WekaSegmentation);
> >   importClass(Packages.ij.WindowManager);
> >
> > var image=WindowManager.getCurrentImage();
> >
> > //var image = IJ.openImage(System.getProperty("ij.dir") +
> > "/samples/clown.jpg"); if (image.getStackSize() > 1)
> >         new StackConverter(image).convertToGray32();
> > else
> >         image.setProcessor(image.getProcessor().convertToFloat());
> > var duplicator = new Duplicator();
> > // process the image into different stacks, one per feature:
> > var smoothed = duplicator.run(image);
> > IJ.run(smoothed, "Gaussian Blur...", "radius=20"); var medianed =
> > duplicator.run(image); IJ.run(medianed, "Median...", "radius=10"); //
> > add new feature here (1/2) // the FeatureStackArray contains a
> > FeatureStack for every slice in our original image var featuresArray =
> > new FeatureStackArray(image.getStackSize(), 1, 16, false,
> >         1, 19, null);
> > // turn the list of stacks into FeatureStack instances, one per
> > original // slice. Each FeatureStack contains exactly one slice per
> feature.
> > for (var slice = 1; slice <= image.getStackSize(); slice++) {
> >         var stack = new ImageStack(image.getWidth(), image.getHeight());
> >         stack.addSlice("smoothed",
> > smoothed.getStack().getProcessor(slice));
> >         stack.addSlice("medianed",
> > medianed.getStack().getProcessor(slice));
> >         // add new feature here (2/2) and do not forget to add it with a
> >         // unique slice label!
> >         // create empty feature stack
> >         var features = new FeatureStack( stack.getWidth(),
> > stack.getHeight(), false );
> >         // set my features to the feature stack
> >         features.setStack( stack );
> >         // put my feature stack into the array
> >         featuresArray.set(features, slice - 1);
> >
> > featuresArray.setEnabledFeatures(features.getEnabledFeatures());
> > }
> > var wekaSegmentation = new WekaSegmentation(image);
> > wekaSegmentation.setFeatureStackArray(featuresArray);
> > // set examples for class 1 (= foreground) and 0 (= background))
> > function addExample(classNum, slice, xArray, yArray) {
> >         var polygon = new FloatPolygon(xArray, yArray);
> >         var roi = new PolygonRoi(polygon, PolygonRoi.FREELINE);
> >         IJ.log("roi: " + roi);
> >         wekaSegmentation.addExample(classNum, roi, slice); }
> > /*
> > * generate these with the macro:
> >         getSelectionCoordinates(x, y);
> >         print('['); Array.print(x); print('],");
> >         print('['); Array.print(y); print(']"); */ addExample(1, 1,
> >         [ 82,85,85,86,87,87,87,88,88,88,88,88,88,88,88,86,86,84,83,82,81,
> >           80,80,78,76,75,74,74,73,72,71,70,70,68,65,63,62,60,58,57,55,55,
> >           54,53,51,50,49,49,49,51,52,53,54,55,55,56,56 ],
> >         [
> 141,137,136,134,133,132,130,129,128,127,126,125,124,123,122,121,
> >
>  120,119,118,118,116,116,115,115,114,114,113,112,111,111,111,111,
> >
>  110,110,110,110,111,112,113,114,114,115,116,117,118,119,119,120,
> >           121,123,125,126,128,128,129,129,130 ] ); addExample(0, 1,
> >         [ 167,165,163,161,158,157,157,157,157,157,157,157,158 ],
> >         [ 30,29,29,29,29,29,28,26,25,24,23,22,21 ] ); // train
> > classifier if (!wekaSegmentation.trainClassifier())
> >         throw new RuntimeException("Uh oh! No training today.");
> > output = wekaSegmentation.applyClassifier(image);
> > output.show();
> >
> > --
> > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> >
>
>
>
> --
> Ignacio Arganda-Carreras, Ph.D.
> Seung's lab, 46-5065
> Department of Brain and Cognitive Sciences Massachusetts Institute of
> Technology
> 43 Vassar St.
> Cambridge, MA 02139
> USA
>
> Phone: (001) 617-324-3747
> Website: http://bioweb.cnb.csic.es/~iarganda/index_EN.html
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>



--
Ignacio Arganda-Carreras, Ph.D.
Seung's lab, 46-5065
Department of Brain and Cognitive Sciences
Massachusetts Institute of Technology
43 Vassar St.
Cambridge, MA 02139
USA

Phone: (001) 617-324-3747
Website: http://bioweb.cnb.csic.es/~iarganda/index_EN.html

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html