Trainable Weka segmentation: Probability map but not Classiefied image produced by macro

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Trainable Weka segmentation: Probability map but not Classiefied image produced by macro

Martin Höhne
Dear all,

I try to get a Classified image created by a macro but this does not work for me. Creating a probability map works fine though.
I modified the example macro from this page

http://fiji.sc/Trainable_Weka_Segmentation#Macro_language_compatibility

to reproduce what I mean (pasted below).

If I select [1-probability map] in the beginning, the macro does what  I expect. If I select [2- classified image] nothing happens. I can manually click on "Create result" and the Classified image is created. Shouldn´t that work from the macro as well?

Thanks for helping
Martin

I´m using
(Fiji Is Just) ImageJ 2.0.0-rc-23/1.49m


***************macro to reproduce the behaviour**************

//get home directory
home=getDirectory("home");

//choice between probability maps or classified image
Dialog.create("Info");
        Dialog.addNumber("Probability map [1] or Classified image [2] ? ",1);
        Dialog.show();
        choice=Dialog.getNumber();  

// Open Leaf sample
run("Leaf (36K)");
 
// start plugin
run("Trainable Weka Segmentation");
 
// wait for the plugin to load
wait(3000);
selectWindow("Trainable Weka Segmentation v2.1.7");
 
// add one region of interest to each class
makeRectangle(367, 0, 26, 94);
call("trainableSegmentation.Weka_Segmentation.addTrace", "0", "1");
makeRectangle(186, 132, 23, 166);
call("trainableSegmentation.Weka_Segmentation.addTrace", "1", "1");
 
// train current classifier
call("trainableSegmentation.Weka_Segmentation.trainClassifier");

// save current classifier
call("trainableSegmentation.Weka_Segmentation.saveClassifier", home+File.separator+"testclassifier.model");

// close weka plugin
selectWindow("Trainable Weka Segmentation v2.1.7");
run("Close");
wait(3000);

// start plugin again
run("Trainable Weka Segmentation");
 
// wait for the plugin to load
wait(3000);
selectWindow("Trainable Weka Segmentation v2.1.7");

//load classifier
call("trainableSegmentation.Weka_Segmentation.loadClassifier", home+File.separator+"testclassifier.model");

// display probability maps or Classified image

if (choice==1) call("trainableSegmentation.Weka_Segmentation.getProbability"); //this works fine
if (choice==2) call("trainableSegmentation.Weka_Segmentation.getResult"); //this does not work
Reply | Threaded
Open this post in threaded view
|

Re: Trainable Weka segmentation: Probability map but not Classiefied image produced by macro

Nikolay Kladt
Hi Martin,

I think there is a bug in the Weka Segmentation function public static void
getResult(). If I compare this function to the public static void
getProbability(), the getProbability function sets wekaSegmentation.
applyClassifier(true) before actually getting the classified image. I did
not delve deeper into this issue and also did not add code changes to the
segmentation plugin for testing, but I used this to get the macro working
with following workaround.

This also seems to explain why following workaround in the macro works:

