picture.filter
Class PassFilter

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

public class PassFilter
extends DefaultTransformation

Diese Klasse erlaubt die Filterung von Layer-Objekten mit Hoch-, Tief- und Bandpassfiltern. Zusaetzlich ist die Verwendung allgemeiner Filterfunktionen sowie die Verwendung von Filterdateien moeglich.

See Also:
Serialized Form

Field Summary
static int BANDPASSFILTER
          Kennzeichnet einen Bandpassfilter
static int FILE
          Kennzeichnet die Verwendung einer Filterdatei
static int HIGHPASSFILTER
          Kennzeichnet einen Hochpassfilter
static int LOWPASSFILTER
          Kennzeichnet einen Tiefpassfilter
static int TERM
          Kennzeichnet die Verwendung einer Filterfunktion
 
Constructor Summary
PassFilter(double min, double max)
          Erzeugt einen neuen Bandpassfilter mit den angegebenen Grenzen Die Werte min und max sollten zwischen 0 und 1 liegen.
PassFilter(int mode)
          Erzeugt einen neuen Filter.
PassFilter(Picture picture)
          Erzeugt einen neuen Passfilter mit der durch das angegebene PictureModel definierte Filterfunktion.
PassFilter(Term t)
          Erzeugt einen neuen Passfilter mit der angegebenen Filterfunktion.
 
Method Summary
 FilterPicture createFilterPicture(int width, int height)
          erzeugt ein PGM-Bild der Groesse width x height, das den aktuell gesetzten Optionen dieses Objekts entspricht.
 DialogPane filterOptionPane(javax.swing.JFrame owner, Picture pic)
          Liefert einen Optionendialog zurück.
 double[] getBounds()
          Gibt Ober- und Untergrenze zurueck, die fuer Band- Tief- und Hochpassfilter verwendet werden.
 Term getFunction()
          falls der aktuelle Modus TERM ist, gibt diese Methode die Filterfunktion zurueck, die angegeben wurde.
 int getMode()
          Gibt den aktuellen Modus zurueck.
 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.
 Picture getPicture()
          Falls der aktuelle Modus FILE ist, gibt diese Methode das PictureModel zurueck, mit dem gefiltert wird.
 boolean isGraduell()
          gibt an, ob dieser Filter graduell ist.
 Picture of(Picture p)
          Jagt das Bild p durch diesen Filter und gibt das Ergebnis zurueck.
 Layer of(ProgressHandler ph, Layer p)
          Fuehrt die Transformation auf einer Bildebene aus.
 void setBounds(double min, double max)
          Setzt Unter- und Obergrenze, wie sie fuer einen Bandpassfilter verwendet werden.
 void setFunction(Term t)
          Legt die Filterfunktion fest.
 void setGraduell(boolean b)
          Legt fest, ob die Filterung im Falle von Band-, Tief- oder Hochpassfiltern graduell sein soll oder nicht.
 void setMode(int mode)
          Legt den Modus fest.
 void setPicture(Picture picture)
          Legt das PictureModel fest, das zur impliziten Definition der Filterfunktion herangezogen werden soll.
 
Methods inherited from class picture.DefaultTransformation
createNewInstance, getDistance, getPreferredFileName, isPowerOfTwo, loadFrom, saveTo
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

BANDPASSFILTER

public static final int BANDPASSFILTER
Kennzeichnet einen Bandpassfilter

HIGHPASSFILTER

public static final int HIGHPASSFILTER
Kennzeichnet einen Hochpassfilter

LOWPASSFILTER

public static final int LOWPASSFILTER
Kennzeichnet einen Tiefpassfilter

FILE

public static final int FILE
Kennzeichnet die Verwendung einer Filterdatei

TERM

public static final int TERM
Kennzeichnet die Verwendung einer Filterfunktion
Constructor Detail

PassFilter

public PassFilter(int mode)
           throws java.lang.IllegalArgumentException
Erzeugt einen neuen Filter. Als Filtergrenzen werden die Standardwerte 0.33 und 0.66 genommen.
Parameters:
mode: - eins von BANDPASSFILTER, HIGHPASSFILTER, LOWASSFILTER.
Throws:
IllegalArgumentException, - falls mode nicht einen der oben genannten Werte hat.

PassFilter

public PassFilter(double min,
                  double max)
Erzeugt einen neuen Bandpassfilter mit den angegebenen Grenzen Die Werte min und max sollten zwischen 0 und 1 liegen.
Parameters:
min - Untergrenze
max - Obergrenze

