final public static < C extends ComplexType< C >, R extends RealType< R > > void complexToRealUnpad( final RandomAccessibleInterval< C > input, final RandomAccessibleInterval< R > output, final int numThreads ) { final ExecutorService service = Executors.newFixedThreadPool(numThreads); complexToRealUnpad(input, output, service); service.shutdown(); }
final public static < R extends RealType< R >, C extends ComplexType< C > > void realToComplex( final RandomAccessibleInterval< R > input, final RandomAccessibleInterval< C > output, final int numThreads ) { final ExecutorService service = Executors.newFixedThreadPool(numThreads); realToComplex(input, output, service); service.shutdown(); }
final public static < C extends ComplexType< C >, R extends RealType< R > > Img< R > complexToReal( final RandomAccessibleInterval< C > input, final ImgFactory< R > factory, final R type, final ExecutorService service ) { return complexToReal( input, input, null, factory, type, service ); }
final Img<ComplexFloatType> fftImg = FFT.realToComplex( imgInput, factory ); final Img<ComplexFloatType> fftKernel = FFT.realToComplex( kernelInput, factory ); FFT.complexToRealUnpad( fftImg, output );
final public static < C extends ComplexType< C > > void complexToComplexInverse( final RandomAccessibleInterval< C > data, final int numThreads ) { final ExecutorService service = Executors.newFixedThreadPool(numThreads); complexToComplexInverse(data, service); service.shutdown(); }
final public static < C extends ComplexType< C > > void complexToComplexForward( final RandomAccessibleInterval< C > data, final int numThreads ) { final ExecutorService service = Executors.newFixedThreadPool(numThreads); complexToComplexForward(data, service); service.shutdown(); }
final Img< ComplexFloatType > fftImg = FFT.realToComplex( imgInput, factory, numThreads ); final Img< ComplexFloatType > fftKernel = FFT.realToComplex( kernelInput, factory, numThreads ); FFT.complexToRealUnpad( fftImg, output, numThreads );
final public static < C extends ComplexType< C > > void complexToComplexInverse( final RandomAccessibleInterval< C > data ) { complexToComplexInverse( data, Runtime.getRuntime().availableProcessors() ); }
final public static < C extends ComplexType< C > > void complexToComplexForward( final RandomAccessibleInterval< C > data ) { complexToComplexForward( data, Runtime.getRuntime().availableProcessors() ); }
final public static < R extends RealType< R >, C extends ComplexType< C > > Img< C > realToComplex( final RandomAccessible< R > input, final Interval inputInterval, final ImgFactory< C > factory, final C type, final int numThreads ) { final ExecutorService service = Executors.newFixedThreadPool( numThreads ); final Img< C > ret = realToComplex( input, inputInterval, factory, type, service ); service.shutdown(); return ret; }
final Img< ComplexFloatType > fftImg = FFT.realToComplex( imgInput, factory, numThreads ); final Img< ComplexFloatType > fftKernel = FFT.realToComplex( kernelInput, factory, numThreads ); FFT.complexToRealUnpad( fftImg, output, numThreads );
final public static < C extends ComplexType< C >, R extends RealType< R > > Img< R > complexToReal( final RandomAccessibleInterval< C > input, final ImgFactory< R > factory, final R type, final int numThreads ) { return complexToReal( input, input, null, factory, type, numThreads ); }
final public static < C extends ComplexType< C >, R extends RealType< R > > void complexToRealUnpad( final RandomAccessibleInterval< C > input, final RandomAccessibleInterval< R > output ) { complexToRealUnpad( input, output, Runtime.getRuntime().availableProcessors() ); }
final public static < R extends RealType< R >, C extends ComplexType< C > > Img< C > realToComplex( final RandomAccessible< R > input, final Interval inputInterval, final ImgFactory< C > factory, final C type ) { return realToComplex( input, inputInterval, factory, type, Runtime.getRuntime().availableProcessors() ); }
fftImg = FFT.realToComplex( imgInput, fftFactory ); fftKernel = FFT.realToComplex( kernelInput, fftFactory ); FFT.complexToRealUnpad( fftconvolved, output );
final public static < C extends ComplexType< C >, R extends RealType< R > > Img< R > complexToReal( final RandomAccessible< C > input, final Interval inputInterval, final ImgFactory< R > factory, final R type, final int numThreads ) { return complexToReal( input, inputInterval, null, factory, type, numThreads ); }
public static < R extends RealType< R > > void computeConvolution( final Img< ComplexFloatType > fftImg, final Img< ComplexFloatType > fftKernel, final RandomAccessibleInterval< R > output, final boolean keepImgFFT, final ExecutorService service ) { final Img< ComplexFloatType > fftconvolved; if ( keepImgFFT ) fftconvolved = fftImg.copy(); else fftconvolved = fftImg; // multiply in place multiplyComplex( fftconvolved, fftKernel ); // inverse FFT in place FFT.complexToRealUnpad( fftconvolved, output, service ); }
final public static < R extends RealType< R >, C extends ComplexType< C > > void realToComplex( final RandomAccessibleInterval< R > input, final RandomAccessibleInterval< C > output ) { realToComplex( input, output, Runtime.getRuntime().availableProcessors() ); }
final public static < C extends ComplexType< C >, R extends RealType< R > > Img< R > complexToReal( final RandomAccessible< C > input, final Interval inputInterval, final ImgFactory< R > factory, final R type, final ExecutorService service ) { return complexToReal( input, inputInterval, null, factory, type, service ); }
public static < R extends RealType< R > > void computeConvolution( final Img< ComplexFloatType > fftImg, final Img< ComplexFloatType > fftKernel, final RandomAccessibleInterval< R > output, final boolean keepImgFFT, final ExecutorService service ) { final Img< ComplexFloatType > fftconvolved; if ( keepImgFFT ) fftconvolved = fftImg.copy(); else fftconvolved = fftImg; // multiply in place multiplyComplex( fftconvolved, fftKernel ); // inverse FFT in place FFT.complexToRealUnpad( fftconvolved, output, service ); }