picture.filter
Class Wavelet

java.lang.Object
  |
  +--picture.DefaultTransformation
        |
        +--picture.filter.Wavelet
All Implemented Interfaces:
ProgressViewableTransformation, java.io.Serializable, Transformation
Direct Known Subclasses:
Wavelet.HaarWavelet

public class Wavelet
extends DefaultTransformation

Waveletklasse.

See Also:
Serialized Form

Inner Class Summary
static class Wavelet.HaarWavelet
          Ueberschreibt die Methoden zur Analyse und Synthese fuer den speziellen Fall des Haar-Wavelets.
 
Field Summary
static int ANALYSIS
           
static int ANALYSIS_WITHOUT_DETAILS
           
static int COMMON
           
static int DAUB10
           
static int DAUB12
           
static int DAUB14
           
static int DAUB16
           
static int DAUB18
           
static int DAUB20
           
static int DAUB4
           
static int DAUB6
           
static int DAUB8
           
static int HAAR
           
static int MULTI_ANALYSIS
           
static int MULTI_SYNTHESIS
           
static double SCALE_FACTOR
           
static int SYNTHESIS
           
static int SYNTHESIS_WITHOUT_DETAILS
           
static int TOTAL_ANALYSIS
           
static int TOTAL_SYNTHESIS
           
 
Constructor Summary
Wavelet()
          Erzeugt ein Daubechies-4-Wavelet zur Analyse.
Wavelet(double[] h, int mode)
           
Wavelet(double[] h, int mode, boolean details)
          Erzeugt ein diskretes Wavelet.
 
Method Summary
 DialogPane filterOptionPane(javax.swing.JFrame owner, Picture pic)
          Liefert einen Optionendialog zurück.
 double[][] getAlmostTotalAnalysis(ProgressHandler ph, double[][] data, int iterations)
          Berechnet die Totale Analyse des uebergebenen, zweidimensionalen, komplexen Datensatzes.
 double[][] getAlmostTotalSynthesis(ProgressHandler ph, double[][] data, int iterations)
          Gegenstueck zu getAlmostTotalAnalysis
 double[] getAnalysis(double[] in)
          Berechnet die Wavelettransformierte anhand dieses Wavelets.
 double[] getAnalysisWithoutDetails(double[] in)
          Berechnet die Wavelettransformierte anhand dieses Wavelets.
 double[] getCoefficients()
          Erzeugt eine Kopie der hs dieses Feldes
static Wavelet getDaubechiesWavelet(int n, int mode)
          Erzeugt ein Daubechies-Wavelet mit n Koeffizienten. mode gibt an, ob Analyse oder Synthese.
static Wavelet getDaubechiesWavelet(int n, int mode, boolean details)
           
static Wavelet getHaarWavelet(int mode)
          Erzeugt ein Haar-Wavelet.
static Wavelet getHaarWavelet(int mode, boolean details)
           
 int getMode()
          Liefert den Modus zurueck, der die Aktion dieses Wavlets bestimmt.
 int getMultiSteps()
          Liefert die Anzahl Schritte für MULTI_{ANALYSIS,SYNTHESIS}-Modus.
 int getNumberOfProgressSteps(Picture p)
          Liefert die Anzahl der ProgressEvents, die auf einem Bild ausgeworfen werden, das of(Layer) uebergeben wird.
 double[][] getRedundantAnalysis(double[] in, int offset)
          Berechnet die redunante Wavelettransformierte anhand dieses Wavelets.
 Picture getRedundantAnalysis(Picture p)
          Erzeugt ein Picture mit 1 + 3 * iterations Layern.
 double[] getRedundantSynthesis(double[][] in, int offset)
          Gegenstueck zu getRedunantÁnalysis.
 double[] getRedundantSynthesis(double[] scale, double[] detail, int offset)
           
 Picture getRedundantSynthesis(Picture p)
          Gegenstueck zu getRedundantAnalysis.
 double[] getSynthesis(double[] in)
          Berechnet die Synthese
 double[] getSynthesisWithoutDetails(double[] in)
           
 double[][] getTotalAnalysis(ProgressHandler ph, Layer p)
           
 double[][] getTotalSynthesis(ProgressHandler ph, Layer p)
           
 int getType()
          Gibt an, ob dieses Wavelet erzeugt wurde durch Angabe eines Koeffizientenfeldes oder mit einer der Methoden getDaubechiesWavelet(), getHaarWavelet().
 boolean isScalingDetails()
          Gibt an, ob die Details nach der Analyse [Synthese] um den Faktor zwei angehoben [reduziert] werden sollen, um deren Struktur besser erkenntlich zu machen.
