Phansalkar threshold bug

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

Phansalkar threshold bug

Gabriel Landini
There was a bug fixed in the computation of the Phansalkar local threshold
method. This affected the file I provide in my page, the one installed by
default in plain IJ and the one in Fiji. It does not affect the ImageJ-ops
version.

Wayne updated the class in the download package he provides, it was also
pushed into the Fiji repository (so it should appear as an update soon) and it
was also updated in my page.
http://www.mecourse.com/landinig/software/autothreshold/autothreshold.html

Please update.

Many thanks to Arttu Miettinen for reporting the bug.
Cheers

Gabriel

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

Re: Phansalkar threshold bug

Gabriel Landini
On Thursday 23 Jun 2016 09:24:55 I wrote:
> There was a bug fixed in the computation of the Phansalkar local threshold
> method. This affected the file I provide in my page, the one installed by
> default in plain IJ and the one in Fiji. It does not affect the ImageJ-ops
> version.
>
> Wayne updated the class in the download package he provides, it was also
> pushed into the Fiji repository (so it should appear as an update soon) and
> it was also updated in my page.
> http://www.mecourse.com/landinig/software/autothreshold/autothreshold.html

Hi, Just to update on this subject for those using Fiji.
The fix for Fiji is now available as an update, but note the the plugin is now
available from the Java8 update site (so you need to subscribe to it to
receive the fix).
If you stay with 1.6 it appears that it is not possible to receive the update.

Be warned that when I switched to the Java8 update site, an old install (using
Java 1.6) stopped working and had to download a new install of Fiji again,
which includes the Java 8 jdk.

So, in resume, it is probably best to install Fiji again (which now includes
Java 1.8) to make sure that you have the latest fix.

In Fiji the version number is handled automatically and is currently 1.16.3  
(elsewhere it is 1.7 as stated in the source code).

Cheers

Gabriel

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

Re: Phansalkar threshold bug

ctrueden
Hi Gabriel,

> Be warned that when I switched to the Java8 update site, an old
> install (using Java 1.6) stopped working and had to download a new
> install of Fiji again, which includes the Java 8 jdk.
>
> So, in resume, it is probably best to install Fiji again (which now
> includes Java 1.8) to make sure that you have the latest fix.

Yes, downloading a new Fiji bundle is the simplest solution.

However, you certainly can update an existing Fiji installation if you
prefer. But you need to make sure it is running Java 8 _before_ you enable
the Java-8 update site. For more details, see:

http://imagej.net/2016-05-10_-_ImageJ_HOWTO_-_Java_8,_Java_6,_Java_3D#Upgrading_an_old_installation

> In Fiji the version number is handled automatically and is currently
> 1.16.3 (elsewhere it is 1.7 as stated in the source code).

You could unify this: remove the hardcoded version in the source code, in
favor of calling org.scijava.util.VersionUtils.getVersion(Class) to
retrieve the version from the JAR manifest or POM.

Regards,
Curtis

--
Curtis Rueden
LOCI software architect - http://loci.wisc.edu/software
ImageJ2 lead, Fiji maintainer - http://imagej.net/User:Rueden
Did you know ImageJ has a forum? http://forum.imagej.net/


On Fri, Jul 1, 2016 at 5:21 AM, Gabriel Landini <[hidden email]>
wrote:

> On Thursday 23 Jun 2016 09:24:55 I wrote:
> > There was a bug fixed in the computation of the Phansalkar local
> threshold
> > method. This affected the file I provide in my page, the one installed by
> > default in plain IJ and the one in Fiji. It does not affect the
> ImageJ-ops
> > version.
> >
> > Wayne updated the class in the download package he provides, it was also
> > pushed into the Fiji repository (so it should appear as an update soon)
> and
> > it was also updated in my page.
> >
> http://www.mecourse.com/landinig/software/autothreshold/autothreshold.html
>
> Hi, Just to update on this subject for those using Fiji.
> The fix for Fiji is now available as an update, but note the the plugin is
> now
> available from the Java8 update site (so you need to subscribe to it to
> receive the fix).
> If you stay with 1.6 it appears that it is not possible to receive the
> update.
>
> Be warned that when I switched to the Java8 update site, an old install
> (using
> Java 1.6) stopped working and had to download a new install of Fiji again,
> which includes the Java 8 jdk.
>
> So, in resume, it is probably best to install Fiji again (which now
> includes
> Java 1.8) to make sure that you have the latest fix.
>
> In Fiji the version number is handled automatically and is currently 1.16.3
> (elsewhere it is 1.7 as stated in the source code).
>
> Cheers
>
> Gabriel
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>

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

Re: Phansalkar threshold bug

Kenneth Sloan-2
Perhaps I missed it (if so, I apologize) - but, since I’ve just finished processing some 1500 images with a plugin that
depends on Phansalkar…can someone please give me a gloss on what the bug is and how it manifests itself?