PassFilter

public PassFilter(Picture picture)
Erzeugt einen neuen Passfilter mit der durch das angegebene PictureModel definierte Filterfunktion. Es wird angenommen, das der Ursprung des Koordinatensystems in der Mitte des Bildes liegt.
Parameters:
picture: - implizit gegebene Filterfunktion

PassFilter

public PassFilter(Term t)
Erzeugt einen neuen Passfilter mit der angegebenen Filterfunktion. Die Funktion wird ausgewertet auf dem Intervall [0, 1].
Method Detail

setBounds

public void setBounds(double min,
                      double max)
Setzt Unter- und Obergrenze, wie sie fuer einen Bandpassfilter verwendet werden. Im Falle eines Tiefpassfilters ist die Obergrenze, im Falle eines Hochpassfilters die Untergrenze entscheidend.

getBounds

public double[] getBounds()
Gibt Ober- und Untergrenze zurueck, die fuer Band- Tief- und Hochpassfilter verwendet werden.

setMode

public void setMode(int mode)
             throws java.lang.IllegalArgumentException
Legt den Modus fest.
Parameters:
mode: - eins von BANDPASSFILTER, LOWPASSFILTER, HIGHPASSFILTER.
Throws:
IllegalArgumentException, - falls mode keinen der oben genannten Werte hat.

getMode

public int getMode()
Gibt den aktuellen Modus zurueck. Dieser kann sein: BANDPASSFILTER, LOWAPASSFILTER, HIGHPASSFILTER, FILE, TERM

setPicture

public void setPicture(Picture picture)
Legt das PictureModel fest, das zur impliziten Definition der Filterfunktion herangezogen werden soll.

getPicture

public Picture getPicture()
Falls der aktuelle Modus FILE ist, gibt diese Methode das PictureModel zurueck, mit dem gefiltert wird.

setFunction

public void setFunction(Term t)
Legt die Filterfunktion fest.

getFunction

public Term getFunction()
falls der aktuelle Modus TERM ist, gibt diese Methode die Filterfunktion zurueck, die angegeben wurde.

setGraduell

public void setGraduell(boolean b)
Legt fest, ob die Filterung im Falle von Band-, Tief- oder Hochpassfiltern graduell sein soll oder nicht.

isGraduell

public boolean isGraduell()
gibt an, ob dieser Filter graduell ist. Ob ein Filter graduell ist oder nicht, hat nur Einfluss bei Hoch- Tief- und Bandpassfiltern

createFilterPicture

public FilterPicture createFilterPicture(int width,
                                         int height)
                                  throws PictureException
erzeugt ein PGM-Bild der Groesse width x height, das den aktuell gesetzten Optionen dieses Objekts entspricht. Dabei wird der Ursprung in die Mitte des Bildes gelegt.

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
Jagt das Bild p durch diesen Filter und gibt das Ergebnis zurueck. Die Filterart ist festgelegt durch die letzte Angabe von Daten. Bsp: Wurde dieser Filter mit dem Konstruktor
  PassFilter(int, double, double)
 
erzeugt und anschliessend die Methode
  setFunction(Term)
 
ausgefuehrt, so wird zur Filterung der in der Methode setFunction angegebene Term verwendet. Ein Sonderfall ist die Methode setBounds. Diese setzt die Filterart stets auf Bandpassfilter. Wuenscht man jedoch eine andere Filterart, so steht dafuer die Methode setMode zur Verfuegung, mit der Tief- und Hochpassfilter eingestellt werden koennen.

Die Filterung ist wie folgt definiert: Es sei f das Bild, das nach der oben beschriebenen Art erzeugt wurde und p das zu filternde Bild. Dann liefert diese Funktion das Bild

FFT-1(FFT(p) * f),
wobei mit * die pixelweise Multiplikation gemeint ist.

Diese Methode unterstuetzt den ProgressHandler-Mechanismus der Klasse Layer mit 4 * p.getWidth() Events.

Overrides:
of in class DefaultTransformation
Parameters:
p - Quellbild
Returns:
Ergebnisbild.
Throws:
PictureException - z.B. wenn die Filterfunktion ungueltig ist.

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

filterOptionPane

public DialogPane filterOptionPane(javax.swing.JFrame owner,
                                   Picture pic)
                            throws PictureException
Liefert einen Optionendialog zurück.
Overrides:
filterOptionPane in class DefaultTransformation
Parameters:
owner - Parentframe
pic - zu berbeitendes Bild
Returns:
OptionenDialog