/** * Make sure that the input size conforms to a supported FFT size. */ @Override public boolean conforms() { long[] paddedDimensions = new long[in().numDimensions()]; boolean fastSizeConforms = false; FFTMethods.dimensionsComplexToComplexFast(in(), paddedDimensions); if (FFTMethods.dimensionsEqual(in(), paddedDimensions) == true) { fastSizeConforms = true; } boolean smallSizeConforms = false; FFTMethods.dimensionsComplexToComplexSmall(in(), paddedDimensions); if ((FFTMethods.dimensionsEqual(in(), paddedDimensions) == true)) { smallSizeConforms = true; } return fastSizeConforms || smallSizeConforms; }
/** * Make sure that the input size conforms to a supported FFT size. */ @Override public boolean conforms() { long[] paddedDimensions = new long[in().numDimensions()]; long[] realDimensions = new long[in().numDimensions()]; boolean fastSizeConforms = false; FFTMethods.dimensionsComplexToRealFast(in(), paddedDimensions, realDimensions); if (FFTMethods.dimensionsEqual(in(), paddedDimensions) == true) { fastSizeConforms = true; } boolean smallSizeConforms = false; FFTMethods.dimensionsComplexToRealSmall(in(), paddedDimensions, realDimensions); if ((FFTMethods.dimensionsEqual(in(), paddedDimensions) == true)) { smallSizeConforms = true; } return fastSizeConforms || smallSizeConforms; }
final public static < R extends RealType< R >, C extends ComplexType< C > > Img< C > realToComplex( final RandomAccessible< R > input, Interval inputInterval, final ImgFactory< C > factory, final C type ) { // compute the size of the complex-valued output and the required padding final long[] paddedDimensions = new long[ input.numDimensions() ]; final long[] fftDimensions = new long[ input.numDimensions() ]; FFTMethods.dimensionsRealToComplexFast( inputInterval, paddedDimensions, fftDimensions ); // create the output Img final Img< C > fft = factory.create( fftDimensions, type ); // if the input size is not the right size adjust the interval if ( !FFTMethods.dimensionsEqual( inputInterval, paddedDimensions ) ) inputInterval = FFTMethods.paddingIntervalCentered( inputInterval, FinalDimensions.wrap( paddedDimensions ) ); // real-to-complex fft realToComplex( Views.interval( input, inputInterval ), fft ); return fft; }
final public static < R extends RealType< R >, C extends ComplexType< C > > Img< C > realToComplex( final RandomAccessible< R > input, Interval inputInterval, final ImgFactory< C > factory, final ExecutorService service ) { // compute the size of the complex-valued output and the required // padding final long[] paddedDimensions = new long[ input.numDimensions() ]; final long[] fftDimensions = new long[ input.numDimensions() ]; FFTMethods.dimensionsRealToComplexFast( inputInterval, paddedDimensions, fftDimensions ); // create the output Img final Img< C > fft = factory.create( fftDimensions ); // if the input size is not the right size adjust the interval if ( !FFTMethods.dimensionsEqual( inputInterval, paddedDimensions ) ) inputInterval = FFTMethods.paddingIntervalCentered( inputInterval, FinalDimensions.wrap( paddedDimensions ) ); // real-to-complex fft realToComplex( Views.interval( input, inputInterval ), fft, service ); return fft; }
if ( !FFTMethods.dimensionsEqual( inputInterval, paddedDimensions ) )
if ( !FFTMethods.dimensionsEqual( inputInterval, paddedDimensions ) )