ImageJ2-GPU Deconvolution

I’ve just added an ImageJ2 wrapper to YacuDecu (by Bob Pepin) in both the main deconvolution project and RogueImageJPlugins.   RogueImageJPlugins is a place where I am putting cool self contained plugins and examples.   Yacu Decu was written as an Imaris plugin.  The Imaris version can be found here.

I’ve played with it a little and got about a 10x speed improvement for power of 2 over a CPU implementation (using Mines JTK).   More detailed testing results to come.

Currently I have not made a distributable version.  So as of now it exists as a “fun example for developers”.  I need to think through the best way to package a cuda plugin.   To get the plugin working in a development environment

  1. Use CMake to create build files for SimpleYacuDecuNative.  Then copy the library to a location where ImageJ will find it.
  2. Use Maven and/or Exlipse to run SimpleYacuDecuWrapper.  There is a “main” that launches imagej in the Utilities class.
  3. Under “Plugins/Deconvolution” the Yacu Decu option appears.  You will need to have a PSF and image (both the same size) open.
  4. As with most of the GPU implementations it is fastest when using images with all dimensions equal to power of 2.

Definitely more to come.  Great work by Mr. Pepin and to Bitplane for supporting this within Imaris.  YacuDecu is the only open and distributable GPU deconvolution program I am aware of.  (Note: There is a very advanced plugin that can use GPU for multiview deconvolution, I am in the process of trying to figure how to use it for (the simpler case) of single view deconvolution.)


Leave a Reply

Your email address will not be published. Required fields are marked *