schmitzm.data
Class RasterFilter

java.lang.Object
  extended by schmitzm.data.RasterFilter

public class RasterFilter
extends Object

Diese Klasse stellt eine (2-dimensionale) Filter-Matrix dar. Diese muss in beiden Dimensionen eine ungerade Laenge haben, damit die Filter-Matrix ein eindeutiges Zentrum besitzt.

Version:
1.0
Author:
Martin Schmitz (University of Bonn/Germany)

Field Summary
protected  double[][] filter
          Speichert die Filter-Matrix.
protected  int sizeX
          Speichert die horizontale Laenge der Filter-Matrix.
protected  int sizeY
          Speichert die vertikale Laenge der Filter-Matrix.
protected  double weight
          Speichert die Summe ueber alle Eintraege der Filter-Matrix.
 
Constructor Summary
RasterFilter(double[][] filter)
          Erzeugt einen neuen Raster-Filter.
RasterFilter(int size)
          Erzeugt einen leeren quadratischen Raster-Filter.
RasterFilter(int sizeX, int sizeY)
          Erzeugt einen leeren Raster-Filter.
 
Method Summary
 double calcFilterWeight()
          Berechnet die Summe ueber alle Eintraege der Filter-Matrix.
 double evaluate(ReadableGrid raster, int x, int y)
          Wertet den Filter auf einer Rasterzelle aus, in dem die Summe der mit den Filterwerten gewichteten Rasterwerte (um die Rasterzelle) gebildet wird und diese mit der Summe der Filterwerte normiert wird (geteilt wird).
 int getFilterSizeX()
          Liefert die horizontale Laenge der Filter-Matrix.
 int getFilterSizeY()
          Liefert die vertikale Laenge der Filter-Matrix.
 double getFilterValue(int x, int y)
          Liefert einen Wert der Filter-Matrix.
 double getFilterWeight()
          Liefert die Summe ueber alle Eintraege der Filter-Matrix.
 void setFilterValue(double value, int x, int y)
          Setzt einen Wert der Filter-Matrix und berechnet das Filter-Gewicht neu.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

filter

protected double[][] filter
Speichert die Filter-Matrix.


sizeX

protected int sizeX
Speichert die horizontale Laenge der Filter-Matrix.


sizeY

protected int sizeY
Speichert die vertikale Laenge der Filter-Matrix.


weight

protected double weight
Speichert die Summe ueber alle Eintraege der Filter-Matrix.

Constructor Detail

RasterFilter

public RasterFilter(double[][] filter)
Erzeugt einen neuen Raster-Filter. Die Filter-Matrix muss ein eindeutiges Zentrum haben, d.h. die Array-Dimensionen muessen ungerade Laenge haben!

Parameters:
filter - Filter-Matrix

RasterFilter

public RasterFilter(int sizeX,
                    int sizeY)
Erzeugt einen leeren Raster-Filter. sizeX und sizeY muessen ungerade sein, damit die Filter-Matrix ein eindeutiges Zentrum hat.

Parameters:
sizeX - horizontale Laenge der Filter-Matrix
sizeY - vertikale Laenge der Filter-Matrix

RasterFilter

public RasterFilter(int size)
Erzeugt einen leeren quadratischen Raster-Filter. size muss ungerade sein, damit die Filter-Matrix ein eindeutiges Zentrum hat.

Parameters:
size - horizontale/vertikale Laenge der Filter-Matrix
Method Detail

getFilterSizeX

public int getFilterSizeX()
Liefert die horizontale Laenge der Filter-Matrix.


getFilterSizeY

public int getFilterSizeY()
Liefert die vertikale Laenge der Filter-Matrix.


getFilterWeight

public double getFilterWeight()
Liefert die Summe ueber alle Eintraege der Filter-Matrix.


calcFilterWeight

public double calcFilterWeight()
Berechnet die Summe ueber alle Eintraege der Filter-Matrix.


getFilterValue

public double getFilterValue(int x,
                             int y)
Liefert einen Wert der Filter-Matrix.

Parameters:
x - X-Koorindinate
y - Y-Koordinate

setFilterValue

public void setFilterValue(double value,
                           int x,
                           int y)
Setzt einen Wert der Filter-Matrix und berechnet das Filter-Gewicht neu.

Parameters:
value - neuer Wert
x - X-Koorindinate
y - Y-Koordinate

evaluate

public double evaluate(ReadableGrid raster,
                       int x,
                       int y)
Wertet den Filter auf einer Rasterzelle aus, in dem die Summe der mit den Filterwerten gewichteten Rasterwerte (um die Rasterzelle) gebildet wird und diese mit der Summe der Filterwerte normiert wird (geteilt wird). Am Rand des Rasters wird so verfahren, dass die Zellen ausserhalb des Rasters ignoriert werden, sowohl in der gewichteten Summe, als auch in der Filter-Summe.

Parameters:
raster - Raster
x - X-Koordinate im Raster (Spaltenindex)
y - Y-Koordinate im Raster (Zeilenindex)
Returns:
Double.NaN falls die Rasterzelle diesen Wert besitzt
Throws:
IllegalArgumentException - falls ein null-Raster uebergeben wird oder die Koordinate ausserhalb des Rasters liegt