/** Complex to Complex Inverse Fourier Transform * Author: Joachim Wesner */ void c2c2DFFT(float[] rein, float[] imin, int maxN, float[] reout, float[] imout) { FHT fht = new FHT(new FloatProcessor(maxN,maxN)); float[] fhtpixels = (float[])fht.getPixels(); // Real part of inverse transform for (int iy = 0; iy < maxN; iy++) cplxFHT(iy, maxN, rein, imin, false, fhtpixels); fht.inverseTransform(); // Save intermediate result, so we can do a "in-place" transform float[] hlp = new float[maxN*maxN]; System.arraycopy(fhtpixels, 0, hlp, 0, maxN*maxN); // Imaginary part of inverse transform for (int iy = 0; iy < maxN; iy++) cplxFHT(iy, maxN, rein, imin, true, fhtpixels); fht.inverseTransform(); System.arraycopy(hlp, 0, reout, 0, maxN*maxN); System.arraycopy(fhtpixels, 0, imout, 0, maxN*maxN); }
/** Complex to Complex Inverse Fourier Transform * Author: Joachim Wesner */ void c2c2DFFT(float[] rein, float[] imin, int maxN, float[] reout, float[] imout) { FHT fht = new FHT(new FloatProcessor(maxN,maxN)); float[] fhtpixels = (float[])fht.getPixels(); // Real part of inverse transform for (int iy = 0; iy < maxN; iy++) cplxFHT(iy, maxN, rein, imin, false, fhtpixels); fht.inverseTransform(); // Save intermediate result, so we can do a "in-place" transform float[] hlp = new float[maxN*maxN]; System.arraycopy(fhtpixels, 0, hlp, 0, maxN*maxN); // Imaginary part of inverse transform for (int iy = 0; iy < maxN; iy++) cplxFHT(iy, maxN, rein, imin, true, fhtpixels); fht.inverseTransform(); System.arraycopy(hlp, 0, reout, 0, maxN*maxN); System.arraycopy(fhtpixels, 0, imout, 0, maxN*maxN); }
private static FHT computeCrossCorrelationImage(FHT image1FFT, FHT image2FFT) { FHT crossCorrelationImage = image1FFT.conjugateMultiply(image2FFT); crossCorrelationImage.setShowProgress(false); crossCorrelationImage.inverseTransform(); crossCorrelationImage.swapQuadrants(); return crossCorrelationImage; }
void doFHTInverseTransform() { FHT fht = new FHT(imp.getProcessor().duplicate()); fht.inverseTransform(); fht.resetMinAndMax(); String name = WindowManager.getUniqueName(imp.getTitle().substring(7)); new ImagePlus(name, fht).show(); }
void doFHTInverseTransform() { FHT fht = new FHT(imp.getProcessor().duplicate()); fht.inverseTransform(); fht.resetMinAndMax(); String name = WindowManager.getUniqueName(imp.getTitle().substring(7)); new ImagePlus(name, fht).show(); }
void doInverseTransform(FHT fht, ImageProcessor ip) { showStatus("Inverse transform"); fht.inverseTransform(); //if (fht.quadrantSwapNeeded) // fht.swapQuadrants(); fht.resetMinAndMax(); ImageProcessor ip2 = fht; fht.setRoi(rect.x, rect.y, rect.width, rect.height); ip2 = fht.crop(); int bitDepth = fht.originalBitDepth>0?fht.originalBitDepth:imp.getBitDepth(); switch (bitDepth) { case 8: ip2 = ip2.convertToByte(true); break; case 16: ip2 = ip2.convertToShort(true); break; case 24: showStatus("Setting brightness"); fht.rgb.setBrightness((FloatProcessor)ip2); ip2 = fht.rgb; fht.rgb = null; break; case 32: break; } ip.insert(ip2, 0, 0); }
doMasking(fht); showStatus("Inverse transform"); fht.inverseTransform(); if (fht.quadrantSwapNeeded) fht.swapQuadrants();
void doInverseTransform(FHT fht, ImageProcessor ip) { showStatus("Inverse transform"); fht.inverseTransform(); //if (fht.quadrantSwapNeeded) // fht.swapQuadrants(); fht.resetMinAndMax(); ImageProcessor ip2 = fht; fht.setRoi(rect.x, rect.y, rect.width, rect.height); ip2 = fht.crop(); int bitDepth = fht.originalBitDepth>0?fht.originalBitDepth:imp.getBitDepth(); switch (bitDepth) { case 8: ip2 = ip2.convertToByte(true); break; case 16: ip2 = ip2.convertToShort(true); break; case 24: showStatus("Setting brightness"); fht.rgb.setBrightness((FloatProcessor)ip2); ip2 = fht.rgb; fht.rgb = null; break; case 32: break; } ip.insert(ip2, 0, 0); }
doMasking(fht); showStatus("Inverse transform"); fht.inverseTransform(); if (fht.quadrantSwapNeeded) fht.swapQuadrants();
fht.inverseTransform(); IJ.showProgress(19,20);
fht.inverseTransform(); IJ.showProgress(19,20);
if (doInverse) { IJ.showStatus("Inverse transform"); result.inverseTransform(); IJ.showStatus("Swap quadrants"); result.swapQuadrants();
if (doInverse) { IJ.showStatus("Inverse transform"); result.inverseTransform(); IJ.showStatus("Swap quadrants"); result.swapQuadrants();