picture
Class FilterPicture

java.lang.Object
  |
  +--picture.Picture
        |
        +--picture.FilterPicture
All Implemented Interfaces:
PictureConstants, PictureModel, PictureProperty

public class FilterPicture
extends Picture

Diese Klasse implementiert einen Filter. Sie wird von der Klasse PassFilter zur Berechnung von Hoch-, Tief- und Bandpassfiltern verwendet.


Field Summary
static int BANDPASSFILTER
          Kennzeichnet einen Bandpassfilter
static int HIGHPASSFILTER
          Kennzeichnet einen Hochpassfilter
static int LOWPASSFILTER
          Kennzeichnet einen Tiefpassfilter
 
Fields inherited from class picture.Picture
fileName, height, layers, ph, pictureType, presentation, preview, width
 
Fields inherited from interface picture.PictureConstants
PRESENT_ABSOLUTE_VALUE, PRESENT_IMAGINARY_PART, PRESENT_POLAR_ANGLE, PRESENT_REAL_PART, SAVE_ABSOLUTE_VALUE, SAVE_COMPLEX, SAVE_IMAGINARY_PART, SAVE_POLAR_ANGLE, SAVE_REAL_PART
 
Constructor Summary
FilterPicture()
           
FilterPicture(int mode, double min, double max, int width, int height, boolean graduell)
          Erzeugt einen neuen Bandpassfilter.
FilterPicture(Picture pm)
          Erzeugt ein FilterPicture aus dem angegebenen Model.
FilterPicture(Term f, int width, int height)
          Erzeugt eine neue Filterdatei.
 
Method Summary
static double bandpass(double x, double x0, double x1)
          Berechnet die fuer graduelle Bandpassfilter verwendete Funktion b: [0, 1] -> [0, 1] an der Stelle x.
 Picture getViewableInstance()
          Intern wird der Mittelpunkt links oben angenommen.
static double highpass(double x, double x0)
          Berechnet die fuer einen graduellen Hochpassfilter verwendete Funktion h: [0, 1] -> [0, 1] an der Stelle x.
 boolean isComplex()
          Gibt an, ob dieses Bild semantisch gesehen ein komplexwertiges Bidl ist, d.h. ob es zwei Ebenen hat und die eine Ebene als Real- und die andere Ebene als Imaginärteil aufgefaßt werden kann.
static double lowpass(double x, double x0)
          Berechnet die fuer einen graduellen Tiefpass-Filter verwendete Funktion f: [0, 1] -> [0, 1] an der Stelle x. Mit x0 wird Grenzstelle angegeben.
 
Methods inherited from class picture.Picture
addChangeListener, convert, fireChangeEvent, fireProgressEvent, getDataFrom, getEmbeddedInstance, getFileName, getHeight, getImage, getInfo, getLayer, getNumberOfLayers, getPictureType, getPresentation, getPreview, getProgressHandler, getScaledInstance, getShiftedInstance, getValue, getWeightedInstance, getWidth, histogram, isColored, removeChangeListener, save, saveToFile, saveToFile, saveToFile, saveToFile, setDefaultPresentation, setFileName, setPictureType, setPresentation, setProgressHandler
 
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
Constructor Detail

FilterPicture

public FilterPicture()

FilterPicture

public FilterPicture(Picture pm)
Erzeugt ein FilterPicture aus dem angegebenen Model. Intern wird mit dem Ursprung oben links in der Ecke gearbeitet. Die graphische Benutzerschnittstelle zeigt aber aus Anschauungsgruenden den Ursprung in der Mitte. Wenn der Benutzer eine Datei als Filter auswaehlt, wird diese wohl dann auch den Ursprung in der Mitte haben. Dieser Konstruktor erzeugt aus einem solchen Bild eines, in dem der Ursprung oben links liegt, indem einfach das untere Viertel des uebergebenen Bildes betrachtet wird. Beachte: Dazu muss das uebergebene Bild punktsymmetrisch zum Mittelpunkt sein.

FilterPicture

public FilterPicture(int mode,
                     double min,
                     double max,
                     int width,
                     int height,
                     boolean graduell)
