Digital Signal Processing Reference
In-Depth Information
Die Klasse Corner implementiert bewusst das Java Comparable -Inter-
face, damit Corner -Objekte miteinander vergleichbar und in der Folge
sortierbar sind.
8.3 Implementierung
Auswahl eines Containers
In Alg. 8.1 haben wir die Notation von Listen ( lists ) und Mengen ( sets )
fur Sammlungen von mehreren Eckpunkten verwendet. Wurden wir diese
als Arrays implementieren, mussten wir sie ziemlich groß anlegen, um
alle gefundenen Eckpunkte in jedem Fall aufnehmen zu konnen. Stattdes-
sen verwenden wir die Klasse Vector , eine der dynamischen Datenstruk-
turen, die Java in seinem Collections Framework (Package java.util.* )
bereits fertig zur Verfugung stellt.
Ein Vector ist ahnlich einem Array, kann aber automatisch seine Ka-
pazitat erhohen falls notwendig. Auf einzelne Elemente in einem Vector
kann genauso wie in einem Array per Index zugegriffen werden und zu-
dem implementiert die Klasse Vector das Java List -Interface, das eine
Reihe weiterer Zugriffsmethoden bietet. Alternativ hatten wir auch die
Klasse ArrayList als Container verwenden konnen, die sich von Vector
nur geringfugig unterscheidet.
Die collectCorners() -Methode
Die nachfolgende Methode collectCorners() bestimmt aus der cor-
ner response function Q ( u, v ) die dominanten Eckpunkte. Der Parame-
ter border spezifiziert dabei die Breite des Bildrands, innerhalb dessen
eventuelle Eckpunkte ignoriert werden sollen:
61 Vector<Corner> collectCorners(FloatProcessor Q, int border)
62
{
Vector<Corner> cornerList = new Vector<Corner>(1000);
63
int w = Q.getWidth(), h = Q.getHeight();
64
float[] Qpix = (float[]) Q.getPixels();
65
//traverse the Q-image and check for corners:
66
for (int v=border; v<h-border; v++){
67
for (int u=border; u<w-border; u++) {
68
float q = Qpix[v*w+u];
69
if (q>threshold && isLocalMax(crf,u,v)) {
70
Corner c = new Corner(u,v,q);
71
cornerList.add(c);
72
}
73
}
74
}
75
Collections.sort(cornerList);
76
return cornerList;
77
78 }
Zunachst wird (in Zeile 63) eine Variable cornerList vom Typ Vector
mit einer Anfangskapazitat von 1000 Objekten angelegt. Dann wird
Search WWH ::




Custom Search