public static < S, T > void convolve1d( final double[] halfkernel, final RandomAccessible< S > source, final RandomAccessibleInterval< T > target, final ConvolverFactory< S, T > convolverFactoryST ) { final long[] sourceOffset = new long[] { 1 - halfkernel.length }; convolveOffset( halfkernel, source, sourceOffset, target, target, 0, convolverFactoryST, 1, 1 ); }
/** * @deprecated Use {@link net.imglib2.algorithm.convolution.kernel.SeparableKernelConvolution#convolution1d} */ @Deprecated public static < S, T > void convolve1d( final double[] halfkernel, final RandomAccessible< S > source, final RandomAccessibleInterval< T > target, final ConvolverFactory< S, T > convolverFactoryST, final ExecutorService service ) { final long[] sourceOffset = new long[] { 1 - halfkernel.length }; convolveOffset( halfkernel, source, sourceOffset, target, target, 0, convolverFactoryST, service, 1 ); }
if ( n == 2 ) convolveOffset( halfkernels[ 0 ], source, sourceOffset, tmp1, tmp1, 0, convolverFactorySI, numThreads, numTasks ); convolveOffset( halfkernels[ 1 ], tmp1, targetOffset, target, target, 1, convolverFactoryIT, numThreads, numTasks ); convolveOffset( halfkernels[ 0 ], source, sourceOffset, tmp1, new FinalInterval( tmpdims[ 0 ] ), 0, convolverFactorySI, numThreads, numTasks ); for( int d = 1; d < n - 1; ++d ) convolveOffset( halfkernels[ d ], tmp1, zeroOffset, tmp2, new FinalInterval( tmpdims[ d ] ), d, convolverFactoryII, numThreads, numTasks ); final Img< I > tmp = tmp2; tmp2 = tmp1; tmp1 = tmp; convolveOffset( halfkernels[ n - 1 ], tmp1, targetOffset, target, target, n - 1, convolverFactoryIT, numThreads, numTasks );
if ( n == 2 ) convolveOffset( halfkernels[ 0 ], source, sourceOffset, tmp1, tmp1, 0, convolverFactorySI, service, numTasks ); convolveOffset( halfkernels[ 1 ], tmp1, targetOffset, target, target, 1, convolverFactoryIT, service, numTasks ); convolveOffset( halfkernels[ 0 ], source, sourceOffset, tmp1, new FinalInterval( tmpdims[ 0 ] ), 0, convolverFactorySI, service, numTasks ); for ( int d = 1; d < n - 1; ++d ) convolveOffset( halfkernels[ d ], tmp1, zeroOffset, tmp2, new FinalInterval( tmpdims[ d ] ), d, convolverFactoryII, service, numTasks ); final Img< I > tmp = tmp2; tmp2 = tmp1; tmp1 = tmp; convolveOffset( halfkernels[ n - 1 ], tmp1, targetOffset, target, target, n - 1, convolverFactoryIT, service, numTasks );