ij.process
Class FHT

java.lang.Object
  extended by ij.process.ImageProcessor
      extended by ij.process.FloatProcessor
          extended by ij.process.FHT

public class FHT
extends FloatProcessor

This class contains a Java implementation of the Fast Hartley Transform. It is based on Pascal code in NIH Image contributed by Arlo Reeves (http://rsb.info.nih.gov/ij/docs/ImageFFT/). The Fast Hartley Transform was restricted by U.S. Patent No. 4,646,256, but was placed in the public domain by Stanford University in 1995 and is now freely available.


Field Summary
 int originalBitDepth
          Used by the FFT class.
 java.awt.image.ColorModel originalColorModel
          Used by the FFT class.
 int originalHeight
          Used by the FFT class.
 int originalWidth
          Used by the FFT class.
 boolean quadrantSwapNeeded
          Used by the FFT class.
 ColorProcessor rgb
          Used by the FFT class.
 
Fields inherited from class ij.process.ImageProcessor
antialiasedText, baseCM, BLACK, BLACK_AND_WHITE_LUT, bLUT1, bLUT2, boldFont, CENTER_JUSTIFY, clipXMax, clipXMin, clipYMax, clipYMin, cm, cm2, cTable, cx, cy, defaultColorModel, drawingColor, font, fontMetrics, gLUT1, gLUT2, height, histogramMax, histogramMin, histogramSize, image, img, interpolate, inversionTested, invertedLut, justification, LEFT_JUSTIFY, lineWidth, lutAnimation, lutUpdateMode, maxThreshold, minThreshold, newPixels, NO_LUT_UPDATE, NO_THRESHOLD, OVER_UNDER_LUT, raster, RED_LUT, RIGHT_JUSTIFY, rLUT1, rLUT2, roiHeight, roiWidth, roiX, roiY, sampleModel, snapshotHeight, snapshotWidth, source, width, xMax, xMin, yMax, yMin
 
Constructor Summary
FHT(ImageProcessor ip)
          Constructs a FHT object from an ImageProcessor.
 
Method Summary
 FHT conjugateMultiply(FHT fht)
          Returns the image resulting from the point by point Hartley conjugate multiplication of this image and the specified image.
 void dfht3(float[] x, int base, boolean inverse, int maxN)
          Performs an optimized 1D FHT.
 FHT divide(FHT fht)
          Returns the image resulting from the point by point Hartley division of this image by the specified image.
 ImageStack getComplexTransform()
          Converts this FHT to a complex Fourier transform and returns it as a two slice stack.
 FHT getCopy()
          Returns a clone of this FHT.
 ImageProcessor getPowerSpectrum()
          Returns an 8-bit power spectrum, log-scaled to 1-254.
 void inverseTransform()
          Performs an inverse transform, converting this image into the space domain.
 FHT multiply(FHT fht)
          Returns the image resulting from the point by point Hartley multiplication of this image and the specified image.
 boolean powerOf2Size()
          Returns true of this FHT contains a square image with a width that is a power of two.
 void rc2DFHT(float[] x, boolean inverse, int maxN)
          Performs a 2D FHT (Fast Hartley Transform).
 void setShowProgress(boolean showProgress)
          Enables/disables display of the progress bar during transforms.
 void swapQuadrants()
          Swap quadrants 1 and 3 and 2 and 4 of the image contained in this FHT.
 void swapQuadrants(ImageProcessor ip)
          Swap quadrants 1 and 3 and 2 and 4 of the specified ImageProcessor so the power spectrum origin is at the center of the image.
 java.lang.String toString()
          Returns a string containing information about this FHT.
 void transform()
          Performs a foreward transform, converting this image into the frequency domain.
 
Methods inherited from class ij.process.FloatProcessor
abs, add, add, and, applyTable, autoThreshold, convolve, convolve3x3, copyBits, createImage, createProcessor, crop, dilate, drawPixel, duplicate, erode, exp, fill, fill, filter, findMinAndMax, flipVertical, gamma, get, getf, getHistogram, getInterpolatedPixel, getMax, getMin, getPixel, getPixel, getPixels, getPixelsCopy, getPixelValue, invert, log, max, medianFilter, min, multiply, noise, or, putPixel, putPixel, putPixelValue, reset, reset, resetMinAndMax, resize, rotate, scale, set, setBackgroundValue, setColor, setf, setMinAndMax, setPixels, setSnapshotPixels, setThreshold, setValue, snapshot, sqr, sqrt, threshold, xor
 
Methods inherited from class ij.process.ImageProcessor
addColor, addColor, addPlotString, clearPlotStrings, convertToByte, convertToFloat, convertToRGB, convertToShort, drawDot, drawDot2, drawLine, drawOval, drawPolygon, drawRect, drawString, drawString, fillOval, fillPolygon, findEdges, flipHorizontal, getAutoThreshold, getAutoThreshold, getBestIndex, getCalibrationTable, getColorModel, getColumn, getCurrentColorModel, getDefaultColorModel, getFloatArray, getFontMetrics, getHeight, getHistogramMax, getHistogramMin, getHistogramSize, getIndexSampleModel, getIntArray, getInterpolate, getInterpolatedValue, getLine, getLutUpdateMode, getMask, getMaskArray, getMaxThreshold, getMinThreshold, getRoi, getRow, getStringWidth, getWidth, hideProgress, insert, invertLut, isColorLut, isInvertedLut, isKillable, isPseudoColorLut, lineTo, makeDefaultColorModel, maskSizeError, moveTo, plotStrings, putColumn, putRow, resetBinaryThreshold, resetRoi, resetThreshold, resize, rotateLeft, rotateRight, setAntialiasedText, setCalibrationTable, setClipRect, setColor, setColorModel, setFloatArray, setFont, setHistogramRange, setHistogramSize, setIntArray, setInterpolate, setJustification, setLineWidth, setLutAnimation, setMask, setProgressBar, setRoi, setRoi, setRoi, setRoi, setSnapshotCopyMode, sharpen, showProgress, smooth
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

quadrantSwapNeeded

public boolean quadrantSwapNeeded
Used by the FFT class.


rgb

public ColorProcessor rgb
Used by the FFT class.


originalWidth

public int originalWidth
Used by the FFT class.


originalHeight

public int originalHeight
Used by the FFT class.


originalBitDepth

public int originalBitDepth
Used by the FFT class.


originalColorModel

public java.awt.image.ColorModel originalColorModel
Used by the FFT class.

Constructor Detail

FHT

public FHT(ImageProcessor ip)
Constructs a FHT object from an ImageProcessor. Byte, short and RGB images are converted to float. Float images are duplicated.

Method Detail

powerOf2Size

public boolean powerOf2Size()
Returns true of this FHT contains a square image with a width that is a power of two.


transform

public void transform()
Performs a foreward transform, converting this image into the frequency domain. The image contained in this FHT must be square and its width must be a power of 2.


inverseTransform

public void inverseTransform()
Performs an inverse transform, converting this image into the space domain. The image contained in this FHT must be square and its width must be a power of 2.


rc2DFHT

public void rc2DFHT(float[] x,
                    boolean inverse,
                    int maxN)
Performs a 2D FHT (Fast Hartley Transform).


dfht3

public void dfht3(float[] x,
                  int base,
                  boolean inverse,
                  int maxN)
Performs an optimized 1D FHT.


getPowerSpectrum

public ImageProcessor getPowerSpectrum()
Returns an 8-bit power spectrum, log-scaled to 1-254. The image in this FHT is assumed to be in the frequency domain.


getComplexTransform

public ImageStack getComplexTransform()
Converts this FHT to a complex Fourier transform and returns it as a two slice stack.


swapQuadrants

public void swapQuadrants(ImageProcessor ip)
Swap quadrants 1 and 3 and 2 and 4 of the specified ImageProcessor so the power spectrum origin is at the center of the image.
                    2 1
                    3 4
                


swapQuadrants

public void swapQuadrants()
Swap quadrants 1 and 3 and 2 and 4 of the image contained in this FHT.


multiply

public FHT multiply(FHT fht)
Returns the image resulting from the point by point Hartley multiplication of this image and the specified image. Both images are assumed to be in the frequency domain. Multiplication in the frequency domain is equivalent to convolution in the space domain.


conjugateMultiply

public FHT conjugateMultiply(FHT fht)
Returns the image resulting from the point by point Hartley conjugate multiplication of this image and the specified image. Both images are assumed to be in the frequency domain. Conjugate multiplication in the frequency domain is equivalent to correlation in the space domain.


divide

public FHT divide(FHT fht)
Returns the image resulting from the point by point Hartley division of this image by the specified image. Both images are assumed to be in the frequency domain. Division in the frequency domain is equivalent to deconvolution in the space domain.


setShowProgress

public void setShowProgress(boolean showProgress)
Enables/disables display of the progress bar during transforms.


getCopy

public FHT getCopy()
Returns a clone of this FHT.


toString

public java.lang.String toString()
Returns a string containing information about this FHT.

Overrides:
toString in class ImageProcessor