Posted by
Maurice Argive on
URL: http://imagej.273.s1.nabble.com/Weka-3D-Trainable-Segmentation-in-Java-code-tp5019213p5019223.html
Hi Ignacio,
Thanks for the info. I created a new 3D model just to be sure and ran it in
the code. Now I'm getting this exception:
Read class name: class 1
Read class name: class 2
Error while adjusting data!
java.lang.NullPointerException
trainableSegmentation.WekaSegmentation.setEnabledFeatures(WekaSegmentation.java:6420)
trainableSegmentation.WekaSegmentation.adjustSegmentationStateToData(WekaSegmentation.java:4169)
trainableSegmentation.WekaSegmentation.loadClassifier(WekaSegmentation.java:717)
ClusterClassify.main(ClusterClassify.java:54)
at
trainableSegmentation.WekaSegmentation.setEnabledFeatures(WekaSegmentation.java:6420)
at
trainableSegmentation.WekaSegmentation.adjustSegmentationStateToData(WekaSegmentation.java:4169)
at
trainableSegmentation.WekaSegmentation.loadClassifier(WekaSegmentation.java:717)
at ClusterClassify.main(ClusterClassify.java:54)
Apply Classifier
Exception in thread "main" java.lang.NullPointerException
trainableSegmentation.WekaSegmentation.applyClassifier(WekaSegmentation.java:4709)
ClusterClassify.main(ClusterClassify.java:60)
at
trainableSegmentation.WekaSegmentation.applyClassifier(WekaSegmentation.java:4709)
at ClusterClassify.main(ClusterClassify.java:60)
Any ideas on what could be causing this? Is there something else I need to
do? The sample data I'm running classifies correctly when using the Fiji
plugin.
Thanks!
Maurice
On Wed, Aug 16, 2017 at 7:08 AM, Ignacio Arganda-Carreras <
[hidden email]> wrote:
> Hello Maurice,
>
> I tried to replicate your error but I couldn't. Are you sure you're not
> trying to load a classifier trained on 2D features instead of one trained
> using 3D features? Your code worked for me.
>
> And by the way, you don't need to set the training image anymore if you are
> just loading a classifier and applying it to a new image. Have a look at
> this example in the wiki
> <
http://imagej.net/Scripting_the_Trainable_Weka_> Segmentation#Example:_apply_classifier_to_all_images_in_folder>
> .
>
> Cheers!
>
> On Wed, Aug 16, 2017 at 4:43 AM, Maurice Argive <
[hidden email]>
> wrote:
>
> > I'm using the following code to classify images from the command line:
> >
> > ImagePlus image = IJ.openImage("image-file-to-be-classified.tif");
> > WekaSegmentation ws = new WekaSegmentation(image);
> > ws.loadClassifier("saved-model-file.model");
> > ImagePlus output = ws.applyClassifier(image, 0, false);
> > IJ.save(output, "output.tif");
> > output.close();
> > image.close();
> >
> > and this has been working well for me for a few years. I noticed in a
> > recent Fiji upgrade that there is now a 3D menu option. I'm trying to use
> > that feature in code so I use:
> >
> > ImagePlus image = IJ.openImage("image-file-to-be-classified.tif");
> > WekaSegmentation ws = new WekaSegmentation(true);
> > ws.setTrainingImage(image);
> > ws.loadClassifier("saved-model-file.model");
> > ImagePlus output = ws.applyClassifier(image, 0, false);
> > IJ.save(output, "output.tif");
> > output.close();
> > image.close();
> >
> > and it seems to be working until the applyClassifier method runs. I then
> > get a number of HeadlessExceptions that I never got before. Is there a
> way
> > to run the 3D segmentation in code without the GUI?
> >
> > Thanks!
> >
> > --
> > ImageJ mailing list:
http://imagej.nih.gov/ij/list.html> >
>
>
>
> --
> Ignacio Arganda-Carreras, Ph.D.
> Ikerbasque Research Fellow
> Departamento de Ciencia de la Computacion e Inteligencia Artificial
> Facultad de Informatica, Universidad del Pais Vasco
> Paseo de Manuel Lardizabal, 1
> 20018 Donostia-San Sebastian
> Guipuzcoa, Spain
>
> Phone : +34 943 01 73 25
> Website:
http://sites.google.com/site/iargandacarreras/>
> --
> ImageJ mailing list:
http://imagej.nih.gov/ij/list.html>
--
ImageJ mailing list:
http://imagej.nih.gov/ij/list.html