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 );
}