@@ -0,0 +1,1348 @@
+package net.imagej.ops.deconvolve;%0A%0Aimport org.scijava.Priority;%0Aimport org.scijava.plugin.Parameter;%0Aimport org.scijava.plugin.Plugin;%0A%0Aimport net.imagej.ops.Op;%0Aimport net.imagej.ops.Ops;%0Aimport net.imagej.ops.fft.filter.AbstractFFTFilterImg;%0Aimport net.imglib2.Interval;%0Aimport net.imglib2.RandomAccessibleInterval;%0Aimport net.imglib2.img.Img;%0Aimport net.imglib2.type.numeric.ComplexType;%0Aimport net.imglib2.type.numeric.RealType;%0A%0A/**%0A * Richardson Lucy op that operates on (@link Img)%0A * %0A * @author bnorthan%0A *%0A * @param %3CI%3E%0A * @param %3CO%3E%0A * @param %3CK%3E%0A * @param %3CC%3E %0A */%0A@Plugin(type = Op.class, name = Ops.Deconvolve.NAME, priority = Priority.HIGH_PRIORITY)%0Apublic class RichardsonLucyImg%3CI extends RealType%3CI%3E, O extends RealType%3CO%3E, K extends RealType%3CK%3E, C extends ComplexType%3CC%3E%3E%0A%09%09extends AbstractFFTFilterImg%3CI, O, K, C%3E %7B%0A%09%0A%09/**%0A%09 * max number of iterations%0A%09 */%0A%09@Parameter %0A%09int maxIterations;%0A%0A%09/**%0A%09 * run RichardsonLucyRAI%0A%09 */%0A%09@Override%0A%09public void runFilter(RandomAccessibleInterval%3CI%3E raiExtendedInput,%0A%09%09%09RandomAccessibleInterval%3CK%3E raiExtendedKernel, Img%3CC%3E fftImg,%0A%09%09%09Img%3CC%3E fftKernel, Img%3CO%3E output, Interval imgConvolutionInterval) %7B%0A%0A%09%09ops.run(RichardsonLucyRAI.class, raiExtendedInput, raiExtendedKernel,%0A%09%09%09%09fftImg, fftKernel, output, true, true, maxIterations,%0A%09%09%09%09imgConvolutionInterval, output.factory());%0A%0A%09%7D%0A%7D%0A

Add RichardsonLucyImg