picture.filter
Class FFT

java.lang.Object
  |
  +--picture.DefaultTransformation
        |
        +--picture.filter.FFT
All Implemented Interfaces:
ProgressViewableTransformation, java.io.Serializable, Transformation

public class FFT
extends DefaultTransformation

Klasse zur Berechnung der schnellen Fouriertransformation.

Zur Vereinfachung wird die folgende Vereinbarung getroffen: Die FFT selbst wird im Folgenden als Vorwaerts-FFT, die inverse FFT als Rueckwaerts-FFT bezeichnet.

See Also:
Serialized Form

Constructor Summary
FFT()
          Erzeugt eine neue Vorwaerts-FFT, die den Mittelpunkt nicht verschiebt.
FFT(boolean inverse)
          Erzeugt eine neue FFT.
FFT(boolean inverse, boolean shift)
          Erzeugt eine neue FFT.
 
Method Summary
 int getNumberOfProgressSteps(Picture p)
          Bestimmt die Anzahl der Schritte, die bei den aktuellen Einstellungen auf den ProgressHandler von p ausgeführt werden, wenn diese Transformation auf p ausgeführt wird.
 boolean isInverse()
          Gibt an, ob diese FFT vorwaerts (false) oder rueckwaerts (true) arbeitet.
 boolean isShifting()
          Gibt an, ob diese FFT nach der Berechnung eine Mittelpunktsverschiebung durchfuehren soll.
protected static int numberOfBitsNeeded(int powerOfTwo)
          Liefert i, falls powerOfTwo = 2^i.
 Picture of(Picture p)
          Berechnet die Fouriertransformierte des uebergebenen Bildes.
 Layer of(ProgressHandler ph, Layer p)
          Fuehrt die Transformation auf einer Bildebene aus.
protected static int reverseBits(int index, int numBits)
          Bitdrehereien
 void setInverse(boolean inverse)
          Legt fest, ob diese FFT vorwaerts (false) oder rueckwaerts (true) arbeiten soll.
 void setShifting(boolean shift)
          Legt fest, ob vor/nach der Berechnung eine Mittelpunktsverschiebung durchzufuehren ist.
 
Methods inherited from class picture.DefaultTransformation
createNewInstance, filterOptionPane, getDistance, getPreferredFileName, isPowerOfTwo, loadFrom, saveTo
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FFT

public FFT(boolean inverse,
           boolean shift)
Erzeugt eine neue FFT.
Parameters:
inverse: - Falls true, wird die inverse DFT berechnet.
shift: - Falls true, wird nach der Transformation der Mittelpunkt verschoben

FFT

public FFT(boolean inverse)
Erzeugt eine neue FFT.
Parameters:
inverse: - Falls true, wird die inverse DFT berechnet.

FFT

public FFT()
Erzeugt eine neue Vorwaerts-FFT, die den Mittelpunkt nicht verschiebt.
Method Detail

numberOfBitsNeeded

protected static final int numberOfBitsNeeded(int powerOfTwo)
Liefert i, falls powerOfTwo = 2^i.

reverseBits

protected static final int reverseBits(int index,
                                       int numBits)
Bitdrehereien

isInverse

public boolean isInverse()
Gibt an, ob diese FFT vorwaerts (false) oder rueckwaerts (true) arbeitet.
Returns:
true, falls diese FFT die inverse FFT berechnet.
See Also:
setInverse(boolean)

setInverse

public void setInverse(boolean inverse)
Legt fest, ob diese FFT vorwaerts (false) oder rueckwaerts (true) arbeiten soll.
Parameters:
inverse - gibt an, ob die Inverse FFT berechnet werden soll.
See Also:
isInverse()

isShifting

public boolean isShifting()
Gibt an, ob diese FFT nach der Berechnung eine Mittelpunktsverschiebung durchfuehren soll. Falls ja, wird folgendes getan: Nach einer Vorwaerts-FFT wird das Bild zyklisch in beiden Dimensionen um die Haelfte verschoben. Dies hat zur Folge, dass das Transforierte Bild den typischen FFT-Peak in der Mitte hat. Ist diese FFT eine Rueckwaerts-FFT, so wird diese Mittelpunktsverschiebung vor der Berechnung durchgefuehrt. Damit wird die Kompatibilitaet zwischen Vorwaerts- und Rueckwaerts-FFT wieder hergestellt.
Returns:
true, falls diese FFT nach/vor der Berechnung das Bild zyklisch verschiebt.
See Also:
setShifting(boolean)

setShifting

public void setShifting(boolean shift)
Legt fest, ob vor/nach der Berechnung eine Mittelpunktsverschiebung durchzufuehren ist.
Parameters:
shift: - gibt an, ob eine Mittelpunktsverschiebung durchgefuehrt werden soll.
See Also:
isShifting()

of

public Layer of(ProgressHandler ph,
                Layer p)
         throws PictureException
Description copied from class: DefaultTransformation
Fuehrt die Transformation auf einer Bildebene aus.
Overrides:
of in class DefaultTransformation

getNumberOfProgressSteps

public int getNumberOfProgressSteps(Picture p)
Description copied from interface: ProgressViewableTransformation
Bestimmt die Anzahl der Schritte, die bei den aktuellen Einstellungen auf den ProgressHandler von p ausgeführt werden, wenn diese Transformation auf p ausgeführt wird.
Following copied from interface: picture.ProgressViewableTransformation
Returns:
Anzahl der Schritte

of

public Picture of(Picture p)
           throws PictureException
Berechnet die Fouriertransformierte des uebergebenen Bildes.

Diese Methode unterstuetzt den Progress-Listener-Mechanismus der Klasse Layer mit 2 * width Events.

Overrides:
of in class DefaultTransformation
Parameters:
p: - Quellbild
Returns:
DFT(p)
Throws:
PictureException, - falls p nicht quadratisch ist, oder die Breite von p keine Potenz von zwei ist.
See Also:
ProgressHandler