Erzeugt einen neuen Bandpassfilter. Das Bild ist komplett schwarz (0), ausser im filterspezifischen Bereich: Fuer den Bandpassfilter werden alle Punkte, deren Abstand zum Ursprung (0, 0) zwischen min und max liegt, auf weiss (1) gesetzt. Fuer den Hochpassfilter werden alle Punkte, deren Abstand zum Mittelpunkt groesser ist als min, auf weiss gesetzt und fuer den Tiefpassfilter werden alle Punkte, deren Abstand zum Mittelpunkt kleiner ist als max, auf weiss gesetzt. min und max seien auf (0..1) normiert.

Wir ein Gradueller Filter gewuenscht, so werden zur Berechnung die dem angegebenen Filter entsprechenden Methoden dieser Klasse verwendet.

Parameters:
mode: - BANDPASSFILTER, HIGHPASSFILTER oder LOWPASSFILTER.
min: - Innenring
max: - Aussenring
width: - Breite des zu erzeugenden Bildes
height: - Hoehe des zu erzeugenden Bildes
graduell: - true, um einen graduellen Filter zu erzeugen

FilterPicture

public FilterPicture(Term f,
                     int width,
                     int height)
              throws PictureException
Erzeugt eine neue Filterdatei. Die Funktion f wird dabei als Filterfunktion verwendet, wobei nur der Realteil der Funktionswerte berücksichtigt wird.
Throws:
PictureException, - falls f ausser x noch weitere Variablen enthaelt.
Method Detail

getViewableInstance

public Picture getViewableInstance()
Intern wird der Mittelpunkt links oben angenommen. Diese Methode verschiebt den Punkt links oben in die Mitte des Bildes und setzt den Rest derart fort, dass ein zum Mittelpunkt punktsymmetrisches Bild entsteht, das den Anzeigegepflogenheiten in FilterPane entspricht. Achtung: Dabei gehen Informationen verloren, da das eigentliche Bild auf 25% zusammengestaucht wird.

Das Datenformat des zurueckgegebenen Bildes ist pgm.


isComplex

public boolean isComplex()
Description copied from class: Picture
Gibt an, ob dieses Bild semantisch gesehen ein komplexwertiges Bidl ist, d.h. ob es zwei Ebenen hat und die eine Ebene als Real- und die andere Ebene als Imaginärteil aufgefaßt werden kann. Die Standardimplementierung dieser Methode liefert grundsätzlich false zurück. Unterklassen mögen sie geeignet überschreiben.
Overrides:
isComplex in class Picture
Following copied from class: picture.Picture
Returns:
ist dieses Bild komplexwertig?

lowpass

public static double lowpass(double x,
                             double x0)
Berechnet die fuer einen graduellen Tiefpass-Filter verwendete Funktion
f: [0, 1] -> [0, 1]
an der Stelle x.

Mit x0 wird Grenzstelle angegeben. Wir definieren

t := min(x0, 1 - x0).
Fuer die Funktion f gilt dann: Zur Berechnung von werden Exponentialfunktionen herangezogen.
Parameters:
x - Stelle, an der die Funktion ausgewertet werden soll
x0 - Grenzstelle.
Returns:
f(x)

highpass

public static double highpass(double x,
                              double x0)
Berechnet die fuer einen graduellen Hochpassfilter verwendete Funktion
h: [0, 1] -> [0, 1]
an der Stelle x. Es gilt
h(x) := 1 - f(x),
wobei f: [0, 1] -> [0, 1] die Hochpassfilterfunktion ist. Naehere Informationen siehe also dort.
Parameters:
x - Stelle, an der die Funktion ausgewertet werden soll.
x0 - Grenzstelle
Returns:
h(x)
See Also:
highpass(double, double)

bandpass

public static double bandpass(double x,
                              double x0,
                              double x1)
Berechnet die fuer graduelle Bandpassfilter verwendete Funktion
b: [0, 1] -> [0, 1]
an der Stelle x. Mit x1 und x2 werden die Grenzstellen spezifiziert. Fuer die Funktion b gilt:
Parameters:
x - Stelle, an der die Funktion ausgewertet werden soll.
x0 - erste Grenzstelle
x1 - zweite Grenzstelle
Returns:
b(x)