[ImageJ-devel] Performing convolution using ImageJ2

Brian Northan bnorthan at gmail.com
Tue Apr 21 08:13:54 CDT 2015


Hi Thorsten

I'm working on a convolution tutorial for imagej-tutorials.  (Though it
looks like you are almost there anyway)

https://github.com/imagej/imagej-tutorials/blob/convolution/using-ops/src/main/java/ConvolutionOps.java

A couple of things to note for small kernels

1.  For small kernels there is no practical need to use "borderSize".
Under the hood the default border size is set to kernelSize/2.  The border
size can be used if the kernel is very large.  In that case you could force
it to use a smaller border size to improve speed (the trade off would be
the possibility of edge artifacts).

2.  The fast convolution for small symmetric kernels has not been
implemented in ops yet (it is a matter of wrapping code from imglib2).
However long term it will be, and that will make ops very powerful.   A
high level programmer will not have to worry about that detail.  Under the
hood ops will choose the correct type of convolution based on the kernel.

Brian

On Mon, Apr 20, 2015 at 4:25 PM, Curtis Rueden <ctrueden at wisc.edu> wrote:

> Hi Thorsten,
>
> > I try to perform a simple convolution using imagej2. Unfortunately, it
> > failed!
>
> The exception you receive is because you are creating a new ImageJ
> application context, rather than reusing the existing one. This happens
> because you write:
>
>    final ImageJ ij = new ImageJ();
>
> The handle to the existing context can be obtained in one of two ways:
>
> 1) If you are writing an ImageJ1 plugin (e.g., an ij.plugin.Plugin), then
> you can write:
>
>     // retrieve the ImageJ application context
>     final Context context = (Context) IJ.runPlugIn("org.scijava.Context",
> "");
>     final ImageJ ij = new ImageJ(context);
>
> 2) If you are writing an ImageJ2 plugin, then you can write:
>
>     @Parameter
>     private OpService ops
>
> And just call "ops.convolve(...)" in your code.
>
> Or if you really want the "ImageJ" object, you can write:
>
>     @Parameter
>     private ImageJ ij;
>
> See also:
> https://github.com/imagej/imagej-tutorials/
>
> Regards,
> Curtis
>
> On Mon, Apr 20, 2015 at 4:53 AM, Thorsten Wagner <
> wagner at biomedical-imaging.de> wrote:
>
>> Dear list,
>>
>> I try to perform a simple convolution using imagej2. Unfortunately, it
>> failed!
>>
>> This is my code:
>> http://pastebin.com/CqBgcLXd
>>
>> This is the exception:
>> http://pastebin.com/KHkeGGAJ
>>
>> I would be grateful for any help.
>>
>> Regards,
>> Thorsten
>>
>> _______________________________________________
>> ImageJ-devel mailing list
>> ImageJ-devel at imagej.net
>> http://imagej.net/mailman/listinfo/imagej-devel
>>
>
>
> _______________________________________________
> ImageJ-devel mailing list
> ImageJ-devel at imagej.net
> http://imagej.net/mailman/listinfo/imagej-devel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://imagej.net/pipermail/imagej-devel/attachments/20150421/89458cab/attachment.html>


More information about the ImageJ-devel mailing list