The good/bad news is that the Phansalkar thresholding is a preliminary step - followed immediately by manual editing.
On the one hand, my collaborator would *not* be pleased with the prospect of re-processing all 1500 images again.
On the other hand, whatever errors were introduced were probably fixed in the manual editing.

But, it would be nice to know precisely what the problem is.

Please?


Kenneth Sloan
[hidden email] <mailto:[hidden email]>
Vision is the art of seeing what is invisible to others.

> On Jul 1, 2016, at 08:54, Curtis Rueden <[hidden email]> wrote:
>
> Hi Gabriel,
>
>> Be warned that when I switched to the Java8 update site, an old
>> install (using Java 1.6) stopped working and had to download a new
>> install of Fiji again, which includes the Java 8 jdk.
>>
>> So, in resume, it is probably best to install Fiji again (which now
>> includes Java 1.8) to make sure that you have the latest fix.
>
> Yes, downloading a new Fiji bundle is the simplest solution.
>
> However, you certainly can update an existing Fiji installation if you
> prefer. But you need to make sure it is running Java 8 _before_ you enable
> the Java-8 update site. For more details, see:
>
> http://imagej.net/2016-05-10_-_ImageJ_HOWTO_-_Java_8,_Java_6,_Java_3D#Upgrading_an_old_installation
>
>> In Fiji the version number is handled automatically and is currently
>> 1.16.3 (elsewhere it is 1.7 as stated in the source code).
>
> You could unify this: remove the hardcoded version in the source code, in
> favor of calling org.scijava.util.VersionUtils.getVersion(Class) to
> retrieve the version from the JAR manifest or POM.
>
> Regards,
> Curtis
>
> --
> Curtis Rueden
> LOCI software architect - http://loci.wisc.edu/software
> ImageJ2 lead, Fiji maintainer - http://imagej.net/User:Rueden
> Did you know ImageJ has a forum? http://forum.imagej.net/
>
>
> On Fri, Jul 1, 2016 at 5:21 AM, Gabriel Landini <[hidden email]>
> wrote:
>
>> On Thursday 23 Jun 2016 09:24:55 I wrote:
>>> There was a bug fixed in the computation of the Phansalkar local
>> threshold
>>> method. This affected the file I provide in my page, the one installed by
>>> default in plain IJ and the one in Fiji. It does not affect the
>> ImageJ-ops
>>> version.
>>>
>>> Wayne updated the class in the download package he provides, it was also
>>> pushed into the Fiji repository (so it should appear as an update soon)
>> and
>>> it was also updated in my page.
>>>
>> http://www.mecourse.com/landinig/software/autothreshold/autothreshold.html
>>
>> Hi, Just to update on this subject for those using Fiji.
>> The fix for Fiji is now available as an update, but note the the plugin is
>> now
>> available from the Java8 update site (so you need to subscribe to it to
>> receive the fix).
>> If you stay with 1.6 it appears that it is not possible to receive the
>> update.
>>
>> Be warned that when I switched to the Java8 update site, an old install
>> (using
>> Java 1.6) stopped working and had to download a new install of Fiji again,
>> which includes the Java 8 jdk.
>>
>> So, in resume, it is probably best to install Fiji again (which now
>> includes
>> Java 1.8) to make sure that you have the latest fix.
>>
>> In Fiji the version number is handled automatically and is currently 1.16.3
>> (elsewhere it is 1.7 as stated in the source code).
>>
>> Cheers
>>
>> Gabriel
>>
>> --
>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>>
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html


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

Re: Phansalkar threshold bug

ctrueden
Hi Ken,

The standard deviation was being computed incorrectly.

https://github.com/fiji/Auto_Threshold/commit/f5ad12b1edebf79c5ef656c0c7eeb83eb282952a

Regards,
Curtis

--
Curtis Rueden
LOCI software architect - http://loci.wisc.edu/software
ImageJ2 lead, Fiji maintainer - http://imagej.net/User:Rueden
Did you know ImageJ has a forum? http://forum.imagej.net/


On Fri, Jul 1, 2016 at 11:32 PM, Kenneth Sloan <[hidden email]>
wrote:

