@Override public void compute(final RandomAccessible<T> input, final RandomAccessibleInterval<T> output) { try { SeparableSymmetricConvolution.convolve(Gauss3.halfkernels(sigmas), input, output, threads.getExecutorService()); } catch (final IncompatibleTypeException e) { throw new RuntimeException(e); } }
final ExecutorService service ) convolve( halfkernels, source, target, convolverFactorySI, convolverFactoryII, convolverFactoryIT, convolverFactoryST, imgFactory.imgFactory( type ), service );
SeparableSymmetricConvolution.convolve( halfkernels, source, target, numthreads );
private static < T extends NumericType< T > > void convolveNumericType( final double[][] halfkernels, final RandomAccessible< T > source, final RandomAccessibleInterval< T > target, final ExecutorService service ) { final T type = Util.getTypeFromInterval( target ); final ConvolverFactory< T, T > convfac = ConvolverNumericType.factory( type ); convolve( halfkernels, source, target, convfac, convfac, convfac, convfac, new ListImgFactory<>( type ), service ); }
private static < T extends NumericType< T > > void convolveNumericType( final double[][] halfkernels, final RandomAccessible< T > source, final RandomAccessibleInterval< T > target, final int numThreads ) { final T type = Util.getTypeFromInterval( target ); final ConvolverFactory< T, T > convfac = ConvolverNumericType.factory( type ); convolve( halfkernels, source, target, convfac, convfac, convfac, convfac, new ListImgFactory< T >(), type, numThreads ); }
@Override public void compute(final RandomAccessibleInterval<T> input, final RandomAccessibleInterval<T> output) { if (outOfBounds == null) { outOfBounds = new OutOfBoundsMirrorFactory<>(Boundary.SINGLE); } final RandomAccessible<FloatType> eIn = // (RandomAccessible) Views.extend(input, outOfBounds); try { SeparableSymmetricConvolution.convolve(Gauss3.halfkernels(sigmas), eIn, output, threads.getExecutorService()); } catch (final IncompatibleTypeException e) { throw new RuntimeException(e); } }
private static < T extends NumericType< T > & NativeType< T > > void convolveNativeType( final double[][] halfkernels, final RandomAccessible< T > source, final RandomAccessibleInterval< T > target, final int numThreads ) { final T type = Util.getTypeFromInterval( target ); final ConvolverFactory< T, T > convfac; if ( canUseBufferedConvolver( target, halfkernels ) ) convfac = ConvolverNativeTypeBuffered.factory( type ); else convfac = ConvolverNativeType.factory( type ); final ImgFactory< T > imgfac = getImgFactory( target, halfkernels, type ); convolve( halfkernels, source, target, convfac, convfac, convfac, convfac, imgfac, type, numThreads ); }
private static < T extends NumericType< T > & NativeType< T > > void convolveNativeType( final double[][] halfkernels, final RandomAccessible< T > source, final RandomAccessibleInterval< T > target, final ExecutorService service ) { final T type = Util.getTypeFromInterval( target ); final ConvolverFactory< T, T > convfac; if ( canUseBufferedConvolver( target, halfkernels ) ) convfac = ConvolverNativeTypeBuffered.factory( type ); else convfac = ConvolverNativeType.factory( type ); final ImgFactory< T > imgfac = getImgFactory( target, halfkernels, type ); convolve( halfkernels, source, target, convfac, convfac, convfac, convfac, imgfac, service ); }
private static < S extends RealType< S >, T extends RealType< T > > void convolveRealTypeDouble( final double[][] halfkernels, final RandomAccessible< S > source, final RandomAccessibleInterval< T > target, final int numThreads ) { final DoubleType type = new DoubleType(); final ImgFactory< DoubleType > imgfac = getImgFactory( target, halfkernels, type ); if ( canUseBufferedConvolver( target, halfkernels ) ) convolve( halfkernels, source, target, DoubleConvolverRealTypeBuffered.< S, DoubleType >factory(), DoubleConvolverRealTypeBuffered.< DoubleType, DoubleType >factory(), DoubleConvolverRealTypeBuffered.< DoubleType, T >factory(), DoubleConvolverRealTypeBuffered.< S, T >factory(), imgfac, type, numThreads ); else convolve( halfkernels, source, target, DoubleConvolverRealType.< S, DoubleType >factory(), DoubleConvolverRealType.< DoubleType, DoubleType >factory(), DoubleConvolverRealType.< DoubleType, T >factory(), DoubleConvolverRealType.< S, T >factory(), imgfac, type, numThreads ); }
private static < S extends RealType< S >, T extends RealType< T > > void convolveRealTypeDouble( final double[][] halfkernels, final RandomAccessible< S > source, final RandomAccessibleInterval< T > target, final ExecutorService service ) { final DoubleType type = new DoubleType(); final ImgFactory< DoubleType > imgfac = getImgFactory( target, halfkernels, type ); if ( canUseBufferedConvolver( target, halfkernels ) ) convolve( halfkernels, source, target, DoubleConvolverRealTypeBuffered.< S, DoubleType >factory(), DoubleConvolverRealTypeBuffered.< DoubleType, DoubleType >factory(), DoubleConvolverRealTypeBuffered.< DoubleType, T >factory(), DoubleConvolverRealTypeBuffered.< S, T >factory(), imgfac, service ); else convolve( halfkernels, source, target, DoubleConvolverRealType.< S, DoubleType >factory(), DoubleConvolverRealType.< DoubleType, DoubleType >factory(), DoubleConvolverRealType.< DoubleType, T >factory(), DoubleConvolverRealType.< S, T >factory(), imgfac, service ); }
private static < S extends RealType< S >, T extends RealType< T > > void convolveRealTypeFloat( final double[][] halfkernels, final RandomAccessible< S > source, final RandomAccessibleInterval< T > target, final int numThreads ) { final FloatType type = new FloatType(); final ImgFactory< FloatType > imgfac = getImgFactory( target, halfkernels, type ); if ( canUseBufferedConvolver( target, halfkernels ) ) convolve( halfkernels, source, target, FloatConvolverRealTypeBuffered.< S, FloatType >factory(), FloatConvolverRealTypeBuffered.< FloatType, FloatType >factory(), FloatConvolverRealTypeBuffered.< FloatType, T >factory(), FloatConvolverRealTypeBuffered.< S, T >factory(), imgfac, type, numThreads ); else convolve( halfkernels, source, target, FloatConvolverRealType.< S, FloatType >factory(), FloatConvolverRealType.< FloatType, FloatType >factory(), FloatConvolverRealType.< FloatType, T >factory(), FloatConvolverRealType.< S, T >factory(), imgfac, type, numThreads ); }
private static < S extends RealType< S >, T extends RealType< T > > void convolveRealTypeFloat( final double[][] halfkernels, final RandomAccessible< S > source, final RandomAccessibleInterval< T > target, final ExecutorService service ) { final FloatType type = new FloatType(); final ImgFactory< FloatType > imgfac = getImgFactory( target, halfkernels, type ); if ( canUseBufferedConvolver( target, halfkernels ) ) convolve( halfkernels, source, target, FloatConvolverRealTypeBuffered.< S, FloatType >factory(), FloatConvolverRealTypeBuffered.< FloatType, FloatType >factory(), FloatConvolverRealTypeBuffered.< FloatType, T >factory(), FloatConvolverRealTypeBuffered.< S, T >factory(), imgfac, service ); else convolve( halfkernels, source, target, FloatConvolverRealType.< S, FloatType >factory(), FloatConvolverRealType.< FloatType, FloatType >factory(), FloatConvolverRealType.< FloatType, T >factory(), FloatConvolverRealType.< S, T >factory(), imgfac, service ); }