package edu.stanford.rsl.conrad.volume3d; import edu.emory.mathcs.jtransforms.fft.FloatFFT_3D; import edu.emory.mathcs.utils.ConcurrencyUtils; import edu.stanford.rsl.conrad.utils.CONRAD; public class JTransformsFFTVolumeHandle extends FFTVolumeHandle { public JTransformsFFTVolumeHandle(VolumeOperator operator){ super(operator); } @Override public void forwardTransform(Volume3D vol) { if (debug) System.out.println("vol_fft\n"); operator.makeComplex(vol); CONRAD.gc(); FloatFFT_3D fft = new FloatFFT_3D(vol.size[0], vol.size[1], vol.size[2]); fft.complexForward(vol.data); } @Override public void inverseTransform(Volume3D vol) { if (debug) System.out.println("JTransforms vol_ifft\n"); operator.makeComplex(vol); CONRAD.gc(); FloatFFT_3D fft = new FloatFFT_3D(vol.size[0], vol.size[1], vol.size[2]); fft.complexInverse(vol.data, true); } @Override public void cleanUp() { // Nothing to do here } @Override public void setThreadNumber(int number) { ConcurrencyUtils.setNumberOfThreads(number); } } /* * Copyright (C) 2010-2014 Andreas Maier * CONRAD is developed as an Open Source project under the GNU General Public License (GPL). */