static void main(java.lang.String[] args)
           
 Layer of(ProgressHandler ph, Layer p)
          Liefert die Waveletanalyse bzw.
 void setMode(int m)
          Setzt den Modus, der die Aktion dieses Wavelets bestimmt.
 void setMultiSteps(int multiSteps)
          Setzt die Anzahl Schritte für MULTI_{ANALYSIS,SYNTHESIS}-Modus.
 void setScalingDetails(boolean b)
          legt fest, ob die Details nach der Analyse [Synthese] um den Faktor zwei angehoben [reduziert] werden sollen, um deren Struktur besser erkenntlich zu machen.
 
Methods inherited from class picture.DefaultTransformation
createNewInstance, getDistance, getPreferredFileName, isPowerOfTwo, loadFrom, of, saveTo
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

COMMON

public static final int COMMON

HAAR

public static final int HAAR

DAUB4

public static final int DAUB4

DAUB6

public static final int DAUB6

DAUB8

public static final int DAUB8

DAUB10

public static final int DAUB10

DAUB12

public static final int DAUB12

DAUB14

public static final int DAUB14

DAUB16

public static final int DAUB16

DAUB18

public static final int DAUB18

DAUB20

public static final int DAUB20

ANALYSIS

public static final int ANALYSIS

SYNTHESIS

public static final int SYNTHESIS

TOTAL_ANALYSIS

public static final int TOTAL_ANALYSIS

ANALYSIS_WITHOUT_DETAILS

public static final int ANALYSIS_WITHOUT_DETAILS

SYNTHESIS_WITHOUT_DETAILS

public static final int SYNTHESIS_WITHOUT_DETAILS

TOTAL_SYNTHESIS

public static final int TOTAL_SYNTHESIS

MULTI_ANALYSIS

public static final int MULTI_ANALYSIS

MULTI_SYNTHESIS

public static final int MULTI_SYNTHESIS

SCALE_FACTOR

public static final double SCALE_FACTOR
Constructor Detail

Wavelet

public Wavelet()
Erzeugt ein Daubechies-4-Wavelet zur Analyse.

Wavelet

public Wavelet(double[] h,
               int mode)

Wavelet

public Wavelet(double[] h,
               int mode,
               boolean details)
Erzeugt ein diskretes Wavelet. Das double-Feld bezeichnet die Koeffizienten h_i, aus denen die g_i berechnet werden. mode gibt an, ob ein Analyse- oder Synthese-Wavelet erzeugt werden soll.
Method Detail

getDaubechiesWavelet

public static final Wavelet getDaubechiesWavelet(int n,
                                                 int mode)
Erzeugt ein Daubechies-Wavelet mit n Koeffizienten. mode gibt an, ob Analyse oder Synthese.
Throws:
ArithmeticException, - falls n ungerade oder kleiner 4 oder groesser 20

getDaubechiesWavelet

public static final Wavelet getDaubechiesWavelet(int n,
                                                 int mode,
                                                 boolean details)
                                          throws java.lang.IllegalArgumentException

getHaarWavelet

public static final Wavelet getHaarWavelet(int mode)
Erzeugt ein Haar-Wavelet.

getHaarWavelet

public static final Wavelet getHaarWavelet(int mode,
                                           boolean details)

getCoefficients

public double[] getCoefficients()
Erzeugt eine Kopie der hs dieses Feldes

isScalingDetails

public boolean isScalingDetails()
Gibt an, ob die Details nach der Analyse [Synthese] um den Faktor zwei angehoben [reduziert] werden sollen, um deren Struktur besser erkenntlich zu machen.

setScalingDetails

public void setScalingDetails(boolean b)
legt fest, ob die Details nach der Analyse [Synthese] um den Faktor zwei angehoben [reduziert] werden sollen, um deren Struktur besser erkenntlich zu machen.

getMode

public int getMode()
Liefert den Modus zurueck, der die Aktion dieses Wavlets bestimmt.

setMode

