Deconvolution with ImageJ

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

Deconvolution with ImageJ

lechristophe
Hi all,

I'm currently getting infos about deconvolution solutions (for a 4-5D
microscope I'm setting up as a postdoc project). I know there are
three plugins that seem to propose deconvolution in ImageJ, namely
DeconvolutionJ from Nick Linnenbrügger (last update 2002, not much
informations), IterativeDeconvolve3D from Bob Dougherty at Optinav
(last update April 2005, seems to be used in aeroacoustics), and 3D
Deconvolution by Pierre Besson at BIG (last updated March 2005, seems
aimed at transmission images).

I was wondering if somebody tested these plugins comparatively and
could tell me about their respective performance and differences. If
not, do anyone use these plugin now ? I'm interested in deconvolving
3D stacks of fluorescence widefield images. Are you aware of any
active or currently-developed plugin that could be used ?

On a related note, do anyone still use the free XCOSM deconvolution
software ? Dr Conchello, who developed it, is announcing a new
deconvolution software called ORMFCOSM for quite a while now. Is this
software still in development ?

More generally, it seems like there are very few free options for
free/open source deconvolution software. I was wondering if it has to
do with every specialist in this field being sponsored by a company
developing commercial software (I'm thinking about Huygens, Autoquant
etc...).
Reply | Threaded
Open this post in threaded view
|

Re: Deconvolution with ImageJ

S.T.Ligthart
-----Original Message-----
From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of
Christophe Leterrier
Sent: dinsdag 17 oktober 2006 15:16
To: [hidden email]
Subject: Deconvolution with ImageJ

<...>

More generally, it seems like there are very few free options for
free/open source deconvolution software. I was wondering if it has to
do with every specialist in this field being sponsored by a company
developing commercial software (I'm thinking about Huygens, Autoquant
etc...).


Dear Christophe,

I think it is a great challenge to program 3D deconvolution software in
Java (with for instance the lucy-richardson iterative process) and let
it compete with commercial available software.

I'm using the Huygens pro software with 2 processor and 64bit support.
Still, it takes me 10 minutes to deconvolve a stack with dimensions of
600X450X45 (XYZ) pixels. I think Java cannot compete with this dedicated
software in terms of speed, but I am no expert. Can anyone who is really
into the subject of computing speeds comment on this? It is al about 3D
Fourier transforms, can Java compete in this area?

Best Regards,

Sjoerd Ligthart
Reply | Threaded
Open this post in threaded view
|

Re: Deconvolution with ImageJ

ctrueden
Hi,

Java has an undeserved bad rap when it comes to performance, left over
from when Java was first released many years ago. Sure, it was slow
then, but not so much anymore.

