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 |
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 |
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 |
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 |
Free forum by Nabble | Edit this page |