/** Converts this FHT to a complex Fourier transform and returns it as a two slice stack. * Author: Joachim Wesner */ public ImageStack getComplexTransform() { if (!isFrequencyDomain) throw new IllegalArgumentException("Frequency domain image required"); float[] fht = (float[])getPixels(); float[] re = new float[maxN*maxN]; float[] im = new float[maxN*maxN]; for (int i=0; i<maxN; i++) { FHTreal(i, maxN, fht, re); FHTimag(i, maxN, fht, im); } swapQuadrants(new FloatProcessor(maxN, maxN, re, null)); swapQuadrants(new FloatProcessor(maxN, maxN, im, null)); ImageStack stack = new ImageStack(maxN, maxN); stack.addSlice("Real", re); stack.addSlice("Imaginary", im); return stack; }
/** Converts this FHT to a complex Fourier transform and returns it as a two slice stack. * Author: Joachim Wesner */ public ImageStack getComplexTransform() { if (!isFrequencyDomain) throw new IllegalArgumentException("Frequency domain image required"); float[] fht = (float[])getPixels(); float[] re = new float[maxN*maxN]; float[] im = new float[maxN*maxN]; for (int i=0; i<maxN; i++) { FHTreal(i, maxN, fht, re); FHTimag(i, maxN, fht, im); } swapQuadrants(new FloatProcessor(maxN, maxN, re, null)); swapQuadrants(new FloatProcessor(maxN, maxN, im, null)); ImageStack stack = new ImageStack(maxN, maxN); stack.addSlice("Real", re); stack.addSlice("Imaginary", im); return stack; }