> Perhaps I missed it (if so, I apologize) - but, since I’ve just finished
> processing some 1500 images with a plugin that
> depends on Phansalkar…can someone please give me a gloss on what the bug
> is and how it manifests itself?
>
> The good/bad news is that the Phansalkar thresholding is a preliminary
> step - followed immediately by manual editing.
> On the one hand, my collaborator would *not* be pleased with the prospect
> of re-processing all 1500 images again.
> On the other hand, whatever errors were introduced were probably fixed in
> the manual editing.
>
> But, it would be nice to know precisely what the problem is.
>
> Please?
>
> —
> Kenneth Sloan
> [hidden email] <mailto:[hidden email]>
> Vision is the art of seeing what is invisible to others.
>
> > On Jul 1, 2016, at 08:54, Curtis Rueden <[hidden email]> wrote:
> >
> > Hi Gabriel,
> >
> >> Be warned that when I switched to the Java8 update site, an old
> >> install (using Java 1.6) stopped working and had to download a new
> >> install of Fiji again, which includes the Java 8 jdk.
> >>
> >> So, in resume, it is probably best to install Fiji again (which now
> >> includes Java 1.8) to make sure that you have the latest fix.
> >
> > Yes, downloading a new Fiji bundle is the simplest solution.
> >
> > However, you certainly can update an existing Fiji installation if you
> > prefer. But you need to make sure it is running Java 8 _before_ you
> enable
> > the Java-8 update site. For more details, see:
> >
> >
> http://imagej.net/2016-05-10_-_ImageJ_HOWTO_-_Java_8,_Java_6,_Java_3D#Upgrading_an_old_installation
> >
> >> In Fiji the version number is handled automatically and is currently
> >> 1.16.3 (elsewhere it is 1.7 as stated in the source code).
> >
> > You could unify this: remove the hardcoded version in the source code, in
> > favor of calling org.scijava.util.VersionUtils.getVersion(Class) to
> > retrieve the version from the JAR manifest or POM.
> >
> > Regards,
> > Curtis
> >
> > --
> > Curtis Rueden
> > LOCI software architect - http://loci.wisc.edu/software
> > ImageJ2 lead, Fiji maintainer - http://imagej.net/User:Rueden
> > Did you know ImageJ has a forum? http://forum.imagej.net/
> >
> >
> > On Fri, Jul 1, 2016 at 5:21 AM, Gabriel Landini <[hidden email]>
> > wrote:
> >
> >> On Thursday 23 Jun 2016 09:24:55 I wrote:
> >>> There was a bug fixed in the computation of the Phansalkar local
> >> threshold
> >>> method. This affected the file I provide in my page, the one installed
> by
> >>> default in plain IJ and the one in Fiji. It does not affect the
> >> ImageJ-ops
> >>> version.
> >>>
> >>> Wayne updated the class in the download package he provides, it was
> also
> >>> pushed into the Fiji repository (so it should appear as an update soon)
> >> and
> >>> it was also updated in my page.
> >>>
> >>
> http://www.mecourse.com/landinig/software/autothreshold/autothreshold.html
> >>
> >> Hi, Just to update on this subject for those using Fiji.
> >> The fix for Fiji is now available as an update, but note the the plugin
> is
> >> now
> >> available from the Java8 update site (so you need to subscribe to it to
> >> receive the fix).
> >> If you stay with 1.6 it appears that it is not possible to receive the
> >> update.
> >>
> >> Be warned that when I switched to the Java8 update site, an old install
> >> (using
> >> Java 1.6) stopped working and had to download a new install of Fiji
> again,
> >> which includes the Java 8 jdk.
> >>
> >> So, in resume, it is probably best to install Fiji again (which now
> >> includes
> >> Java 1.8) to make sure that you have the latest fix.
> >>
> >> In Fiji the version number is handled automatically and is currently
> 1.16.3
> >> (elsewhere it is 1.7 as stated in the source code).
> >>
> >> Cheers
> >>
> >> Gabriel
> >>
> >> --
> >> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> >>
> >
> > --
> > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>

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

Re: Phansalkar threshold bug

Gabriel Landini
In reply to this post by Kenneth Sloan-2
On Friday 01 Jul 2016 23:32:26 Kenneth Sloan wrote:
> Perhaps I missed it (if so, I apologize) - but, since I’ve just finished
> processing some 1500 images with a plugin that depends on Phansalkar…can
> someone please give me a gloss on what the bug is and how it manifests
> itself?

Hi Kenneth,
Some details. I received the report, fixed it the next day, uploaded to my
page, sent the fix to Wayne (he includes the plugin in the default IJ
download) and fixed and pushed the commit for Fiji plugin. I then reported it
here:

https://list.nih.gov/cgi-bin/wa.exe?A2=ind1606&L=IMAGEJ&F=&S=&P=99376

About the bug itself, there was a missing "t" when calling the method ".sqrt".
This was very unfortunate; it was not picked up as a syntax error because
there also exists a method called "sqr". So instead of computing the standard
deviation as the sqrt(variance) the method computed the square of the
variance. Testing the old an new versions with the default setting radius of
15 on the Lena image, the difference was not as great as I feared it would be.
I think this may be because of the function of the SD in the formula and the
small size of the neighbourhood, where greyscale values might not vary that
much.

I am so sorry that this has caused you extra hassle, and I know that this is
no consolation, but I also had to repeat processing on a number of  images
myself.
I am specially grateful to Arttu Miettinen for spotting the bug and letting me
know immediately.  For me it was also a reminder of the benefits of open
source software, where many eyes can scrutinize code and spot things that are
missed by others.

Cheers

Gabriel

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