Plugin announcement: Parallel Super-Resolution

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

Plugin announcement: Parallel Super-Resolution

Piotr Wendykier
Hello,

A new plugin, called "Parallel Super-Resolution", is available at:

http://sites.google.com/site/piotrwendykier/software/parallelsuperresolution

Super-resolution is an image fusion and reconstruction problem, where
an improved resolution image is obtained from several geometrically
warped, low resolution images. The high resolution image is not only
an image that has more pixels (like in the case of interpolation), but
it also has more visible details.

Features:

- The plugin can handle arbitrary-sized stacks (low resolution 2D input images)
  and 4D hyperstacks (low resolution 3D input images)
- Multithreading (user can choose the number of computational threads)
- Gauss-Newton used as a non-linear solver
- HyBR used as a linear solver
- Different output types (Same as source, Byte, Short or Float)
- Single and double precision
- Show iterations option
- Non-modal GUI
- The plugin can be called from ImageJ macro

I hope you will find it useful.

Piotr Wendykier
Reply | Threaded
Open this post in threaded view
|

Re: Plugin announcement: Parallel Super-Resolution

Rogerio Hein-2
Dear Piotr,

It seems to be quite interesting. I tried to install it in plugins directory
of Image J under Windows Vista 32-bit using Java 1.6.0_14 but the following
error log was returned:

java.lang.NoSuchMethodError:
edu.emory.mathcs.utils.ConcurrencyUtils.getNumberOfThreads()I
 at
edu.emory.mathcs.restoretools.superresolution.ParallelSuperresolution$MainPanel.init(ParallelSuperresolution.java:808)
 at
edu.emory.mathcs.restoretools.superresolution.ParallelSuperresolution$MainPanel.<init>(ParallelSuperresolution.java:633)
 at
edu.emory.mathcs.restoretools.superresolution.ParallelSuperresolution.run(ParallelSuperresolution.java:1149)
 at ij.IJ.runUserPlugIn(IJ.java:176)
 at ij.IJ.runPlugIn(IJ.java:143)
 at ij.Executer.runCommand(Executer.java:122)
 at ij.Executer.run(Executer.java:59)
 at java.lang.Thread.run(Thread.java:619)

What am I doing wrong, please?
Thanks in advance and best regards,

Rogerio Hein

Materials and Technology Department, São Paulo State University,
Guaratinguetá, SP, Brasil

----- Original Message -----
From: "Piotr Wendykier" <[hidden email]>
To: <[hidden email]>
Sent: Monday, July 27, 2009 9:54 PM
Subject: Plugin announcement: Parallel Super-Resolution


> Hello,
>
> A new plugin, called "Parallel Super-Resolution", is available at:
>
> http://sites.google.com/site/piotrwendykier/software/parallelsuperresolution
>
> Super-resolution is an image fusion and reconstruction problem, where
> an improved resolution image is obtained from several geometrically
> warped, low resolution images. The high resolution image is not only
> an image that has more pixels (like in the case of interpolation), but
> it also has more visible details.
>
> Features:
>
> - The plugin can handle arbitrary-sized stacks (low resolution 2D input
> images)
>  and 4D hyperstacks (low resolution 3D input images)
> - Multithreading (user can choose the number of computational threads)
> - Gauss-Newton used as a non-linear solver
> - HyBR used as a linear solver
> - Different output types (Same as source, Byte, Short or Float)
> - Single and double precision
> - Show iterations option
> - Non-modal GUI
> - The plugin can be called from ImageJ macro
>
> I hope you will find it useful.
>
> Piotr Wendykier
Reply | Threaded
Open this post in threaded view
|

Re: Plugin announcement: Parallel Super-Resolution

Gabriel Landini
In reply to this post by Piotr Wendykier
Hi Piotr,

This looks really interesting. Thanks for sharing it.

I wonder if these are bugs:

The "show iterations" check box, does not seem to show the different
iterations (or is it showing real time?. I wondered if this was a creation of
stacks one slice per iteration?).

The choice of Output (Same as source) returns 32 bit even when the source is 8
bits. Is that right?