call("trainableSegmentation.Weka_Segmentation.getProbability"); -> to
ensure that a classified image was created. selectWindow("Trainable Weka
Segmentation v2.1.7");
call("trainableSegmentation.Weka_Segmentation.getResult");

If you now close the Probability map window in choice==2, this worked on my
machine although this makes the macro slightly longer to run as the
probability maps are calculated anyway.


Niko


On Wed, Jan 28, 2015 at 6:43 PM, Martin Höhne <[hidden email]>
wrote:

> Dear all,
>
> I try to get a Classified image created by a macro but this does not work
> for me. Creating a probability map works fine though.
> I modified the example macro from this page
>
> http://fiji.sc/Trainable_Weka_Segmentation#Macro_language_compatibility
>
> to reproduce what I mean (pasted below).
>
> If I select [1-probability map] in the beginning, the macro does what  I
> expect. If I select [2- classified image] nothing happens. I can manually
> click on "Create result" and the Classified image is created. Shouldn´t
> that
> work from the macro as well?
>
> Thanks for helping
> Martin
>
> I´m using
> (Fiji Is Just) ImageJ 2.0.0-rc-23/1.49m
>
>
> ***************macro to reproduce the behaviour**************
>
> //get home directory
> home=getDirectory("home");
>
> //choice between probability maps or classified image
> Dialog.create("Info");
>         Dialog.addNumber("Probability map [1] or Classified image [2] ?
> ",1);
>         Dialog.show();
>         choice=Dialog.getNumber();
>
> // Open Leaf sample
> run("Leaf (36K)");
>
> // start plugin
> run("Trainable Weka Segmentation");
>
> // wait for the plugin to load
> wait(3000);
> selectWindow("Trainable Weka Segmentation v2.1.7");
>
> // add one region of interest to each class
> makeRectangle(367, 0, 26, 94);
> call("trainableSegmentation.Weka_Segmentation.addTrace", "0", "1");
> makeRectangle(186, 132, 23, 166);
> call("trainableSegmentation.Weka_Segmentation.addTrace", "1", "1");
>
> // train current classifier
> call("trainableSegmentation.Weka_Segmentation.trainClassifier");
>
> // save current classifier
> call("trainableSegmentation.Weka_Segmentation.saveClassifier",
> home+File.separator+"testclassifier.model");
>
> // close weka plugin
> selectWindow("Trainable Weka Segmentation v2.1.7");
> run("Close");
> wait(3000);
>
> // start plugin again
> run("Trainable Weka Segmentation");
>
> // wait for the plugin to load
> wait(3000);
> selectWindow("Trainable Weka Segmentation v2.1.7");
>
> //load classifier
> call("trainableSegmentation.Weka_Segmentation.loadClassifier",
> home+File.separator+"testclassifier.model");
>
> // display probability maps or Classified image
>
> if (choice==1)
> call("trainableSegmentation.Weka_Segmentation.getProbability"); //this
> works
> fine
> if (choice==2) call("trainableSegmentation.Weka_Segmentation.getResult");
> //this does not work
>
>
>
> --
> View this message in context:
> http://imagej.1557.x6.nabble.com/Trainable-Weka-segmentation-Probability-map-but-not-Classiefied-image-produced-by-macro-tp5011357.html
> Sent from the ImageJ mailing list archive at Nabble.com.
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>



--
Dr. Nikolay Kladt
Image and Data Analyst, CECAD Imaging Facility
[hidden email]
++49 221 478 84028
https://www.linkedin.com/in/kladtn

CECAD Cologne - Excellent in Aging Research
Universität zu Köln
Joseph-Stelzmann Str. 26
50931 Cologne

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: Trainable Weka segmentation: Probability map but not Classiefied image produced by macro

Ignacio Arganda-Carreras
Thanks Martin and Niko for reporting this problem!

I have just fixed it and released a new version of the plugin.

Enjoy!

On Thu, Jan 29, 2015 at 10:23 AM, Nikolay Kladt <[hidden email]> wrote:

> Hi Martin,
>
> I think there is a bug in the Weka Segmentation function public static void
> getResult(). If I compare this function to the public static void
> getProbability(), the getProbability function sets wekaSegmentation.
> applyClassifier(true) before actually getting the classified image. I did
> not delve deeper into this issue and also did not add code changes to the
> segmentation plugin for testing, but I used this to get the macro working
> with following workaround.
>
> This also seems to explain why following workaround in the macro works:
>
> call("trainableSegmentation.Weka_Segmentation.getProbability"); -> to
> ensure that a classified image was created. selectWindow("Trainable Weka
> Segmentation v2.1.7");
> call("trainableSegmentation.Weka_Segmentation.getResult");
>
> If you now close the Probability map window in choice==2, this worked on my
> machine although this makes the macro slightly longer to run as the
> probability maps are calculated anyway.
>
>
> Niko
>
>
> On Wed, Jan 28, 2015 at 6:43 PM, Martin Höhne <[hidden email]>
> wrote:
>
> > Dear all,
> >
> > I try to get a Classified image created by a macro but this does not work
> > for me. Creating a probability map works fine though.
> > I modified the example macro from this page
> >
> > http://fiji.sc/Trainable_Weka_Segmentation#Macro_language_compatibility
> >
> > to reproduce what I mean (pasted below).
> >
> > If I select [1-probability map] in the beginning, the macro does what  I
> > expect. If I select [2- classified image] nothing happens. I can manually
> > click on "Create result" and the Classified image is created. Shouldn´t
> > that
> > work from the macro as well?
> >
> > Thanks for helping
> > Martin
> >
> > I´m using
> > (Fiji Is Just) ImageJ 2.0.0-rc-23/1.49m
> >
> >
> > ***************macro to reproduce the behaviour**************
> >
> > //get home directory
> > home=getDirectory("home");
> >
> > //choice between probability maps or classified image
> > Dialog.create("Info");
> >         Dialog.addNumber("Probability map [1] or Classified image [2] ?
> > ",1);
> >         Dialog.show();
> >         choice=Dialog.getNumber();
> >
> > // Open Leaf sample
> > run("Leaf (36K)");
> >
> > // start plugin
> > run("Trainable Weka Segmentation");
> >
> > // wait for the plugin to load
> > wait(3000);
> > selectWindow("Trainable Weka Segmentation v2.1.7");
> >
> > // add one region of interest to each class
> > makeRectangle(367, 0, 26, 94);
> > call("trainableSegmentation.Weka_Segmentation.addTrace", "0", "1");
> > makeRectangle(186, 132, 23, 166);
> > call("trainableSegmentation.Weka_Segmentation.addTrace", "1", "1");
> >
> > // train current classifier
> > call("trainableSegmentation.Weka_Segmentation.trainClassifier");
> >
> > // save current classifier
> > call("trainableSegmentation.Weka_Segmentation.saveClassifier",
> > home+File.separator+"testclassifier.model");
> >
> > // close weka plugin
> > selectWindow("Trainable Weka Segmentation v2.1.7");
> > run("Close");
> > wait(3000);
> >
> > // start plugin again
> > run("Trainable Weka Segmentation");
> >
> > // wait for the plugin to load
> > wait(3000);
> > selectWindow("Trainable Weka Segmentation v2.1.7");
> >
> > //load classifier
> > call("trainableSegmentation.Weka_Segmentation.loadClassifier",
> > home+File.separator+"testclassifier.model");
> >
> > // display probability maps or Classified image
> >
> > if (choice==1)
> > call("trainableSegmentation.Weka_Segmentation.getProbability"); //this
> > works
> > fine
> > if (choice==2) call("trainableSegmentation.Weka_Segmentation.getResult");
> > //this does not work
> >
> >
> >
> > --
> > View this message in context:
> >
> http://imagej.1557.x6.nabble.com/Trainable-Weka-segmentation-Probability-map-but-not-Classiefied-image-produced-by-macro-tp5011357.html
> > Sent from the ImageJ mailing list archive at Nabble.com.
> >
> > --
> > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> >
>
>
>
> --
> Dr. Nikolay Kladt
> Image and Data Analyst, CECAD Imaging Facility
> [hidden email]
> ++49 221 478 84028
> https://www.linkedin.com/in/kladtn
>
> CECAD Cologne - Excellent in Aging Research
> Universität zu Köln
> Joseph-Stelzmann Str. 26
> 50931 Cologne
>
> --
> 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
Reply | Threaded
Open this post in threaded view
|

Re: Trainable Weka segmentation: Probability map but not Classiefied image produced by macro

Nils_Kaplan
Hi Ignacio,

I still got the same problem using Trainable Weka Segmentation v.2.2.0 in the latest Fiji release, that I downloaded today. I cannot run:

call("trainableSegmentation.Weka_Segmentation.getResult");

and hence cannot save the output of a "Classified image".

Nils
Reply | Threaded
Open this post in threaded view
|

Re: Trainable Weka segmentation: Probability map but not Classiefied image produced by macro

Ignacio Arganda-Carreras-2
You're right, Nils. I introduced a bug when fixing the previous errors.

I have just found a solution and released a new version of the plugin.
Please, go ahead and update Fiji to get it.

Thanks for reporting!

ignacio

On Mon, May 4, 2015 at 2:16 PM, Nils_Kaplan <
[hidden email]> wrote:

> Hi Ignacio,
>
> I still got the same problem using Trainable Weka Segmentation v.2.2.0 in
> the latest Fiji release, that I downloaded today. I cannot run:
>
> call("trainableSegmentation.Weka_Segmentation.getResult");
>
> and hence cannot save the output of a "Classified image".
>
> Nils
>
>
>
> --
> View this message in context:
> http://imagej.1557.x6.nabble.com/Trainable-Weka-segmentation-Probability-map-but-not-Classiefied-image-produced-by-macro-tp5011357p5012703.html
> Sent from the ImageJ mailing list archive at Nabble.com.
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>



--
Ignacio Arganda-Carreras, Ph.D.
Institut Jean-Pierre Bourgin, UMR1318 INRA-AgroParisTech
Bâtiment 2
INRA Centre de Versailles-Grignon
Route de St-Cyr (RD10)
78026 Versailles Cedex France

Tel : +33 (0)1 30 83 30 00 - fax : +33 (0)1 30 83 33 19
Website: http://sites.google.com/site/iargandacarreras/
<http://biocomp.cnb.csic.es/~iarganda/index_EN.html>

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