public void setMode(int m)
Setzt den Modus, der die Aktion dieses Wavelets bestimmt.
Parameters:
mode: - eins von ANALYSIS, ANALYSIS_WITHOUT_DETAILS, TOTAL_ANALYSIS, SYNTHESIS, SYNTHESIS_WITHOUT_DETAILS, TOTAL_SYNTHESIS, MULTI_ANALYSIS, MULTI_SYNTHESIS.

getMultiSteps

public int getMultiSteps()
Liefert die Anzahl Schritte für MULTI_{ANALYSIS,SYNTHESIS}-Modus.

setMultiSteps

public void setMultiSteps(int multiSteps)
Setzt die Anzahl Schritte für MULTI_{ANALYSIS,SYNTHESIS}-Modus.

getType

public int getType()
Gibt an, ob dieses Wavelet erzeugt wurde durch Angabe eines Koeffizientenfeldes oder mit einer der Methoden getDaubechiesWavelet(), getHaarWavelet().

getAnalysis

public double[] getAnalysis(double[] in)
Berechnet die Wavelettransformierte anhand dieses Wavelets.

getRedundantAnalysis

public double[][] getRedundantAnalysis(double[] in,
                                       int offset)
Berechnet die redunante Wavelettransformierte anhand dieses Wavelets. Grob- und Feinanteil sind anschliessend je genauso lang wie das Eingabesignal Bei Eingabe eines Feldes double[k] wird ein Feld double[2][k] erzeugt, wobei double[0] den Grob- und double[1] den Feinanteil enthaelt.

getAnalysisWithoutDetails

public double[] getAnalysisWithoutDetails(double[] in)
Berechnet die Wavelettransformierte anhand dieses Wavelets.

getSynthesis

public double[] getSynthesis(double[] in)
Berechnet die Synthese

getRedundantSynthesis

public double[] getRedundantSynthesis(double[] scale,
                                      double[] detail,
                                      int offset)

getRedundantSynthesis

public double[] getRedundantSynthesis(double[][] in,
                                      int offset)
Gegenstueck zu getRedunantÁnalysis.

getSynthesisWithoutDetails

public double[] getSynthesisWithoutDetails(double[] in)

of

public Layer of(ProgressHandler ph,
                Layer p)
         throws PictureException
Liefert die Waveletanalyse bzw. Synthese des Bildes p. Es werden abhaengig von der Aktion einige ProgressEvents auf dem uebergebenen Bild ausgefuehrt. Die Anzahl dieser kann mit getNumberOfProgressSteps(Picture) erfahren werden.
Overrides:
of in class DefaultTransformation

getNumberOfProgressSteps

public int getNumberOfProgressSteps(Picture p)
Liefert die Anzahl der ProgressEvents, die auf einem Bild ausgeworfen werden, das of(Layer) uebergeben wird.
Following copied from interface: picture.ProgressViewableTransformation
Returns:
Anzahl der Schritte

getTotalAnalysis

public double[][] getTotalAnalysis(ProgressHandler ph,
                                   Layer p)
                            throws PictureException

getAlmostTotalAnalysis

public double[][] getAlmostTotalAnalysis(ProgressHandler ph,
                                         double[][] data,
                                         int iterations)
                                  throws PictureException
Berechnet die Totale Analyse des uebergebenen, zweidimensionalen, komplexen Datensatzes. Spaetestens nach iterations Iterationen wird die weitere Berechnung abgebrochen. Eine richtige komplette Zerlegung sollte man mit iterations == Integer.MAX_VALUE erhalten.

getTotalSynthesis

public double[][] getTotalSynthesis(ProgressHandler ph,
                                    Layer p)
                             throws PictureException

getAlmostTotalSynthesis

public double[][] getAlmostTotalSynthesis(ProgressHandler ph,
                                          double[][] data,
                                          int iterations)
                                   throws PictureException
Gegenstueck zu getAlmostTotalAnalysis

getRedundantAnalysis

public Picture getRedundantAnalysis(Picture p)
                             throws PictureException
Erzeugt ein Picture mit 1 + 3 * iterations Layern. Layer 0 ist dabei der Grobanteil, gefolgt von jeweils drei Detail-Layern pro Iteration.

getRedundantSynthesis

public Picture getRedundantSynthesis(Picture p)
                              throws PictureException
Gegenstueck zu getRedundantAnalysis.

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

main

public static void main(java.lang.String[] args)