void redisplayPowerSpectrum() { FHT fht = (FHT)imp.getProperty("FHT"); if (fht==null) {IJ.error("FFT", "Frequency domain image required"); return;} ImageProcessor ps = fht.getPowerSpectrum(); imp.setProcessor(null, ps); }
void redisplayPowerSpectrum() { FHT fht = (FHT)imp.getProperty("FHT"); if (fht==null) {IJ.error("FFT", "Frequency domain image required"); return;} ImageProcessor ps = fht.getPowerSpectrum(); imp.setProcessor(null, ps); }
void doForwardTransform(FHT fht) { showStatus("Forward transform"); fht.transform(); showStatus("Calculating power spectrum"); long t0 = System.currentTimeMillis(); ImageProcessor ps = fht.getPowerSpectrum(); if (!(displayFHT||displayComplex||displayRawPS)) displayFFT = true; if (displayFFT) { ImagePlus imp2 = new ImagePlus("FFT of "+imp.getTitle(), ps); if (showOutput) imp2.show((System.currentTimeMillis()-t0)+" ms"); imp2.setProperty("FHT", fht); imp2.setCalibration(imp.getCalibration()); String properties = "Fast Hartley Transform\n"; properties += "width: "+fht.originalWidth + "\n"; properties += "height: "+fht.originalHeight + "\n"; properties += "bitdepth: "+fht.originalBitDepth + "\n"; imp2.setProperty("Info", properties); if (!showOutput) this.imp2 = imp2; } }
void doForwardTransform(FHT fht) { showStatus("Forward transform"); fht.transform(); showStatus("Calculating power spectrum"); long t0 = System.currentTimeMillis(); ImageProcessor ps = fht.getPowerSpectrum(); if (!(displayFHT||displayComplex||displayRawPS)) displayFFT = true; if (displayFFT) { ImagePlus imp2 = new ImagePlus("FFT of "+imp.getTitle(), ps); if (showOutput) imp2.show((System.currentTimeMillis()-t0)+" ms"); imp2.setProperty("FHT", fht); imp2.setCalibration(imp.getCalibration()); String properties = "Fast Hartley Transform\n"; properties += "width: "+fht.originalWidth + "\n"; properties += "height: "+fht.originalHeight + "\n"; properties += "bitdepth: "+fht.originalBitDepth + "\n"; imp2.setProperty("Info", properties); if (!showOutput) this.imp2 = imp2; } }
private ImagePlus openFFT(ImagePlus imp) { ImageProcessor ip = imp.getProcessor(); FHT fht = new FHT(ip, true); ImageProcessor ps = fht.getPowerSpectrum(); ImagePlus imp2 = new ImagePlus(imp.getTitle(), ps); imp2.setProperty("FHT", fht); imp2.setProperty("Info", imp.getInfoProperty()); fht.originalWidth = (int)imp2.getNumericProperty("width"); fht.originalHeight = (int)imp2.getNumericProperty("height"); fht.originalBitDepth = (int)imp2.getNumericProperty("bitdepth"); fht.originalColorModel = ip.getColorModel(); imp2.setCalibration(imp.getCalibration()); return imp2; }
private ImagePlus openFFT(ImagePlus imp) { ImageProcessor ip = imp.getProcessor(); FHT fht = new FHT(ip, true); ImageProcessor ps = fht.getPowerSpectrum(); ImagePlus imp2 = new ImagePlus(imp.getTitle(), ps); imp2.setProperty("FHT", fht); imp2.setProperty("Info", imp.getInfoProperty()); fht.originalWidth = (int)imp2.getNumericProperty("width"); fht.originalHeight = (int)imp2.getNumericProperty("height"); fht.originalBitDepth = (int)imp2.getNumericProperty("bitdepth"); fht.originalColorModel = ip.getColorModel(); imp2.setCalibration(imp.getCalibration()); return imp2; }
/** * Multiplies a Fourier domain image by a filter * @param imp A frequency domain image, which is modified. * @param filter The filter, 32-bits (0-1) or 8-bits (0-255) * @see #forward * @see #inverse * @see #filter */ public static void multiply(ImagePlus imp, ImageProcessor filter) { Object obj = imp.getProperty("FHT"); FHT fht = obj!=null&&(obj instanceof FHT)?(FHT)obj:null; if (fht==null) return; int size = fht.getWidth(); boolean isFloat = filter.getBitDepth()==32; if (!isFloat) filter = filter.convertToByte(true); filter = filter.resize(size, size); fht.swapQuadrants(filter); float[] fhtPixels = (float[])fht.getPixels(); for (int i=0; i<fhtPixels.length; i++) { if (isFloat) fhtPixels[i] = fhtPixels[i]*filter.getf(i); else fhtPixels[i] = (float)(fhtPixels[i]*(filter.get(i)/255.0)); } fht.swapQuadrants(filter); imp.setProcessor(null, fht.getPowerSpectrum()); }
/** * Multiplies a Fourier domain image by a filter * @param imp A frequency domain image, which is modified. * @param filter The filter, 32-bits (0-1) or 8-bits (0-255) * @see #forward * @see #inverse * @see #filter */ public static void multiply(ImagePlus imp, ImageProcessor filter) { Object obj = imp.getProperty("FHT"); FHT fht = obj!=null&&(obj instanceof FHT)?(FHT)obj:null; if (fht==null) return; int size = fht.getWidth(); boolean isFloat = filter.getBitDepth()==32; if (!isFloat) filter = filter.convertToByte(true); filter = filter.resize(size, size); fht.swapQuadrants(filter); float[] fhtPixels = (float[])fht.getPixels(); for (int i=0; i<fhtPixels.length; i++) { if (isFloat) fhtPixels[i] = fhtPixels[i]*filter.getf(i); else fhtPixels[i] = (float)(fhtPixels[i]*(filter.get(i)/255.0)); } fht.swapQuadrants(filter); imp.setProcessor(null, fht.getPowerSpectrum()); }
} else { IJ.showStatus("Power spectrum"); ImageProcessor ps = result.getPowerSpectrum(); imp3 = new ImagePlus(title, ps.convertToFloat()); result.quadrantSwapNeeded = true;
} else { IJ.showStatus("Power spectrum"); ImageProcessor ps = result.getPowerSpectrum(); imp3 = new ImagePlus(title, ps.convertToFloat()); result.quadrantSwapNeeded = true;