It would also be quite useful to know what the Scaling Factors mean (The first
seems to be the size of the result, but what is the next one?
Some indication of what the HyBR options are, would also be useful.
Thanks again,

Cheers

Gabriel
Reply | Threaded
Open this post in threaded view
|

Re: Plugin announcement: Parallel Super-Resolution

Gabriel Landini
Another one:
Under linux, one cannot close the plugin dialog with the "Close" button in the
title bar. The Minimise button, however, works OK.

Cheers

Gabriel
Reply | Threaded
Open this post in threaded view
|

Re: Plugin announcement: Parallel Super-Resolution

Piotr Wendykier
In reply to this post by Rogerio Hein-2
Hello,

I think you probably have an old version of Parallel Colt somewhere in
the plugins directory.
This plugin requires parallelcolt-0.8.1.jar.  Please delete all other versions.

Piotr


On Mon, Jul 27, 2009 at 10:51 PM, Rogerio Hein<[hidden email]> wrote:

> Dear Piotr,
>
> It seems to be quite interesting. I tried to install it in plugins directory
> of Image J under Windows Vista 32-bit using Java 1.6.0_14 but the following
> error log was returned:
>
> java.lang.NoSuchMethodError:
> edu.emory.mathcs.utils.ConcurrencyUtils.getNumberOfThreads()I
> at
> edu.emory.mathcs.restoretools.superresolution.ParallelSuperresolution$MainPanel.init(ParallelSuperresolution.java:808)
> at
> edu.emory.mathcs.restoretools.superresolution.ParallelSuperresolution$MainPanel.<init>(ParallelSuperresolution.java:633)
> at
> edu.emory.mathcs.restoretools.superresolution.ParallelSuperresolution.run(ParallelSuperresolution.java:1149)
> at ij.IJ.runUserPlugIn(IJ.java:176)
> at ij.IJ.runPlugIn(IJ.java:143)
> at ij.Executer.runCommand(Executer.java:122)
> at ij.Executer.run(Executer.java:59)
> at java.lang.Thread.run(Thread.java:619)
>
> What am I doing wrong, please?
> Thanks in advance and best regards,
>
> Rogerio Hein
>
> Materials and Technology Department, São Paulo State University,
> Guaratinguetá, SP, Brasil
>
> ----- Original Message ----- From: "Piotr Wendykier"
> <[hidden email]>
> To: <[hidden email]>
> Sent: Monday, July 27, 2009 9:54 PM
> Subject: Plugin announcement: Parallel Super-Resolution
>
>
>> Hello,
>>
>> A new plugin, called "Parallel Super-Resolution", is available at:
>>
>>
>> http://sites.google.com/site/piotrwendykier/software/parallelsuperresolution
>>
>> Super-resolution is an image fusion and reconstruction problem, where
>> an improved resolution image is obtained from several geometrically
>> warped, low resolution images. The high resolution image is not only
>> an image that has more pixels (like in the case of interpolation), but
>> it also has more visible details.
>>
>> Features:
>>
>> - The plugin can handle arbitrary-sized stacks (low resolution 2D input
>> images)
>>  and 4D hyperstacks (low resolution 3D input images)
>> - Multithreading (user can choose the number of computational threads)
>> - Gauss-Newton used as a non-linear solver
>> - HyBR used as a linear solver
>> - Different output types (Same as source, Byte, Short or Float)
>> - Single and double precision
>> - Show iterations option
>> - Non-modal GUI
>> - The plugin can be called from ImageJ macro
>>
>> I hope you will find it useful.
>>
>> Piotr Wendykier
>
Reply | Threaded
Open this post in threaded view
|

Re: Plugin announcement: Parallel Super-Resolution

Piotr Wendykier
In reply to this post by Gabriel Landini
Hello,

On Tue, Jul 28, 2009 at 6:15 AM, Gabriel Landini<[hidden email]> wrote:
> Hi Piotr,
>
> This looks really interesting. Thanks for sharing it.
>
> I wonder if these are bugs:
>
> The "show iterations" check box, does not seem to show the different
> iterations (or is it showing real time?. I wondered if this was a creation of
> stacks one slice per iteration?).

I think this is working correctly, i.e. the image is refreshed after
each iteration.
However, for my examples there is a very minor difference between the solution
after the first iteration and the solutions after remaining iterations.

> The choice of Output (Same as source) returns 32 bit even when the source is 8
> bits. Is that right?
>

Yes, that is a bug, I will fix it in the next release.

> It would also be quite useful to know what the Scaling Factors mean (The first
> seems to be the size of the result, but what is the next one?
> Some indication of what the HyBR options are, would also be useful.

Additional information about each component of the GUI appears as a
tool tip text
- the text displays when the cursor lingers over the component.
For the scaling factors it says:
"Scaling factor for x and y dimensions." and
"Scaling factor for z dimension."

Of course the scaling factor for z dimension is only used for 3D data.

The tool tip texts appear also in the HyBR options panel. To learn more, what
the HyBR really is, you can read this article:

J. Chung, J. Nagy and D. P'Leary
A Weighted GCV Method for Lanczos Hybrid Regularization
Elec. Trans. Numer. Anal., 28 (2008), pp. 149--167.

http://etna.mcs.kent.edu/vol.28.2007-2008/pp149-167.dir/pp149-167.pdf

Piotr
Reply | Threaded
Open this post in threaded view
|

Re: Plugin announcement: Parallel Super-Resolution

Piotr Wendykier
In reply to this post by Gabriel Landini
This is a feature, not a bug. Some problems (killing threads, etc.)
appear when the user
decides to close the plugin while the computations are performed.
Therefore, the only way
to close the GUI is by using the Cancel button.

Piotr

On Tue, Jul 28, 2009 at 6:25 AM, Gabriel Landini<[hidden email]> wrote:
> Another one:
> Under linux, one cannot close the plugin dialog with the "Close" button in the
> title bar. The Minimise button, however, works OK.
>
> Cheers
>
> Gabriel
>
Reply | Threaded
Open this post in threaded view
|

Re: Plugin announcement: Parallel Super-Resolution

Gabriel Landini
In reply to this post by Piotr Wendykier
Hi Piotr,

On Tuesday 28 July 2009  13:37:06 Piotr Wendykier wrote:

> Additional information about each component of the GUI appears as a
> tool tip text
> - the text displays when the cursor lingers over the component.
> For the scaling factors it says:
> "Scaling factor for x and y dimensions." and
> "Scaling factor for z dimension."

I was unaware of the tool tips! Yes, I see them now.

> http://etna.mcs.kent.edu/vol.28.2007-2008/pp149-167.dir/pp149-167.pdf

Great, thanks.

> This is a feature, not a bug. Some problems (killing threads, etc.)
> appear when the user
> decides to close the plugin while the computations are performed.
> Therefore, the only way
> to close the GUI is by using the Cancel button.

I am no Java expert, so forgive if this is completely wrong. Whatever the
Cancel button does can't it be also handled inside something like:

public void windowClosing(WindowEvent e) {
   // stop threads and all what "Cancel" does
}

I am asking because this is also used in the Colour Threshold plugin and now I
wonder if it is the right thing to do.

Cheers

Gabriel
Reply | Threaded
Open this post in threaded view
|

Re: Plugin announcement: Parallel Super-Resolution

Piotr Wendykier
>> This is a feature, not a bug. Some problems (killing threads, etc.)
>> appear when the user
>> decides to close the plugin while the computations are performed.
>> Therefore, the only way
>> to close the GUI is by using the Cancel button.
>
> I am no Java expert, so forgive if this is completely wrong. Whatever the
> Cancel button does can't it be also handled inside something like:
>
> public void windowClosing(WindowEvent e) {
>   // stop threads and all what "Cancel" does
> }
>
> I am asking because this is also used in the Colour Threshold plugin and now I
> wonder if it is the right thing to do.
>

The Cancel button is disabled while the computations are performed,
so you would have to close ImageJ to stop the plugin. Cancel button does not
kill any threads - here is what it does:

 private class CancelButtonActionListener implements ActionListener {
            public void actionPerformed(ActionEvent e) {
                mainPanel.dispose();
                ImagePlus.removeImageListener(getImageListener());
                dGN = null;
                fGN = null;
                dGamma0 = null;
                fGamma0 = null;
                dInput = null;
                fInput = null;
                imB = null;
                imX = null;
                windowIDs = null;
                imageTitles = null;
            }
 }

Here is the javadoc for java.util.concurrent.ExecutorService (which is
used in the plugin):

http://java.sun.com/javase/6/docs/api/java/util/concurrent/ExecutorService.html

Please see the description of shutdown() and shutdownNow() methods:

"Attempts to stop all actively executing tasks, halts the processing
of waiting tasks,
and returns a list of the tasks that were awaiting execution.
There are no guarantees beyond best-effort attempts to stop processing actively
executing tasks. For example, typical implementations will cancel via
Thread.interrupt(),
so any task that fails to respond to interrupts may never terminate."

Regards,

Piotr
Reply | Threaded
Open this post in threaded view
|

Re: Plugin announcement: Parallel Super-Resolution

sLorentz
In reply to this post by Piotr Wendykier
Hello,

thanks for sharing. I've got a problem using it, though.
I open four images using ImageJ. Then I run the plugin. Next, I click on "Reconstruct". Then an error message appears: "3D stack or 4D hyperstack is required".

How can I use it correctly?

Thanks a lot,
Sabine Lorentz

Piotr Wendykier wrote
Hello,

A new plugin, called "Parallel Super-Resolution", is available at:

http://sites.google.com/site/piotrwendykier/software/parallelsuperresolution

Super-resolution is an image fusion and reconstruction problem, where
an improved resolution image is obtained from several geometrically
warped, low resolution images. The high resolution image is not only
an image that has more pixels (like in the case of interpolation), but
it also has more visible details.

Features:

- The plugin can handle arbitrary-sized stacks (low resolution 2D input images)
  and 4D hyperstacks (low resolution 3D input images)
- Multithreading (user can choose the number of computational threads)
- Gauss-Newton used as a non-linear solver
- HyBR used as a linear solver
- Different output types (Same as source, Byte, Short or Float)
- Single and double precision
- Show iterations option
- Non-modal GUI
- The plugin can be called from ImageJ macro

I hope you will find it useful.

Piotr Wendykier
Reply | Threaded
Open this post in threaded view
|

Re: Plugin announcement: Parallel Super-Resolution

Reinaldo
In reply to this post by Piotr Wendykier
Hello,
Could be a way to estimate the the required memory? I'm wishing to work with 20MPx pictures, and let's say a 5 picture stack.
Thanks
Reinaldo