There is no reason deconvolution in an open source Java application
cannot be as fast as in a commercial application. Java 1.4.2 performs
most mathematical operations as fast or faster than C++ and C#
(http://www.osnews.com/story.php?news_id=5602&page=3). And Java 1.5
seems quite similar to 1.4.2 in terms of performance
(http://www.shudo.net/jit/perf/). Even Java memory allocation and
garbage collection is reportedly faster than direct memory management
in C++ (http://www-128.ibm.com/developerworks/java/library/j-jtp09275.html).
And Java 1.6 will supposedly have substantial speed improvements,
especially for Java2D on Mac OS X
(http://www.javalobby.org/java/forums/t66270.html).

-Curtis

On 10/17/06, Ligthart, Sjoerd (TNW) <[hidden email]> wrote:

> -----Original Message-----
> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of
> Christophe Leterrier
> Sent: dinsdag 17 oktober 2006 15:16
> To: [hidden email]
> Subject: Deconvolution with ImageJ
>
> <...>
>
> More generally, it seems like there are very few free options for
> free/open source deconvolution software. I was wondering if it has to
> do with every specialist in this field being sponsored by a company
> developing commercial software (I'm thinking about Huygens, Autoquant
> etc...).
>
>
> Dear Christophe,
>
> I think it is a great challenge to program 3D deconvolution software in
> Java (with for instance the lucy-richardson iterative process) and let
> it compete with commercial available software.
>
> I'm using the Huygens pro software with 2 processor and 64bit support.
> Still, it takes me 10 minutes to deconvolve a stack with dimensions of
> 600X450X45 (XYZ) pixels. I think Java cannot compete with this dedicated
> software in terms of speed, but I am no expert. Can anyone who is really
> into the subject of computing speeds comment on this? It is al about 3D
> Fourier transforms, can Java compete in this area?
>
> Best Regards,
>
> Sjoerd Ligthart
>
Reply | Threaded
Open this post in threaded view
|

Antwort: Re: Deconvolution with ImageJ

Joachim Wesner
Hi,

even if I doubt that a "straight" Java implementation of a 3D FFT will be
as efficient as a highly optimized and self-adaptive
package like FFTW (See www.fftw.org, it also uses SIMD instructions as
AltiVec, SSE, 3dNow etc)., Bob Dougherty reported
very good timing results on the Luxembourg conference for his 3D FFT
routines that seem comparable to implementations
in other languages. Java's JIT "hotspot" optimization seems to be able to
acchieve very good runtime optimizations that
many more "static" compilers might miss.

Joachim Wesner



|---------+--------------------------->
|         |           Curtis Rueden   |
|         |           <[hidden email]|
|         |           DU>             |
|         |           Gesendet von:   |
|         |           ImageJ Interest |
|         |           Group           |
|         |           <[hidden email]|
|         |           .GOV>           |
|         |                           |
|         |                           |
|         |           17.10.2006 16:36|
|         |           Bitte antworten |
|         |           an ImageJ       |
|         |           Interest Group  |
|---------+--------------------------->
  >-------------------------------------------------------------------------------------------------------------------------------|
  |                                                                                                                               |
  |        An:      [hidden email]                                                                                           |
  |        Kopie:   (Blindkopie: Joachim Wesner/DEWET/LMSCentral/Leica)                                                           |
  |        Thema:   Re: Deconvolution with ImageJ                                                                                 |
  >-------------------------------------------------------------------------------------------------------------------------------|




Hi,

Java has an undeserved bad rap when it comes to performance, left over
from when Java was first released many years ago. Sure, it was slow
then, but not so much anymore.

There is no reason deconvolution in an open source Java application
cannot be as fast as in a commercial application. Java 1.4.2 performs
most mathematical operations as fast or faster than C++ and C#
(http://www.osnews.com/story.php?news_id=5602&page=3). And Java 1.5
seems quite similar to 1.4.2 in terms of performance
(http://www.shudo.net/jit/perf/). Even Java memory allocation and
garbage collection is reportedly faster than direct memory management
in C++ (http://www-128.ibm.com/developerworks/java/library/j-jtp09275.html
).
And Java 1.6 will supposedly have substantial speed improvements,
especially for Java2D on Mac OS X
(http://www.javalobby.org/java/forums/t66270.html).

-Curtis

On 10/17/06, Ligthart, Sjoerd (TNW) <[hidden email]> wrote:

> -----Original Message-----
> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of
> Christophe Leterrier
> Sent: dinsdag 17 oktober 2006 15:16
> To: [hidden email]
> Subject: Deconvolution with ImageJ
>
> <...>
>
> More generally, it seems like there are very few free options for
> free/open source deconvolution software. I was wondering if it has to
> do with every specialist in this field being sponsored by a company
> developing commercial software (I'm thinking about Huygens, Autoquant
> etc...).
>
>
> Dear Christophe,
>
> I think it is a great challenge to program 3D deconvolution software in
> Java (with for instance the lucy-richardson iterative process) and let
> it compete with commercial available software.
>
> I'm using the Huygens pro software with 2 processor and 64bit support.
> Still, it takes me 10 minutes to deconvolve a stack with dimensions of
> 600X450X45 (XYZ) pixels. I think Java cannot compete with this dedicated
> software in terms of speed, but I am no expert. Can anyone who is really
> into the subject of computing speeds comment on this? It is al about 3D
> Fourier transforms, can Java compete in this area?
>
> Best Regards,
>
> Sjoerd Ligthart
>



______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email 
______________________________________________________________________
Reply | Threaded
Open this post in threaded view
|

Re: Deconvolution with ImageJ

Daniel White
In reply to this post by lechristophe
On 18 Oct 2006, at 07:01, IMAGEJ automatic digest system wrote:

> Date:    Tue, 17 Oct 2006 09:36:26 -0500
> From:    Curtis Rueden <[hidden email]>
> Subject: Re: Deconvolution with ImageJ
>
> Hi,
>
> Java has an undeserved bad rap when it comes to performance, left over
> from when Java was first released many years ago. Sure, it was slow
> then, but not so much anymore.
>
> There is no reason deconvolution in an open source Java application
> cannot be as fast as in a commercial application. Java 1.4.2 performs
> most mathematical operations as fast or faster than C++ and C#
> (http://www.osnews.com/story.php?news_id=5602&page=3). And Java 1.5
> seems quite similar to 1.4.2 in terms of performance
> (http://www.shudo.net/jit/perf/). Even Java memory allocation and
> garbage collection is reportedly faster than direct memory management
> in C++ (http://www-128.ibm.com/developerworks/java/library/j- 
> jtp09275.html).
> And Java 1.6 will supposedly have substantial speed improvements,
> especially for Java2D on Mac OS X
> (http://www.javalobby.org/java/forums/t66270.html).
>
> -Curtis

What about Java support for multiple processors/cores?
New computers will nearly all have them soon,
and higher end workstations might have many processors.
For instance the MacPro already has 4, and that might be 8 soon.
Is Java multithreaded?

What about altivec/SSE?
Does java use these vector processor extensions
that are available an our modern CPUs to speed things up
by vectorisation of loops?

At the BioImageXD project we have started the job of
using converting the java deconvolution code for
fluorescence images into C++, so it can use the same maths as ImageJ,
and do batch deconvolution of many images,
hopefully with thread parallelism on multiple processors
and vectorisable loops for altivec/SSE (if it is written properly)
We haven't completed this task and could use some help with it....

cheers

Dan


Dr. Daniel James White BSc. (Hons.) PhD
Bioimaging Coordinator
Nanoscience Centre and Department of Biological and Environmental  
Sciences
Division of Molecular Recognition
Ambiotica C242
PO Box 35
University of Jyväskylä
Jyväskylä
FIN 40014
Finland

+358 14 260 4183 (work)
+358 468102840 (mobile)
http://www.bioimagexd.org
http://www.chalkie.org.uk
[hidden email]
[hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: Deconvolution with ImageJ

Jeff Hardin
In reply to this post by lechristophe
Dear Christophe,

The Conchello algorithms were incorporated into a Mac-only  
application called ImageTrak. You can find it here:

http://www.ohri.ca/programs/neuroscience/White_Matter_Injury/stysWeb/ 
stysImageTrak.htm

I've not used it. I would like to test it and the three ImageJ-based  
options you mention, and I'm looking for a sample dataset. Does  
anyone have one? This would require an image stack and the relevant  
point spread function information (or a measured PSF). Bob Dougherty  
said he didn't have a microscope dataset for testing his, at least  
the last time I contacted him.

Cheers,

Jeff
----------------------------------------------
Jeff Hardin
Professor, Department of Zoology
Director, Biology Core Curriculum
University of Wisconsin
1117 W. Johnson St.
Madison, WI 53706
voice: (608) 262-9634
fax: (608) 262-7319
email: [hidden email]


On Oct 17, 2006, at 11:01 PM, IMAGEJ automatic digest system wrote:

> Date:    Tue, 17 Oct 2006 15:16:05 +0200
> From:    Christophe Leterrier <[hidden email]>
> Subject: Deconvolution with ImageJ
>
> Hi all,
>
> I'm currently getting infos about deconvolution solutions (for a 4-5D
> microscope I'm setting up as a postdoc project). I know there are
> three plugins that seem to propose deconvolution in ImageJ, namely
> DeconvolutionJ from Nick Linnenbrügger (last update 2002, not much
> informations), IterativeDeconvolve3D from Bob Dougherty at Optinav
> (last update April 2005, seems to be used in aeroacoustics), and 3D
> Deconvolution by Pierre Besson at BIG (last updated March 2005, seems
> aimed at transmission images).
>
> I was wondering if somebody tested these plugins comparatively and
> could tell me about their respective performance and differences. If
> not, do anyone use these plugin now ? I'm interested in deconvolving
> 3D stacks of fluorescence widefield images. Are you aware of any
> active or currently-developed plugin that could be used ?
>
> On a related note, do anyone still use the free XCOSM deconvolution
> software ? Dr Conchello, who developed it, is announcing a new
> deconvolution software called ORMFCOSM for quite a while now. Is this
> software still in development ?
>
> More generally, it seems like there are very few free options for
> free/open source deconvolution software. I was wondering if it has to
> do with every specialist in this field being sponsored by a company
> developing commercial software (I'm thinking about Huygens, Autoquant
> etc...).
Reply | Threaded
Open this post in threaded view
|

Re: Deconvolution with ImageJ

Jon Harman
In reply to this post by Daniel White
Hi,

On the subject of Java performance:  I find the slowness of the jpg
reader to be a problem.  It, along with the poor zoom interface, make me
use alternative programs
 ( Irfanview)  to view and browse digital images.  When I want to do
some special function on an image I then must switch to ImageJ.

Jon

Dan White wrote:

> On 18 Oct 2006, at 07:01, IMAGEJ automatic digest system wrote:
>
>> Date:    Tue, 17 Oct 2006 09:36:26 -0500
>> From:    Curtis Rueden <[hidden email]>
>> Subject: Re: Deconvolution with ImageJ
>>
>> Hi,
>>
>> Java has an undeserved bad rap when it comes to performance, left over
>> from when Java was first released many years ago. Sure, it was slow
>> then, but not so much anymore.
>>
>> There is no reason deconvolution in an open source Java application
>> cannot be as fast as in a commercial application. Java 1.4.2 performs
>> most mathematical operations as fast or faster than C++ and C#
>> (http://www.osnews.com/story.php?news_id=5602&page=3). And Java 1.5
>> seems quite similar to 1.4.2 in terms of performance
>> (http://www.shudo.net/jit/perf/). Even Java memory allocation and
>> garbage collection is reportedly faster than direct memory management
>> in C++
>> (http://www-128.ibm.com/developerworks/java/library/j-jtp09275.html).
>> And Java 1.6 will supposedly have substantial speed improvements,
>> especially for Java2D on Mac OS X
>> (http://www.javalobby.org/java/forums/t66270.html).
>>
>> -Curtis
>
> What about Java support for multiple processors/cores?
> New computers will nearly all have them soon,
> and higher end workstations might have many processors.
> For instance the MacPro already has 4, and that might be 8 soon.
> Is Java multithreaded?
>
> What about altivec/SSE?
> Does java use these vector processor extensions
> that are available an our modern CPUs to speed things up
> by vectorisation of loops?
>
> At the BioImageXD project we have started the job of
> using converting the java deconvolution code for
> fluorescence images into C++, so it can use the same maths as ImageJ,
> and do batch deconvolution of many images,
> hopefully with thread parallelism on multiple processors
> and vectorisable loops for altivec/SSE (if it is written properly)
> We haven't completed this task and could use some help with it....
>
> cheers
>
> Dan
>
>
> Dr. Daniel James White BSc. (Hons.) PhD
> Bioimaging Coordinator
> Nanoscience Centre and Department of Biological and Environmental
> Sciences
> Division of Molecular Recognition
> Ambiotica C242
> PO Box 35
> University of Jyväskylä
> Jyväskylä
> FIN 40014
> Finland
>
> +358 14 260 4183 (work)
> +358 468102840 (mobile)
> http://www.bioimagexd.org
> http://www.chalkie.org.uk
> [hidden email]
> [hidden email]
>
Reply | Threaded
Open this post in threaded view
|

Re: Deconvolution with ImageJ

lechristophe
I've just had a look at ImageTrak (stysImageTrack). It seems to run on
an Intel Mac, surely using Rosetta emulation (that could mean poor
speed performances). It seems to be quite powerfull based on the help
file, of course more thorough testing is needed. Sadly the development
of this software seems to be stopped since 2004 (with the promise of
computer-distibuted deconvolution "to come" in the software !).

Concerning experimental data, I could send you a stack from datas we
used to deconvolve using Improvision's Volocity software. We used
theoretical PSFs, not experimental ones so I can't give you PSFs.In
fact,  we only had few experimental  PSFs that we only used to
estimate the real parameters used to generate the theoretical PSF. To
our surprise, based on the XZ cone angle of the experimental PSFs, the
real NA of our 1.4 objective was around 1,15... But we had too few
experimental beads stack to get a good experimental PSF that could be
used to feed a deconvolution algorithm (I mean bead-averaged,
circularily-averaged experimental PSFs with a reasonable S/N).

Christophe Leterrier

2006/10/19, Jon Harman <[hidden email]>:

> Hi,
>
> On the subject of Java performance:  I find the slowness of the jpg
> reader to be a problem.  It, along with the poor zoom interface, make me
> use alternative programs
>  ( Irfanview)  to view and browse digital images.  When I want to do
> some special function on an image I then must switch to ImageJ.
>
> Jon
>
> Dan White wrote:
> > On 18 Oct 2006, at 07:01, IMAGEJ automatic digest system wrote:
> >
> >> Date:    Tue, 17 Oct 2006 09:36:26 -0500
> >> From:    Curtis Rueden <[hidden email]>
> >> Subject: Re: Deconvolution with ImageJ
> >>
> >> Hi,
> >>
> >> Java has an undeserved bad rap when it comes to performance, left over
> >> from when Java was first released many years ago. Sure, it was slow
> >> then, but not so much anymore.
> >>
> >> There is no reason deconvolution in an open source Java application
> >> cannot be as fast as in a commercial application. Java 1.4.2 performs
> >> most mathematical operations as fast or faster than C++ and C#
> >> (http://www.osnews.com/story.php?news_id=5602&page=3). And Java 1.5
> >> seems quite similar to 1.4.2 in terms of performance
> >> (http://www.shudo.net/jit/perf/). Even Java memory allocation and
> >> garbage collection is reportedly faster than direct memory management
> >> in C++
> >> (http://www-128.ibm.com/developerworks/java/library/j-jtp09275.html).
> >> And Java 1.6 will supposedly have substantial speed improvements,
> >> especially for Java2D on Mac OS X
> >> (http://www.javalobby.org/java/forums/t66270.html).
> >>
> >> -Curtis
> >
> > What about Java support for multiple processors/cores?
> > New computers will nearly all have them soon,
> > and higher end workstations might have many processors.
> > For instance the MacPro already has 4, and that might be 8 soon.
> > Is Java multithreaded?
> >
> > What about altivec/SSE?
> > Does java use these vector processor extensions
> > that are available an our modern CPUs to speed things up
> > by vectorisation of loops?
> >
> > At the BioImageXD project we have started the job of
> > using converting the java deconvolution code for
> > fluorescence images into C++, so it can use the same maths as ImageJ,
> > and do batch deconvolution of many images,
> > hopefully with thread parallelism on multiple processors
> > and vectorisable loops for altivec/SSE (if it is written properly)
> > We haven't completed this task and could use some help with it....
> >
> > cheers
> >
> > Dan
> >
> >
> > Dr. Daniel James White BSc. (Hons.) PhD
> > Bioimaging Coordinator
> > Nanoscience Centre and Department of Biological and Environmental
> > Sciences
> > Division of Molecular Recognition
> > Ambiotica C242
> > PO Box 35
> > University of Jyväskylä
> > Jyväskylä
> > FIN 40014
> > Finland
> >
> > +358 14 260 4183 (work)
> > +358 468102840 (mobile)
> > http://www.bioimagexd.org
> > http://www.chalkie.org.uk
> > [hidden email]
> > [hidden email]
> >
>
Reply | Threaded
Open this post in threaded view
|

Re: Deconvolution with ImageJ

Jeff Brandenburg
In reply to this post by Daniel White
On Oct 18, 2006, at 7:32 AM, Dan White wrote:
> What about Java support for multiple processors/cores?
> New computers will nearly all have them soon,
> and higher end workstations might have many processors.
> For instance the MacPro already has 4, and that might be 8 soon.
> Is Java multithreaded?

Oh, yes.  I kludged up a multithreaded stack reslicer some time ago,
and recently tested it on a four-processor G5 system, reslicing a
400x400x100 16-bit volume:

1 thread: 36 seconds
2 threads: 18 seconds
4 threads: 9.5 seconds

This code was based on an ancient version of ImageJ (1.27?), and it's
possible that more current reslicing code (which is much more
efficient) won't gain quite *that* much from multiprocessing.  But
Java, at least in versions 1.3 and later on OS X, definitely allows you
to take advantage of multiple processors.  (And there was no
significant penalty when running multithreaded on a single-processor
machine, at least until I went to hundreds of threads.)

> What about altivec/SSE?
> Does java use these vector processor extensions
> that are available an our modern CPUs to speed things up
> by vectorisation of loops?

I don't know the answer, but I'm sure the answer is out there.

It seems likely that hand-crafted assembly code will always have an
advantage over Java.  Then again, they used to say assembly would
always allow better performance than compiled high-level languages;
this was only true until compilers got better at optimizing than people
are. :-)

> At the BioImageXD project we have started the job of
> using converting the java deconvolution code for
> fluorescence images into C++, so it can use the same maths as ImageJ,
> and do batch deconvolution of many images,
> hopefully with thread parallelism on multiple processors
> and vectorisable loops for altivec/SSE (if it is written properly)
> We haven't completed this task and could use some help with it....

Based on my experience, if you've got computation-intensive (as opposed
to memory- or disk-intensive) code, and it's "embarrassingly parallel"
(there's no dependence among parallel compute threads), multi-threaded
Java is a big win.

I want to revisit the multithreaded-stack code and turn it into
something fit for release, but I'm not sure how soon I'll be able to do
so.  As you say, multi-core processors are quickly becoming standard,
and the population that can benefit from multithreaded code is growing.
--
        -jeffB (Jeff Brandenburg, Duke Center for In-Vivo Microscopy)
Reply | Threaded
Open this post in threaded view
|

Re: Deconvolution with ImageJ

Frederick Sachs
In reply to this post by lechristophe
We would love to see fast decon in imagej. We have been thinking about doing one using the NVIDA array processor o n the video board (or Fermi or Tesla). We saw an FFT algorithm that some japanese guys did for the Tesla that would do a 256^3 FFT in 30ms. And that was a board of several years ago. It would be so much fun to have the highest speed decon be free and in imageJ. This would allow realtime decon of a Weiner transform. A bit slower with iterative but at those speeds it could be interactive. Please, somebody do this!!!!!!!!!!!!!!!!!!
Reply | Threaded
Open this post in threaded view
|

Re: Deconvolution with ImageJ

Frederick Sachs
In reply to this post by lechristophe
We would love to see fast decon in imagej. We have been thinking about doing
one using the NVIDA array processor o n the video board (or Fermi or Tesla).
We saw an FFT algorithm that some japanese guys did for the Tesla that would
do a 256^3 FFT in 30ms. And that was a board of several years ago. It would
be so much fun to have the highest speed decon be free and in imageJ. This
would allow realtime decon of a Weiner transform. A bit slower with
iterative but at those speeds it could be interactive. Please, somebody do
this!!!!!!!!!!!!!!!!!!