Robuste Erkennung von Spielkarten in Untertischaufnahmen

Transcription

Robuste Erkennung von Spielkarten in Untertischaufnahmen
Robuste Erkennung von Spielkarten in Untertischaufnahmen
Studienarbeit im Fach Informatik
vorgelegt
von
Andreas Breitbarth
Geboren am 05. Juli 1984 in Jena
Angefertigt am
Lehrstuhl für Digitale Bildverarbeitung
Fakultät für Mathematik und Informatik
Friedrich-Schiller-Universität Jena.
Betreuer: Prof. Dr.-Ing. J. Denzler
Beginn der Arbeit: 21. Mai 2007
Abgabe der Arbeit: 31. März 2008
ii
iii
Ich versichere, dass ich die Arbeit ohne fremde Hilfe und ohne Benutzung anderer als der
angegebenen Quellen angefertigt habe und dass die Arbeit in gleicher oder ähnlicher Form noch
keiner anderen Prüfungsbehörde vorgelegen hat und von dieser als Teil einer Prüfungsleistung
angenommen wurde. Alle Ausführungen, die wörtlich oder sinngemäß übernommen wurden,
sind als solche gekennzeichnet.
Die Richtlinien des Lehrstuhls für Studien- und Diplomarbeiten habe ich gelesen und anerkannt, insbesondere die Regelung des Nutzungsrechts.
Jena, den 31. März 2008
iv
Übersicht
Diese Studienarbeit beschäftigt sich mit der möglichst stabilen Detektion und Lokalisation von
Spielkarten in Bildern, die von Untertischkameras aufgenommen wurden, wie sie in der Praxis
bei Pokerveranstaltungen anzutreffen sind. Dabei liegt großer Wert auf der Universalität der Erkennung, d.h. die Austauschbarkeit von und Anpassung des Systems an neue Spielkartenlayouts
soll möglichst schnell und problemlos durchführbar sein. Nach einer detaillierten Abwägung
von Vor- und Nachteilen bereits existierender Verfahren zur Objekterkennung wird im Speziellen auf bzgl. Rotation, Skalierung und Helligkeit invariante Punktmerkmale eingegangen, sogenannte SIFT-Features. Eine Verbesserung der Stabilität dieser extrahierten Punkte hinsichtlich
der Wiederfindung wird durch einen Clustervorgang erreicht, auf den sowohl theoretisch als
auch praktisch in dieser Arbeit eingegangen wird. Die Verwendung des Gesamtsystems wird unter einer Vielzahl von Kriterien im Experimentalteil näher beleutet und dabei auch der Einfluss
von Störfaktoren wie Glanzlichtern, Bildrauschen und Verdeckungen der Karten betrachtet. Abschließend werden im Ausblick Möglichkeiten der weiteren Systemverbesserung vorgeschlagen
und kurz diskutiert.
Abstract
This student research thesis contains the detection and lokalisation of playing cards in images,
which are shot by cams from under the desk, so they are common at parties with pokergames.
The main aspect is the universality of the recognition, that means the replaceability of the playing
cards and their layouts will be possible fast and without difficulty. After a detailed explanation
of pro and cons of existing recognitionmethods, this thesis focus on SIFT-features, they are
invariant in respect of rotation, scale and intensity. Concerning the recovery of these features,
the implemented method will be improved by a system of clustering. This aspect is shown in
theory and practice in this student research thesis. In the part of experiments the influence of
flashlights, image noise and occlusions are emblazed. At the end possibilities of improving the
system are mentioned and shortly discussed.
Inhaltsverzeichnis
1
2
3
4
Einführung
1
1.1
Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2
Aufbau der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
Ansätze zur Objekterkennung
3
2.1
Objekterkennung unter Verwendung der Spielkartenspezifik . . . . . . . . . . .
3
2.2
SIFT - Scale Invariant Feature Transform . . . . . . . . . . . . . . . . . . . . .
7
2.2.1
Der Schlüsselpunkt-Detektor . . . . . . . . . . . . . . . . . . . . . . . .
7
2.2.2
Der Schlüsselpunkt-Deskriptor . . . . . . . . . . . . . . . . . . . . . . . 11
Systemaufbau zur Erkennung von Spielkarten
3.1
Beschaffung von Testbildern und Mustern und Berechnung von Schlüsselpunkten dieser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2
Stabilitätsgewinn durch Clustervorgang . . . . . . . . . . . . . . . . . . . . . . 16
Implementierung des Erkennungssystems
19
4.1
Die Qt-Oberfläche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.2
Der Funktionenaufruf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.3
Umsetzung des Clustervorgangs . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.4
5
13
4.3.1
Clustering einzelner SIFT-Merkmale . . . . . . . . . . . . . . . . . . . . 22
4.3.2
Iterative Verbesserung der Stabilität einzelner Cluster . . . . . . . . . . . 27
Auswahl der Endresultate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Aufbau und Resultate der Experimente
31
5.1
Aufbau der Versuchsumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.2
Resultate von Graustufenbildern als Eingabe . . . . . . . . . . . . . . . . . . . . 32
5.3
Rauschabhängigkeit der Objekterkennung mit SIFT-Merkmalen . . . . . . . . . 37
v
vi
INHALTSVERZEICHNIS
5.4
6
Resultate von Eingabebildern mit RGB-verschiedenen Farbräumen . . . . . . . . 41
Zusammenfassung und Ausblick
45
Literaturverzeichnis
49
Verzeichnis der Bilder
51
Verzeichnis der Tabellen
53
Kapitel 1
Einführung
1.1
Motivation
Objekterkennung spielt mittlerweile seit vielen Jahren eine bedeutende Rolle in der digitalen
Bildverarbeitung. Auch in der Praxis ist man täglich von kleinstem Kindesalter an damit konfrontiert, Instanzen von Objekten und/oder Personen wieder zu erkennen bzw. Dinge zu kategorisieren. Wie auch am Beispiel der Gesichtserkennung zu sehen ist, liegt der ausschlaggebende
Punkt zumeist darin, besondere Details zu finden und später zu überprüfen, um Personen voneinander zu unterscheiden. Dabei weicht das Gesamtbild nicht immer entscheidend voneinander
ab.
Ein ähnlich angelegtes Problem liegt bei der Erkennung von Spielkarten vor. Lässt man die Unterscheidung der zwei Hauptgruppen von Karten, denen mit Ziffern (Zwei bis Zehn plus Ass)
und denen mit Bildern (Bube, Dame, König), einmal außen vor, so liegen die Unterschiede bei
grober Betrachtung nicht immer sofort auf der Hand. Wichtig sind zumeist die kleinen Dinge,
z.B. ob eine Karte ein Symbol und damit eine Augenzahl mehr besitzt als eine andere, oder nicht.
Die Unterscheidung von Spielkarten soll in dieser Arbeit mit Hilfe von invarianten Punktmerkmalen erfolgen. Die Invarianz ist notwendig, da auf Grund einer mit Absicht sehr allgemein
gehaltenen Aufgabenstellung die Lage und Größe der Karten im Bild nicht vorgeschrieben ist.
Auch Überdeckungen bis 50 Prozent, sowie Störeinflüsse wie Glanzlichter und Bildrauschen
sollen durch das zu entwickelnde System abgefangen werden. Eine Beherrschung dieser Vorgaben soll mit Hilfe sogenannter SIFT-Merkmale erfolgen, die in [Low03] von Lowe vorgestellt
wurden und zusätzlich Invarianz bezüglich Beleuchtungsänderungen versprechen.
1
2
1.2
KAPITEL 1. EINFÜHRUNG
Aufbau der Arbeit
Eine detaillierte Erläuterung zur Extraktion interessanter Punkte und die Beschreibung derer befindet sich im Kapitel 2.2 dieser Arbeit. Dem vorangestellt sind weitere mögliche Verfahren zur
Objekterkennung und ein Vergleich von Vor- und Nachteilen. Kapitel 3 beschäftigt sich mit dem
allgemeinen Aufbau des Gesamtsystems von der Gewinnung von Testbildern und Modellen bis
hin zu den Endresultaten der Objekterkennung. Eine ausführliche Beschreibung der vorliegenden
Implementierung befindet sich im Anschluss daran in Kapitel 4 dieser Arbeit. Verschiedenartige
Testumgebungen und deren Ergebnisse werden in Kapitel 5 vorgestellt, so dass die Arbeit mit
einer Zusammenfassung und einem Ausblick in Kapitel 6 ihren Abschluss findet.
Kapitel 2
Ansätze zur Objekterkennung
2.1
Objekterkennung unter Verwendung der Spielkartenspezifik
Um Objektinstanzen verschiedenster Art in Bildern zu detektieren und häufig auch zu lokalisieren gibt es sehr viele unterschiedliche Vorgehensweisen. Allen gemein ist die Tatsache, einzelne
Punkte oder kleinere Strukturen im Bild zu finden, die als robust und somit aussagekräftig eingestuft werden können. Bei Punkten bieten sich zumeist Ecken an, da sie eine hohe Grauwertänderung in gleich zwei Richtungen besitzen und somit aussagekräftiger sind als Punkte entlang einer
Kante, dessen Nachbarkantenpunkte ähnliche Gradienten in eine Richtung aufweisen und somit
kaum unterscheibar sind.
Betrachtet man nun im konkreten Fall Bilder, in denen Spielkarten erkannt werden sollen, so
entdeckt man schnell typische (Karten-)Merkmale. Alle Spielkarten besitzen unabhängig ihres
Typs und ihrer Serie vier Außenkanten, die zusätzlich im rechten Winkel zueinander stehen. Dieses Wissen kann als initialer Lokalisierungsschritt genutzt werden, um anschließend ausschließlich die als Karten detektierten Bereiche für nähere Untersuchungen in Betracht zu ziehen. Die
Vorteile dieser Verarbeitungsmethode sind
• die effiziente Durchführung des Vorverarbeitungsschrittes, der sich z.B. mit Hilfe eines
Cannyfilters (vgl. [Can86]) ausführen lässt und
• die zeitliche Verkürzung nachfolgender Schritte, da ausschließlich bestimmte Bereiche
weiteren Berechnungen unterzogen werden müssen.
3
4
KAPITEL 2. ANSÄTZE ZUR OBJEKTERKENNUNG
Bild 2.1: Links: Testbild mit Glanzlicht und variablem Hintergrund, erzeugt durch Verwendung
des eingebauten Blitzes an der Sony DSC-W1 und mit einer Kontrastspreizung vorverarbeitet.
Rechts: Kantenbild eines Testbildes, bei dem beide Spielkarten exakt aneinander liegen und
somit ausschließlich eine Karte detektiert wird (grüner Rahmen).
Allerdings besitzt dieses Vorgehen auch entscheidende Nachteile, die die Anwendung in der Praxis unmöglich machen. Liegen in einem Testbild die zwei (oder mehr) Karten wie auf der rechten
Seite in Abbildung 2.1 direkt aneinander, so ergibt sich durch die flache Struktur jeder Karte im
Dreidimensionalen keine sichtbare Mittelkante im Zweidimensionalen. Das bedeutet, dass im
Kantenbild lediglich eine einzige Spielkarte detektiert werden kann, deren Ausrichtung, bedingt
durch die Seitenlängen der Rechtecke, um 90 Grad zum Original der zwei (oder mehr) Karten
verschoben ist. Die grafische Veranschaulichung dessen spiegelt der grüne Rahmen in Abbildung 2.1 auf der rechten Seite wider. Dieses Problem ließe sich mit der Einschränkung lösen,
dass im Testbild exakt zwei Karten zu finden sind. Detektiert man ausschließlich ein Rechteck,
so muss dieser Bereich nur halbiert werden und es entstehen zwei Bereiche mit korrekter Ausrichtung und Größe. Dies bedarf aber der Annahme, dass beide Spielkarten gleich groß sichtbar
sind, also keinesfalls verdeckt sein dürfen. Verdeckungen, insbesondere Dreiecksüberlappungen,
sprechen grundsätzlich gegen eine Kantendetektion, da hierbei nicht entschieden werden kann,
welche Karte vollständig und welche verdeckt sichtbar ist. Somit ist eine Separierung der Kartenbereiche nicht möglich, was schlussendlich gegen die Anwendung dieses Vorgehens in der
Praxis spricht.
Ein weiteres eindeutiges Merkmal von Spielkarten ist ihre weiße Hintergrundfärbung. Grundsätzlich ist der Hintergrund der Karten also der hellste Teil in einem Bild und ließe sich sehr mit
Hilfe ähnlicher Vorgehensweisen wie in [HP89] einfach detektieren. Legt man um die so gefundenen Bereiche sogenannte Bounding Boxes in Form von Rechtecken, hätte man wiederum
2.1. OBJEKTERKENNUNG UNTER VERWENDUNG DER SPIELKARTENSPEZIFIK
5
Teilbilder gefunden, auf denen eine nähere Erkennung leichter und schneller durchzuführen ist.
Die Aufgabenstellung zur Erkennung von Spielkarten ist allerdings mit Absicht sehr allgemein
gehalten. So spricht nichts gegen auftretende Reflexionen und/oder Glanzlichter - im Gegenteil,
sie sind für Testzwecke und zur Simulation der Praxis sehr willkommen. Schnell lassen sich
Testbilder mit Hilfe von Digitalkameras erstellen, bei denen Glanzlichter durch die Verwendung
eines Blitzes wie in Abbildung 2.1 links entstehen. Bei Betrachtung dieser stellt man fest, dass
die Glanzlichter und Reflexionen die mit Abstand hellsten Bildbereiche repräsentieren, das Weiß
der Spielkarten verschiebt sich eher in den Hellgrau-/Hellbraunbereich; abhängig von der Beleuchtungstemperatur. Im Beispielfall ist hauptsächlich die graue Färbung zur unteren linken
Ecke der Asskarte erkennbar. Da die Helligkeitswerte der Glanzlichter und des Spielkartenweiß
recht gut voneinander trennbar sind, würde sich eine Grauwertspreizung anbieten. Die notwendige Abbildung wird formal durch
[0, 255] 7→ [0, hSchwellwert zwischen Glanzlicht und Spielkartenweissi]
(2.1)
beschrieben. Der Schwellwert lässt sich durch ein lokales Minimum im Grauwerthistogramm bestimmen. Allerdings entfernt die Grauwertspreizung die Glanzlichter nicht aus dem Bild, so dass
sowohl die Spielkarten als auch Reflexionen als Einzelkarten detektiert werden. Aus praktischen
Gesichtspunkten könnte man die Annahme treffen, dass Spielkarten in Testbildern (deutlich)
größer sind als Glanzlichter, allerdings widerspricht dies der Restriktionsfreiheit der Aufgabenstellung. Auch Lichter innerhalb der Bereiche von Spielkarten, wie in der oberen Hälfte der
Karokarte in Abbildung 2.1 links, beeinflussen den Grauwertverlauf teils stark, so dass von einer
Anwendung dieser Möglichkeit ebenfalls abgesehen wird.
Das vermutlich sicherste Verfahren, um Objekte in Bildern zu erkennen ist das sogenannte Template Matching. Es basiert auf der Korrelationsfunktion, bei der ein bestimmtes Muster bzw. ein
bestimmter Bildteil als Maske verwendet und mit dem Testbild gefaltet wird. An den Stellen
der besten Übereinstimmung von Maske und Testbild besitzt diese Korrelationsfunktion ihr Maximum, in Abbildung 2.2.d durch die hellste Stelle visualisiert. Allerdings besitzt auch dieses
Verfahren seine Nachteile.
• Die ausschließliche Arbeit auf Grauwerten gestaltet die Handhabe von Helligkeitsänderungen, in extremen Fällen Glanzlichtern und Reflexionen, sehr schwierig.
• Ungünstige Verdeckungen wie z.B. in Abbildung 2.2.a müssen vorab erkannt werden, um
diese Bereiche von der Berechnung auszuschließen. Diese Verdeckungsbestimmung bedarf allerdings wiederum Verfahren wie der bereits erwähnten Kantendetektion.
6
KAPITEL 2. ANSÄTZE ZUR OBJEKTERKENNUNG
Bild 2.2: a: Testbild. b: Muster. c: Visualisierung der Korrelation zwischen den Bildern a und
b aus Abbildung 2.2. d: Visualisierung der Korrelation zwischen dem Bild a mit homogenem
schwarzen Hintergrund außerhalb der Karten und dem Muster in Abbildung 2.2.b .
• Ein inhomogener Hintergrund im Testbild, der gerade auf Grauwertbildern Ähnlichkeiten mit dem/den Objekt(en) besitzt, führt zu falsch lokalisierten Objektinstanzen, wie in
Abbildung 2.2.c durch die beste Übereinstimmung am oberen Bildrand sichtbar.
• Der wahrscheinlich größte Nachteil des Template Matchings liegt in der zeitlichen Dimension. Die Berechnung einer der Korrelationsvisualisierungen in Abbildung 2.2 unten
benötigt zwischen 15 und 20 Minuten auf einem Intel Pentium4 mit 2 GHz Taktfrequenz.
Dabei besitzt das Testbild eine Dimension von 774x518 Pixeln; das grün umrahmte Modell in Abbildung 2.2.b ist 204x284 Pixel groß und geht nicht separierbar als Maskengröße
enorm in die Komplexität ein.
Auf Grund der zahlreichen Nachteile findet das Template Matching, insbesondere durch den
Zeitfaktor der Berechnungen, in dieser Arbeit keine Verwendung.
Die kleinste Berechnungskomplexität bietet sich bei der Suche von einzelnen Punktmerkmalen.
Bereits angesprochene Probleme hierbei sind die Robustheit gegen Störungen wie Rauschen und
2.2. SIFT - SCALE INVARIANT FEATURE TRANSFORM
7
die Eindeutigkeit zur Wiederfindung und Verknüpfung. Das in [Low03] vorgestellte Verfahren
verspricht einen effizienten Umgang mit diesen Nachteilen, weshalb es in dieser Arbeit Verwendung findet und auf die Praxistauglichkeit bezüglich der Erkennung von Spielkarten überprüft
wird. Eine detaillierte theoretische Erläuterung befindet sich im folgenden Abschnitt 2.2.
2.2
SIFT - Scale Invariant Feature Transform
Das sogenannte SIFT-Verfahren wurde 2003 von David G. Lowe vorgestellt und steht für die
gleichzeitige Detektion und Lokalisation skalierungs- und rotationsinvarianter Punktmerkmale.
Wie der Name skalierungsinvariante Merkmalstransformation bereits aussagt, ist es Lowe gelungen, einzelne Punkte in Bildern ausfindig zu machen, die robust gegen Störungen sind und
zugleich unabhängig ihrer Skalierung und Ausrichtung beschrieben werden können, um sie in
verschiedensten Posen wiederzufinden.
2.2.1
Der Schlüsselpunkt-Detektor
In einem initialen Bearbeitungsschritt wird versucht, Kandidaten für Schlüsselpunkte in einem
Testbild zu finden, die sich in verschiedenen Auflösungsstufen und unterschiedlichen Posen eines Objektes mit hoher Wahrscheinlichkeit wiederfinden lassen. Um der Skalierungsinvarianz
gerecht werden zu können, bedient man sich einer skalenkontinuierlichen Funktion, die in der
Fachliteratur auch als scale space (Skalenraum) bezeichnet wird. In der Praxis hat sich ausschließlich die Gaußfunktion als passender Kern für diesen Skalenraum herausgebildet, da er
gleichzeitig die Eigenschaft der Isotropie in sich vereint. Der Begriff isotrop stammt aus dem
griechischen (isos gleich, tropos Drehung) und bezeichnet in den Naturwissenschaften eine Sache, die nach allen Richtungen hin gleiche Eigenschaften aufweist“ [Dud06]. Damit lässt sich
”
auch die Rotationsinvarianz der Punktmerkmale gewährleisten, die neben der zweidimensionalen Gaußfunktion auch die normierte LoG-Funktion bietet. LoG steht für Laplacian of Gaussian
und wird in der Literatur vielfach als Laplacefilter benannt.
Der Skalenraum eines Bildes wird damit durch eine Funktion L(x, y, σ) definiert, die die Faltung
des Bildes mit der Gaußfunktion beschreibt. Formal ergibt sich für die Funktion
L(x, y, σ) = G(x, y, σ) ∗ I(x, y) ,
(2.2)
8
KAPITEL 2. ANSÄTZE ZUR OBJEKTERKENNUNG
...
Scale
(next
octave)
Scale
(first
octave)
Difference of
Gaussian (DOG)
Gaussian
Figure 1: For each octave of scale space, the initial image is repeatedly convolved with Gaussians to
produce
set of scale space
shown on the
left. Adjacent Entnommen
Gaussian images aus
are subtracted
Bild
2.3: the
Berechnung
derimages
Differences
of Gaussian.
[Low03].
to produce the difference-of-Gaussian images on the right. After each octave, the Gaussian image is
down-sampled by a factor of 2, and the process repeated.
In addition, the difference-of-Gaussian function provides a close approximation to the
wobei der Operator
∗ für die Faltung steht und I(x, y) die Bildfunktion repräsentiert. Die Gaußscale-normalized Laplacian of Gaussian, σ 2 ∇2 G, as studied by Lindeberg (1994). Lindeberg
showed that
thedabei
normalization
of the Laplacian with the factor σ 2 is required for true scale
funktion berechnet
sich
wie folgt:
invariance. In detailed experimental comparisons, Mikolajczyk (2002) found that the maxima
2 +y 2 ) compared to a range of other
and minima of σ 2 ∇2 G produce the most stable 1image−(x
features
2
2σHarris
e
. corner function.
G(x,
y, σ)
= Hessian,
possible image functions, such
as the
gradient,
or
2
2πσ
2
2
The relationship between D and σ ∇ G can be understood from the heat diffusion equation (parameterized in terms of σ rather than the more usual t = σ 2 ):
(2.3)
Dabei bezeichnen (x, y) die Koordinate des Punktes im Testbild und σ 2 die Varianz der Gauß∂G
= σ∇2 G.
funktion bzw. σ die entsprechende Standardabweichung.
∂σ
2 G can be computed from the finite difference approximation to
this, we
see that ∇zu
Um effizientFrom
stabile
Merkmale
finden, empfielt sich die Faltung des Eingabebildes mit der
∂G/∂σ, using the difference of nearby scales at kσ and σ:
DoG-Funktion, der Difference-of-Gaussian-Funktion, und die Verwendung der im Skalenraum
G(x, y, kσ) − G(x, y, σ)
∂G
2
daraus resultierenden Extrema. σ∇
Diese
wird mit Hilfe der Funktion D(x, y, σ) bestimmt
≈
G =Differenz
∂σ
kσ − σ
und ergibt sich
durch:
and therefore,
G(x, y, kσ) − G(x, y, σ) ≈ (k − 1)σ 2 ∇2 G.
D(x, y, σ) = [G(x, y, kσ) − G(x, y, σ)] ∗ I(x, y)
This shows that when the difference-of-Gaussian function has scales differing by a constant factor it already incorporates
the σ 2y,
scale
for the scale-invariant
= L(x,
kσ)normalization
− L(x, y, required
σ)
6
(2.4)
Dabei ist k ein konstanter Faktor, der die zwei Skalenstufen voneinander trennt.
Zur Berechnung des Funktionswertes von D(x, y, σ) wird in jeder sogenannten Oktave des
Skalenraumes das Eingabebild vielfach mit der Gaußfunktion gefaltet. Dies geschieht in der Art,
dass als Resultat Bilder entstehen, die im Skalenraum um den erwähnten konstanten Faktor k
2.2. SIFT - SCALE INVARIANT FEATURE TRANSFORM
9
voneinander getrennt sind. Um das gewährleisten zu können, wird σ je Oktave verdoppelt und
jede Oktave im Skalenraum in die konstante Intervallanzahl s unterteilt. Für den Faktor k ergibt
sich damit k = 21/s . Die gaußgefalteten Bilder sind in der Abbildung 2.3 auf der linken Seite
dargestellt; im konkreten Fall zwei Oktaven. Um die weiter unten beschriebene Detektion der
Skalenraumextrema vollständig durchführen zu können, ist es notwendig, s + 3 gaußgeglättete
Bilder je Oktave zu erstellen. Wie in Gleichung 2.4 formal beschrieben, ergibt sich die rechte
Seite der Abbildung 2.3 durch einfache Subtraktion jeweils zweier nebeneinander liegender, um
den Faktor k voneinander getrennter und gaußgefilteter Eingabebilder.
Der Übergang zur nächsthöheren Oktave ergibt sich durch Unterabtastung des gaußgefilterten
Bildes der aktuellen Oktave, welches gerade den Faktor 2σ des ersten Bildes der Oktave besitzt,
um den Faktor 2. Dieses unterabgetastete Bild dient als Eingabebild und wird nun wiederum
mehrfach mit Hilfe der zweidimensionalen Gaußfunktion gefaltet. Wie Lowe bereits in [Low03]
zeigte, bringt eine Erhöhung der Stufen pro Oktave ab der Anzahl 3 keine Verbesserungen mit
sich, so dass in dieser Arbeit eine Verwendung von s = 3 angewandt wird. Es ist auf der einen
Seite theoretisch erklärbar, dass s > 3 mehr Extrema pro Skalenstufe detektieren lässt, allerdings
auf der anderen Seite damit auch ihre Stabilität leidet.
Zum Auffinden von Maxima und Minima der Funktion D(x, y, σ) wird jeder Punkt der gaußgefilterten Bilder L(x, y, σ) mit seinen 26 Nachbarn verglichen. Dazu verwendet man die acht
direkten Pixel der Achternachbarschaft in der gleichen Skalierungsebene und jeweils neun Pixel
in den darüber und darunter liegenden Ebenen. Als Schlüsselpunktkandidaten werden diese ausgewählt, die größer oder kleiner als alle ihre getesteten 26 Nachbarpunkte sind.
Diese Kandidaten für Schlüsselpunkte werden anschließend noch zwei weiteren Überprüfungen unterzogen, mit dem Ziel, die Stabilität der schlussendlichen Schlüsselpunkte so hoch wie
möglich zu bekommen. Die erste Prüfung besteht darin, Kandidaten mit niedrigem Kontrast zu
eliminieren, da sie sehr anfällig gegenüber Störungen sind. Hierzu wird in [BL02] vorgeschlagen, eine 3D-quadratische Funktion an den Schlüsselpunktkandidaten anzupassen, um damit
eine interpolierte Position in der Skalierungs- und Bildebene für ihn zu finden. In [Low03] findet
dafür eine Taylorentwicklung zweiter Ordnung der Gauß’schen Skalenraumfunktion D(x, y, σ)
Verwendung, deren Ursprung auf dem Kandidatenpunkt liegt. Gleichung 2.5 zeigt diese Entwicklung formal auf.
1 ∂2D
∂DT
x + xT
x
(2.5)
D(x) = D +
∂x
2 ∂x2
Dabei steht x = (x, y, σ)T für die Koordinatenverschiebung des Schlüsselpunktkandidaten. Die
Ableitung nach x und anschließendes Nullsetzen führt zu den Koordinaten des Extremums x̂.
Hat x̂ einen Wert größer 0.5 in einer Dimension, so liegt der eigentliche Punkt näher an seinem
10
KAPITEL 2. ANSÄTZE ZUR OBJEKTERKENNUNG
Nachbarpixel. Daraus folgt die Abänderung der Koordinaten des Schlüsselpunktkandidaten zu
denen seines Nachbarpixels und eine erneute Berechnung von Gleichung 2.5. Substituiert man
die Ableitung nach x in Gleichung 2.5, so erhält man ein Maß für die Instabilität des Schlüsselpunktkandidaten. Formal ergibt sich für D(x̂)
D(x̂) = D +
1 ∂DT
x̂ .
2 ∂x
(2.6)
Eine praxiserprobte Schwelle zum Verwerfen von Schlüsselpunktkandidaten ergibt sich laut
[Low03] mit |D(x̂)| < 0.03 und findet auch in dieser Arbeit Verwendung.
Des Weiteren reagiert die Funktion Difference of Gaussian stark auf Kanten, auch wenn die Kantenpunkte schlecht lokalisiert wurden. Dies verstärkt die Anfälligkeit gegen Störeinwirkungen
und muss daher als zweite Überprüfung durchgeführt werden. Derartige Punkte haben die Eigenschaften, eine kleine Hauptkrümmung entlang der Kante zu besitzen, hingegen in othogonaler
Richtung eine stark ausgeprägte. Die Berechnung dessen wird mit Hilfe der 2x2-Hessematrix
für den Schlüsselpunkt durchgeführt. Dabei ist die Hessematrix H definiert durch:
H=
Dxx Dxy
Dxy Dyy
!
.
(2.7)
Auf die explizite Berechnung der zwei Eigenwerte kann verzichtet werden, da ausschließlich
das Verhältnis der beiden Hauptkrümmungen von Relevanz ist. Ist dieses Verhältnis unter einem
bestimmten Schwellwert t, wobei α = tβ gilt, so wird der Schlüsselpunktkandidat nicht verworfen. Für t in der Ungleichung 2.8 wird in dieser Arbeit wie in [Low03] der Wert 10 verwendet.
Dessen Berechnung ergibt sich durch
(t + 1)2
Diag(H)2
<
,
Det(H)
t
(2.8)
wobei die linke Seite der Ungleichung mit Hilfe folgender Gleichungen bestimmt wird:
Diag(H) = Dxx + Dyy = α + β
(2.9)
Det(H) = Dxx Dyy − (Dxy )2 = αβ .
(2.10)
Dabei ist α der Eigenwert mit dem größeren Betrag, β der mit dem kleineren.
2.2. SIFT - SCALE INVARIANT FEATURE TRANSFORM
2.2.2
11
Der Schlüsselpunkt-Deskriptor
Die in 2.2.1 gefundenen und als stabil eingestuften Schlüsselpunkte benötigen des Weiteren eine
geeignete Repräsentation, um Probleme beim Wiederauffinden und Korrespondenzerstellen zu
minimieren. Diese Deskriptor genannte Repräsentation ist lokal zu jedem Schlüsselpunkt und
soll die Voraussetzung guter Vergleichbarkeit besitzen. Die bereits in 2.2 geforderte Rotationsinvarianz wird erreicht, indem jedem Schlüsselpunkt (mindestens) eine (Haupt-)Richtung zugewiesen und der Deskriptor relativ zu dieser Orientierung dargestellt wird. Die Gewinnung
dieser Hauptrichtung(en) basiert auf den den Schlüsselpunkt umgebenden Bildgradienten. Nach
[Low03] werden die stabilsten Ergebnisse erreicht, wenn jenes gaußgefilterte Bild L(x, y, σ) mit
der zum Schlüsselpunkt nächstgelegenen Skalierung gewählt wird. Damit werden die Beträge
m(x, y) und Orientierungen θ(x, y) der Bildgradienten durch Pixeldifferenzen wie folgt bestimmt:
m(x, y) =
p
[L(x + 1, y) − L(x − 1)]2 + [L(x, y + 1) − L(x, y − 1)]2
L(x, y + 1) − L(x, y − 1)
−1
θ(x, y) = tan
.
L(x + 1, y) − L(x − 1, y)
(2.11)
(2.12)
Die so gewonnenen Orientierungen und Beträge werden in ein Histogramm aus 36 Bins eingeordnet, die für die Orientierungen von 0◦ bis 360◦ stehen, jedes Bin also für ein Winkelintervall
von 10◦ . Dabei erfolgt eine Gewichtung mit Hilfe einer über dem Schlüsselpunkt zentrierten
Gaußglocke, für die σ = 23 scale gilt. scale entspricht hierbei dem oben verwendeten Skalierungswert für die Berechnung der Gleichungen 2.11 und 2.12.
Nach der Bestimmung des globalen Maximums im Gradientenhistogramm, werden für diese
Orientierung und die Orientierungen, deren Histogrammwerte mindestens 80 Prozent dieses Maximums betragen, Schlüsselpunkte erstellt. Somit führen Punkte mit mehreren, in etwa gleich
starken Gradientenrichtungen zu mehreren Schlüsselpunkten gleicher Position und Skalierung,
aber verschiedener Orientierung. Nach[Low03] erhöht dies die Stabilität des anschließenden
Matchvorgangs signifikant.
Wie in Abbildung 2.4 auf der linken Seite ersichtlich, besteht der Deskriptor eines Schlüsselpunktes aus mehreren Gradientenhistogrammen - hier 8x8, also 64 Stück. Um die angesprochene
Rotationsinvarianz zu gewährleisten, werden die Deskriptorkoordinaten und die zuvor berechneten Gradientenorientierungen entsprechend der Hauptorientierung des Schlüsselpunktes gedreht
und damit relativ zu ihr ausgerichtet. Der Einfluss von Gradienten mit hohem Betrag am Rand
des betrachteten Bereiches um den Schlüsselpunkt wird durch die Wichtung mit Hilfe der Gaußglocke mit σ = 23 ∗ hBreite des Deskriptorf enstersi verkleinert. Diese Wichtung ist auf der
12
KAPITEL 2. ANSÄTZE ZUR OBJEKTERKENNUNG
Keypoint descriptor
Image gradients
Figure 7: A keypoint descriptor is created by first computing the gradient magnitude and orientation
at each image sample point in und
a region
around the keypoint eines
location,Schlüsselpunktes.
as shown on the left. These
are
Bild 2.4: Gradientenhistogramm
2x2-Deskriptor
Entnommen
aus
weighted by a Gaussian window, indicated by the overlaid circle. These samples are then accumulated
[Low03]. into orientation histograms summarizing the contents over 4x4 subregions, as shown on the right, with
the length of each arrow corresponding to the sum of the gradient magnitudes near that direction within
the region. This figure shows a 2x2 descriptor array computed from an 8x8 set of samples, whereas
experiments
in this 2.4
paperdurch
use 4x4 den
descriptors
from a 16x16zentrierten
sample array. Kreis symbolisiert.
linken Hälftetheder
Abbildung
zumcomputed
Schlüsselpunkt
Um von den Bildgradienten zum Schlüsselpunktdeskriptor zu gelangen werden jeweils Regionen
6.1 Descriptor representation
von 4x4 Pixeln zu einem Gradientenhistogramm zusammengefasst. Dabei werden die OrientieFigure 7 illustrates the computation of the keypoint descriptor. First the image gradient magrungen der Gradienten
jeweils zu
Richtungen
zusammengefasst,
auf of
dertherechten Seite
nitudes and orientations
areacht
sampled
around the keypoint
location, using wie
the scale
keypoint to select the level of Gaussian blur for the image. In order to achieve orientation
der Abbildung 2.4 gezeigt. Die Vektorlänge in die jeweilige Orientierung entspricht der Summe
invariance, the coordinates of the descriptor and the gradient orientations are rotated relative
aus den Werten
Gleichung
2.11
der 4x4-Pixelregion.
Aus Übersichtlichkeitsgründen
ist in
to theaus
keypoint
orientation.
For efficiency,
the gradients are precomputed
for all levels of the
pyramid as described in Section 5. These are illustrated with small arrows at each sample
der Abbildung
2.4 lediglich ein 2x2-Deskriptor mit jeweils acht Orientierungen dargestellt. In
location on the left side of Figure 7.
A Gaussian
function
with σ equal
one half the width ofmit
the jeweils
descriptoracht
win- Orientierun[Low03] und auch
dieser weighting
Arbeit findet
hingegen
einto4x4-Deskriptor
dow is used to assign a weight to the magnitude of each sample point. This is illustrated
gen Verwendung,
der sich
aus einem
16x16
des Bildes
ergibt.
Orientiewith a circular
window
on the left
side ofGradientenbereich
Figure 7, although, of course,
the weight
falls Diese
off
The
purposezusammengefasst
of this Gaussian window
is to avoid
changes
in the descriptor
rungsbeträgesmoothly.
in einem
Vektor
ergibt
einensudden
Vektor
der Dimension
4∗4∗8 = 128,
with small changes in the position of the window, and to give less emphasis to gradients that
der anschließend,
um the
Effekte
gleichmäßiger
Veränderungen
derby Lichtverhältnisse
are far from
center of
the descriptor, as these
are most affected
misregistration errors. zu minimieThe keypoint descriptor is shown on the right side of Figure 7. It allows for significant
ren, einer Normalisierung
auf eine Einheitslänge unterzogen wird.
shift in gradient positions by creating orientation histograms over 4x4 sample regions. The
figure shows eight directions for each orientation histogram, with the length of each arrow
corresponding to the magnitude of that histogram entry. A gradient sample on the left can
shift up to 4 sample positions while still contributing to the same histogram on the right,
thereby achieving the objective of allowing for larger local positional shifts.
It is important to avoid all boundary affects in which the descriptor abruptly changes as a
sample shifts smoothly from being within one histogram to another or from one orientation
to another. Therefore, trilinear interpolation is used to distribute the value of each gradient
sample into adjacent histogram bins. In other words, each entry into a bin is multiplied by a
weight of 1 − d for each dimension, where d is the distance of the sample from the central
value of the bin as measured in units of the histogram bin spacing.
15
Kapitel 3
Systemaufbau zur Erkennung von
Spielkarten
3.1
Beschaffung von Testbildern und Mustern und Berechnung von Schlüsselpunkten dieser
Für die Aufgabe der Objekterkennung sind zwei Dinge unabdingbar: Zum Einen mindestens eine
Datenbank, in der die jeweiligen Muster bzw. Modelle abgespeichert sind, und zum Anderen eine
Reihe von Testbildern, auf denen die entwickelten Algorithmen auf ihre Praxistauglichkeit hin
untersucht werden können. Da von Seiten des Industriepartners, der die Anfrage zur Erkennung
von Spielkarten aus Untertischaufnahmen gestellt hatte, beide Voraussetzungen nicht erfüllt werden konnten, waren die Datenbanken der Muster und Testbilder selbst zu stellen.
Allein für die Muster finden in dieser Arbeit vier Datenbank mit jeweils 52 Elementen Verwendung. Die originalgetreuste Abbildung liefern dabei 300dpi-Scans, die mit Hilfe des HP ScanJet
5400c aufgenommen wurden. Eine weitere, sehr rauscharme Datenbank an Spielkarten wurde
durch Fotos mit einer Nikon D80 erreicht. Um Vergleichswerte für Schärfe- und Rauschrelevanz
in der Objekterkennung ermitteln zu können, enstanden des Weiteren Aufnahmen der selben
Spielkarten mit einer Sony DFW-VL500 unter ungünstigeren Lichtverhältnissen. Die vierte Datenbank spiegelt schlussendlich die Aufnahmen der Nikon D80 im Sättigungsbereich wider, da
sich in diesem Fall die Farben rot und schwarz im Grauwertbereich am besten voneinander trennen lassen.
Für die Aufnahmen der Testbilder bedarf es einer, an einen Originalpokertisch angepassten Aufbauvariante, die folgende Bedingungen erfüllen muss:
13
14
KAPITEL 3. SYSTEMAUFBAU ZUR ERKENNUNG VON SPIELKARTEN
Bild 3.1: Aufbau zum effizienten Aufnehmen von Testbildern
• Ein stabiles Gestell, mit einfachen Möglichkeiten zur Anbringung von Kameras, die unter
Umständen auch austauschbar sind.
• Eine ausreichend große Fläche zum Eintritt von Licht auf die Spielkarten und das Kameraobjektiv, um Effekte durch Rauschen und Farbverfälschungen möglichst zu minimieren.
• Eine ausreichend große Glasfläche zum Anbringen oder Auflegen von zwei oder mehr
Spielkarten (zu Testzwecken teilweise auch einer Spielkarte) und möglichst einfachem
Austausch der Karten.
Vor allem die leichte und effiziente Austauschbarkeit von Spielkarten spricht gegen die Aufbauvariante, eine Kamera von oben auf eine Glasfläche blicken zu lassen und die Karten in
irgendeiner Weise unterhalb der Glasfläche anzubringen. Die umgekehrte Möglichkeit, die Kamera unterhalb der Glasfläche mit dem Objektiv nach oben gerichtet anzubringen, ist in dem
für diese Arbeit verwendeten und in Abbildung 3.1 dargestellten Aufbau angewandt. Die etwa
3.1. BESCHAFFUNG VON TESTBILDERN UND MUSTERN UND BERECHNUNG VON SCHLÜSSELPUN
22x29 Zentimeter große Glasplatte bietet ausreichend Platz auch für mehr als zwei Spielkarten,
verschiedenen Varianten der Kartenüberdeckung und ermöglicht ein einfaches Auflegen und Abheben. Dazu findet ein Bilderrahmen aus einem Baumarkt Verwendung, dessen Rückwand nach
dem Kartenauflegen auch als Hintergrund genutzt werden kann.
Sind ausreichend Testbilder und Muster aufgenommen, schließt sich der Vorgang der Detektion
interessanter Punkte an. Wie in Kapitel 2 bereits hinreichend erläutert, wird das in [Low03] von
Lowe vorgestellte Verfahren genutzt, um einzelne Schlüsselpunkte zu detektieren und zu lokalisieren. Auf eine Reimplementierung soll verzichtet werden, so dass auf die von Lowe verfasste
Implementierung zurückgegriffen wird. Um gleichzeitig auch die Möglichkeit von PCA bei der
Deskriptordarstellung nutzen zu können, bedarf es einiger Modifikationen im vorliegenden Code.
Diese wurden bereits im Dezember 2003 von Yan Ke vorgenommen und in [KS04] publiziert.
PCA steht für Principal Component Analysis und erhöht die Stabilität im Wiederfindungs- bzw.
Matchingprozess, da die Dimension des Deskriptorvektors eines jeden Schlüsselpunktes von 128
auf eine konstante Größe durch eine Hauptachsentransformation verringert wird.
Um Objekte in Testbildern detektieren und lokalisieren zu können, müssen nun die gewonnenen Schlüsselpunkte jedes Testbildes mit denen der Musterdatenbank abgeglichen und gematcht
werden. Auch hierfür wird ein vorhandes System genutzt, das von Lowe implementiert und von
Ke modifiziert wurde. Für die spätere Weiterverarbeitung der Daten, wurden des Weiteren eigene Modifikationen am Code vorgenommen, die auch eine Darstellung der Zwischenergebnisse
im Textformat und nicht ausschließlich visuell ermöglichen. Ergebnis dieses Matchvorgangs
sind Listen von gematchten Punktpaaren aus dem jeweiligen Testbild und den vorliegenden 52
Mustern. Lässt man Fehler beim Matching außer acht und vertraut ausschließlich der Anzahl
gefundener Punktpaare als Indiz für das Vorhandensein einer Spielkarte im Testbild, ließe sich
die Berechnung an dieser Stelle beenden. Auf Grund der Gegebenheit, dass Bildkarten deutlich
mehr Information als Zahlkarten, insbesondere des niedrigen Zahlbereiches, besitzen, werden
bei Bildkarten auch signifikant mehr Schlüsselpunkte detektiert und gematcht. Ergebnis dieser
Tatsache ist die Verschiebung der Resultate hin zu Bildkarten, während Zahlkarten mit niedrigen Augenzahlen nie bzw. sehr selten unter bestimmten Rahmenbedingungen detektiert werden.
Um dieser Eigenart Rechnung zu tragen, schließt sich ein Vorgang an, bei dem die einzelnen,
gematchten Schlüsselpunktpaare zu Clustern verbunden werden und damit ihre Stabilität zur
Klassifikation spürbar erhöht wird.
16
KAPITEL 3. SYSTEMAUFBAU ZUR ERKENNUNG VON SPIELKARTEN
Liste gematchter Punkte
Schlüsselpunktliste
Orientierung
X-Dimension
Skalierung
Liste der Cluster
Y-Dimension
Bild 3.2: Übersicht der einzelnen Schritte zum Clustern einzelner Schlüsselpunktpaare
3.2
Stabilitätsgewinn durch Clustervorgang
Für den Clustervorgang findet eine Anlehnung an [Jun06] statt, da in dieser Arbeit eine ähnliche Aufgabenstellung vorliegt und das Vorgehen bereits mit sehr guten Ergebnissen verifiziert
wurde. Um einzelne Schlüsselpunkte bzw. gematchte Schlüsselpunktpaare zu clustern, bietet
sich eine Houghtransformation an. In [Jun06] kommt ein ähnliches Verfahren zur Anwendung,
welches als Grundlage eine Hashfunktion besitzt. Diese Hashfunktion basiert auf den Differenzen innerhalb der Schlüsselpunktpaare, also den jeweiligen Abständen aus den Absolutwerten
der Schlüsselpunkte von Testbild und Muster.
Der Einstieg in die Hashfunktion erfolgt, wie in Abbildung 3.2 ersichtlich, mit einer Gruppierung nach der relativen Orientierung zwischen dem im Testbild als interessant eingestuften Punkt
und seinem gematchten Partner im Muster. Als Untergliederungsabstand werden 30 Grad breite
Bins von Lowe in [Low03] vorgeschlagen und auch in dieser Arbeit angewandt. Um im Weiteren eine Gruppierung nach dem relativen Punktabstand in beide Bilddimensionen vornehmen
zu können, schließt sich nach der Orientierungsgliederung eine Einteilung nach den verschiedenen Skalen an, die bereits in Kapitel 2.2.1 näher erleutert wurden. Das jeweils von einem Bin
abgedeckte scale-Intervall verdoppelt bzw. halbiert sich, abhängig von der Richtung der Zahlenwerte. Ausgangspunkt ist ein Bin mit dem scale-Bereich von [0.5, 1.0]. Die Verdopplung erfolgt
für Werte größer 1, so dass das nächst höhere Bin ein Intervall von [1.0, 2.0] umfasst, worauf der
Bereich [2.0, 4.0] folgt. Dem entsprechend ergibt sich die Intervallverkleinerung um den Faktor
2 für scale-Werte kleiner 0.5, was zu Bins der Bereiche [0.25, 0.5], [0.125, 0.25] usw. führt.
Der Hashvorgang kann nun mit der Einteilung der Schlüsselpunktpaare nach ihren relativen
Punktabständen fortgeführt werden. Hierbei erfolgt eine Untergliederung nach Prozenten bzgl.
der maximal projizierten Mustergröße, d.h. unter der Annahme eines Musterbildes mit den
Ausmaßen 240x150 Pixel und einem maximalen scale von 0.5 (gegeben bei dem scale-Bin
3.2. STABILITÄTSGEWINN DURCH CLUSTERVORGANG
17
[0.25, 0.5]) ergeben sich für die projizierte Mustergröße Werte von 120x75 Pixel. Dies wird im
Folgenden mit 100 Prozent gleichgesetzt. Wie wiederum von Lowe vorgeschlagen und in [Jun06]
angewandt, werden die Bins der X- und Y-Dimension mit jeweils 25 Prozent-Abschnitten angesetzt und umfassen im Gesamten den Bereich von [−100 %, 100 %]. Ob es sich um einen
relativen Abstand mit einem negativen oder positiven Wert handelt, liegt an der Tatsache, ob
sich die Verschiebung des Testbildpunktes bzgl. des Punktes im Muster näher zum Koordinatenursprung befindet oder weiter entfernt liegt. Die positiven Prozentwerte ergeben sich dabei
bei näherer Lage zum Ursprung des gewählten Koordinatensystems. Wie in der Abbildung 3.2
dargestellt, erfolgt zunächst eine Untergliederung der Schlüsselpunktpaare in die X-Dimension,
anschließend in die Y-Dimension. Für die schlussendliche Einteilung der Schlüsselpunkte in
verschiedene Cluster ist diese Reihenfolge allerdings unerheblich und stellt ausschließlich die in
dieser Arbeit angewandte Verarbeitungsreihenfolge dar.
Nach dem Eintrag aller gematchten Schlüsselpunktpaare eines Testbildes mit einem Muster in
die Hashtabelle, ergeben sich zumeist mehrere sogenannte Schlüsselpunktlisten. In jeder dieser
sind alle Schlüsselpunkte abgelegt, deren Differenzwerte bzgl. Orientierung, Skalierung, X- und
Y-Dimension mit dem gematchten Schlüsselpunkt in jeweils ein zugehöriges Binintervall der
vierdimensionalen Hashtabelle fallen. Die Verwaltung dieser Schlüsselpunktlisten erfolgt in der
Liste der Cluster.
Um Randfälle beim Hashvorgang mit zu berücksichtigen und die Gesamtstabilität des Systems
zu erhöhen, werden die so gefundenen Cluster falls möglich iterativ weiter verbunden und ergeben im Idealfall ein einziges Cluster, das für eine konkrete Musterpose steht. Dazu wird für jedes
einzelne Cluster die Pose des Musters an Hand der vorliegenden Schlüsselpunkte berechnet und
damit die Transformationsparameter zwichen Muster und Testbild bestimmt. Anschließend wird
für jeden Schlüsselpunkt aus den anderen Clustern verglichen, ob dieser Punkt mit den aktuell gegebenen Parametern für die Transformation mit einem gewissen Toleranzwert ebenfalls für diese
Musterpose stimmen würde. Ist dies der Fall, wird der Schlüsselpunkt in dieses Cluster übertragen und in dem anderen entfernt. Dieser Vorgang wird solange für alle Cluster durchgeführt, bis
sich keine weiteren Änderungen mehr ergeben. Wie oben bereits erwähnt, ergibt sich im Idealfall
genau ein Cluster und damit eine Pose für das Muster im Testbild. Verbleiben mehrere Cluster in
der Clusterliste, so muss mit weiteren Verfahren, wie z.B. mit dem in Abschnitt 2 vorgestellten
Template Matching, versucht werden, die bestmögliche Pose zu bestimmen.
18
KAPITEL 3. SYSTEMAUFBAU ZUR ERKENNUNG VON SPIELKARTEN
Kapitel 4
Implementierung des Erkennungssystems
4.1
Die Qt-Oberfläche
Als Grundlage der gesamten Implementierung existiert eine einfache Qt4-Anwendung, deren
Oberfläche nach dem Start wie in Abbildung 4.1 erscheint. Die Entscheidung dafür fiel auf Grund
der Plattformunabhängigkeit der von Trolltech publizierten Programmiersprache Qt [Tro07].
Aus Gründen der Handhabbarkeit ist die Oberfläche möglichst schlicht gehalten und nur mit
den notwendigen Funktionen versehen. So lassen sich mit Hilfe des Dateimenüs Bilder ausschließlich öffnen und speichern, sowie die Gesamtanwendung schließen. Über das Bearbeitungsmenü erfolgt der Start der eigentlichen Objekt- bzw. Kartenerkennung, die ebenfalls durch
Drücken des Recognition-Button oder die Tastenkombination Strg+R ausgelöst werden kann.
Im Menüpunkt Hilfe befindet sich eine kleine Anwendungshilfe und eine kurze Übersicht über
die Arbeit. Außer zwei Buttons für Öffnen und Speichern von Bildern in der ersten Symbolleiste befinden sich neben dem erwähnten Recognition-Button noch drei Komboboxen, die der
Parametrisierung der Kartenerkennung dienen. Links erfolgt die Auswahl der zu verwendenten
Muster für die Erkennung. Eine Übersicht über die eingetragenen Mustermengen befindet sich
in der Tabelle 4.1. Die mittlere Kombobox dient der Wahl der Anzahl zu erkennender Karten,
die im vorliegenden Aufgabenfall zumeist zwei ist, aber grundsätzlich von eins bis sechs eingestellt werden kann. Des Weiteren ist es ohne großen Aufwand möglich, weitere Einträge in
die Komboboxen einzubringen. Dies erfolgt in der Datei mainwindow.cpp des Ordners cardident. Die Auswahl in der rechten Kombobox entscheidet, nach welchem Kriterium nach dem
Clustervorgang die besten x Objekte ausgewählt werden - x steht hierbei für die Auswahl der
mittleren Kombobox. Nähere Einzelheiten, welche Möglichkeiten der Auswahl implementiert
und getestet wurden, sind den Abschnitten 4.4 und 5 zu entnehmen.
19
20
KAPITEL 4. IMPLEMENTIERUNG DES ERKENNUNGSSYSTEMS
Bild 4.1: Qt-Anwendung nach dem Start
Der Hauptbereich der Qt-Oberfläche ist selbst in mehrere Abschnitte unterteilt. Die große, zu
Beginn graue Fläche dient der Visualisierung geladener Bilder, aus denen die Karten erkannt
werden sollen. Auf der rechten Seite ist ein sogenanntes widget angedockt, dass auch außerhalb
der Oberfläche gezogen werden kann. Auf ihm lassen sich während der Berechnungsvorgänge
die einzelnen Schritte und Zwischenergebnisse mitverfolgen bzw. zum Abschluss das bzw. die
Endresultat(e) ablesen. Die Parallelität der Abarbeitung der einzelnen Erkennungsschritte und
der textuellen Anzeige dieser wird durch eine Threadprogrammierung möglich. Zu guter letzt
befindet sich am unteren Anwendungsrand eine Statuszeile, auf der die einzelnen Funktionen
der Menüpunkteinträge, der Buttons und der Komboboxen bei Überfahren mit Hilfe der Maus
nochmals abgelesen werden können.
4.2
Der Funktionenaufruf
Um die Kartenerkennung starten zu können, bedarf es einem aktiven Testbild in der Qt-Anwendung. Dies lässt sich über das Dateimenü, die Symbolleiste oder die Tastenkombination Strg+O
effizient erreichen. Der anschließende Start der eigentlichen Erkennung öffnet intern wie bereits
weiter oben erwähnt einen zweiten Thread, dessen Implementierung in der Datei RecognitionThread.cpp eingesehen werden kann. In ihm erfolgt der Aufruf der einzelnen Funktionen bzw.
4.3. UMSETZUNG DES CLUSTERVORGANGS
21
Verarbeitungsschritte zur Objekterkennung, die aus Kompilierungsgründen ausgelagert wurden
und somit ebenfalls schnell austauschbar sind. Mit der Klasse QProcess bietet die Programmiersprache Qt dazu eine effiziente Lösung an, die in dieser Arbeit auch eingesetzt wird. Ein
einzelner Aufruf einer externen Funktion bzw. eines externen Programms wird dabei wie folgt
gestartet:
siftProcess->start(siftProg, arguments);
while(!(siftProcess->waitForFinished())) {}
Dabei bezeichnet siftProcess den Namen des zu startenden Prozesses und siftProg spiegelt als
QString den eigentlichen Konsolenaufruf wider. Mit Hilfe der QStringList arguments lassen
sich dem Programmaufruf Argumente übergeben, in diesem speziellen Fall der Dateiname des
Testbildes.
Für die komplette Bearbeitung des Testbildes bis zum Endresultat der Objekterkennung werden
folgende Programmaufrufe gestartet:
• imgContrast(): eine Histogrammanpassung der Grauwerte von [greyvalmin , greyvalmax ]
auf [0, 255] zur Verstärkung des Testbildkontrastes
• calcSift(): berechnet die Schlüsselpunkte (siehe auch Abschnitt 2.2) im Testbild
• matches(): bestimmt die Schlüsselpunktpaare aus Testbild und allen Mustern der zu verwendenden Musterdatenbank
• clusterMatches(): Clustering der einzelnen Schlüsselpunkte aus dem vorhergehenden Aufruf; eine detaillierte Beschreibung dessen findet sich im folgenden Abschnitt 4.3
• nr of results(): ermittelt aus den Ergebnissen des Clustervorgangs die Endresultate wie in
Abschnitt 4.4 verdeutlicht und zeigt sie im widget result der Qt4-Anwendung an
• deleteTemp(): löscht alle temporären Dateien und Zwischenergebnisse
Die benötigten Schlüsselpunkte der Muster werden bereits einmalig vorab berechnet und liegen als Datenbanken dem Prozessaufruf matches() vor. Eine grafische Veranschaulichung der
Endresultatanzeige lässt sich dem Abschnitt 4.4 entnehmen.
4.3
Umsetzung des Clustervorgangs
In diesem Abschnitt soll detailliert die Vorgehensweise des Clustering verdeutlicht werden, d.h.
wie einzelne interessante Punktmerkmale miteinander in Verbindung gebracht werden, um die
22
KAPITEL 4. IMPLEMENTIERUNG DES ERKENNUNGSSYSTEMS
Stabilität der Klassifikation zu verbessern. Als Eingabe werden die bereits berechneten SIFTMerkmale der Muster und des aktuellen Bildes genutzt, die je als Textdatei vorliegen.
Die meisten für das Clustering notwendigen Funktionen sind in der Datei recog functs.cpp
in der Programmiersprache C++ implementiert. Sie benötigt als Aufrufparameter den Namen
des Testbildes, aus dem die Karte(n) erkannt werden soll(en), und die zu verwendenten Muster.
Letzterer wird als Ziffer übergeben und ist in der vorliegenden Implementierung wie in Tabelle
4.1 codiert. Die Muster sowie das Testbild liegen als Grauwertbilder im PGM-Format vor.
Mustergröße und Aufnahme
Code
0
Scanmuster, auf 320x280 Pixel unterabgetastet
ca. 240x340 Pixel, Kamera: Nikon D80
1
2
Sättigungsbilder der Muster mit Code 1
3
ca. 220x310 Pixel, Kamera: Sony DFW-VL500
Tabelle 4.1: Codierung der Kartenmuster
Sukkzessive wird nun für jedes der 52 Muster berechnet, welche SIFT-Merkmale sich zu einem
Cluster zusammenfassen lassen. Dies geschieht mit Hilfe der in der Abbildung 4.2 dargestellten
Vorgehensweise, die im folgenden Abschnitt 4.3.1 näher erläutert wird.
4.3.1
Clustering einzelner SIFT-Merkmale
Das Clustering beginnt mit dem Einlesen der notwendigen Daten. Hierzu werden die Textdateien mit den SIFT-Merkmalen als Inhalt zeilenweise ausgelesen und zweifach verarbeitet. Zum
einen wird der Inhalt jeder Zeile als gematchter Punkt in eine doppelt verkettete Liste eingetragen (Abbildung 4.2 matchpoint-list). Dies ist notwendig, um relativ am Ende der Berechnungen
die Verknüpfung (Ziffer 5 in Abbildung 4.2) zwischen den Einträgen der Schlüsselpunktlisten,
in denen nur die relativen Werte bzgl. des Modells notiert sind, und der Originalposition der
Schlüsselpunkte im Testbild wiederherzustellen. Die Matchpoint genannte Klasse beinhaltet als
Klassenvariablen die Koordinatenangaben der gematchten Punktpaare aus dem jeweiligen Muster und dem Testbild, hier x m und y m für die Modellbilder, sowie x t und y t für die Testbilder genannt. Des Weiteren wird für jeden Matchpunkt eine fortlaufende Indexnummer vergeben, die lediglich der internen Verwaltung und späteren Zuordnung dient. Für die doppelte
Verkettung existieren in der Klasse Matchpoint abschließend noch die zwei Zeiger auf den jeweiligen Vorgänger und Nachfolger, *prev und *next. Der Kopf der Liste zeichnet sich durch
den Vorgängerwert NULL aus, das Listenende durch den Nachfolgerwert NULL. Zeiger auf
sich selbst am Listenkopf und/oder Listenende würde bei einigen Funktionen zu Endlosschleifen
4.3. UMSETZUNG DES CLUSTERVORGANGS
23
führen, weshalb diese Technik hier nicht verwandt wird.
Der zweite Verarbeitungszweck der Textdateiinhalte dient dem Clustering ansich. Hierbei werden in Variablen der Klasse Pose die jeweiligen Differenzen, also die relativen Werte bzgl. des
Modells, der gematchten Punktpaare gespeichert und dienen im Folgenden dem eigentlichen
Clustern. Wie bei den Elementen der Matchpointklasse ergeben auch die Elemente der Klasse
Pose eine doppelt verkettete Liste, aufgebaut durch die Zeigervariablen *prev und *next. Im Gegensatz zu den Absolutwerten bei der Klasse Matchpoint beinhaltet die Klasse Pose die Variablen
orient diff, x diff, y diff und scale diff. Diese Differenzwerte ergeben sich aus den Absolutwerten zwischen Modell und Testbild entsprechend der eindeutigen Namen in dieser Reihenfolge:
Orientierung, x-Koordinate, y-Koordinate, Skalierung. Eine fortlaufende Indizierung ist auch
hier gegeben.
Das eigentliche Clustering wird nun anhand einer Hashfunktion durchgeführt, die in weiten Teilen mit der Arbeit [Jun06] konform geht. Im Großen und Ganzen entspricht dieses Vorgehen der
bekannten Hough-Transformation. Die Anlehnung an [Jun06] erfolgt auf Grund einer ähnlich
angelegten Fragestellung der Digitalen Bildverarbeitung in dieser Arbeit und positiv verifizierten Ergebnissen. Aus Effizienzgründen wird auf die Verwendung von Arrays bis auf in der
Orientierungseinteilung verzichtet und die Verwendung von doppelt verketteten Listen in den
Vordergrund gestellt. So ist es möglich, die zahlreichen, nicht genutzten Ergebnisbereiche unbeachtet zu lassen.
Wie in Abbildung 4.2 oben links ersichtlich und oben bereits erwähnt, beginnt die Einordnung
jeder Pose mit dem Eintrag in ein Orientierungsarray. Dieses Array ist in zwölf Abschnitte, sogenannte Bins, untergliedert, wobei jedes Bin exakt 30 Grad umfasst. Wie auch die Binintervalle
im Folgenden, lässt sich die Größenangabe von 30 Grad beliebig in der Implementierung anpassen; im konkreten Fall mit dem Wert der Konstante orient diff factor. Alle Konstanten sind wie
die einzelnen Binklassen und Klassen für die gematchten Punktpaare und Posen in dem Header
definitions.h hinterlegt. Ein kleines Beispiel für Posenwerte ist dem grauen Kasten der Abbildung 4.2 zu entnehmen. Die unter der Indexnummer 3 angegebene relative Orientierung des
gematchten Testbildpunktes zum Modellpunkt von 27 Grad wird mit Hilfe der Hashfunktion in
das erste Orientierungsbin eingetragen, welches das Intervall von 0 bis 30 Grad umfasst. Dieses
Bin beinhaltet einen Zeiger auf ein Skalierungsbin (Ziffer 1), welches den Bereich möglicher
Skalierungen von 0.5 bis 1.0 abdeckt. Dieses Bin als Startbin für die Skalierungsdifferenzen zu
nutzen entstammt den praktischen Erfahrungen der Arbeit [Jun06] und den eigenen Ergebnissen.
Weicht die relative Skalierung von diesem Intervall ab, so erfolgt das Propagieren in weitere Bins
der doppelt verketteten Liste, deren Obergrenze jeweils um den Faktor scaleBin factor bzgl. der
24
KAPITEL 4. IMPLEMENTIERUNG DES ERKENNUNGSSYSTEMS
Bild 4.2: Visuelle Darstellung des Clustervorgangs. In Teilen nach [Jun06].
4.3. UMSETZUNG DES CLUSTERVORGANGS
25
Obergrenze des vorhergehenden Bins zunimmt bzw. bei kleineren Skalierungen als die initiale
Untergrenze von 0.5 die Untergrenze des jeweiligen Bins um den gleichen Faktor abnimmt. Im
vorliegenden Beispiel ergibt sich mit dem relativen Skalierungswert von 5.1 ein Propagieren
über drei Bins in das Intervall [4.0, 8.0]. Dafür wurden alle in der Abbildung 4.2 grau markierten
scaleBins neu angelegt, falls die Beispielpose die erste zu hashende Pose ist. Alle weiß verbliebenen Bins existieren (noch) nicht bzw. ihre Existenz ist undefiniert. Als Klassenvariablen
besitzt ScaleBin die Zeiger auf den jeweiligen Vorgänger und Nachfolger, konsistent zur restlichen Implementierung mit *prev und *next bezeichnet. Des Weiteren existieren ein Zeiger auf
das Startbin der X-Dimension (Ziffer 2) und einen Container für die maximale Skalierung des
Skalierungsbins, d.h. für das Beispiel wird nicht der Wert 5.1 abgespeichert, sondern vielmehr
der Wert 8.0 .
Ist die Einordnung in der Skalierungsdimension erfolgt, werden die einzelnen Posen bzgl. ihrer relativen X-Dimension und anschließend ihrer relativen Y-Dimension gehasht. Beide Klassen, XBin und YBin, besitzten jeweils drei Zeiger als Klassenvariablen: *prev und *next als
Verknüpfung zum Vorgänger- bzw. Nachfolgerbin und *y dim als Zeiger von der X-Dimensionsliste auf das Startbin der Y-Dimension (Ziffer 3), sowie *KPIndex als Zeiger von der YDimensionsliste auf eine sogenannte Keypoint-Index-List (Ziffer 4). Auf letztere wird weiter
unten näher eingegangen.
Die einzelnen Bins in X- und Y-Dimension umfassen als Intervall einen prozentualen Bereich.
Dafür werden die absoluten Differenzwerte der 2D-Koordinaten von Testbild und Muster in Relation zur maximal projizierten Modellgröße gesetzt. Negative Prozentwerte, wie im Beispiel
gegeben, entstehen in den Fällen, bei denen der gematchte Punkt des Testbildes weiter vom Koordinatenursprung entfernt liegt, als im Modell. Der Differenzwert ergibt sich für jede Dimension
jeweils aus der Koordinate im Testbild subtrahiert von der Koordinate im Modell. Die Relation
zur Modellgröße berechnet sich durch den Faktor aus der Ausdehnung des Modells in die jeweilige Dimension dividiert durch die entsprechende Skalierungsdifferenz. Formal ausgedrückt
ergibt sich der Prozentwert für die X-Dimension wie folgt:
x dif f =
k1 col − k2 col
∗ 100
xsize m ∗ pose temp− > scale dif f
(4.1)
Dabei steht k1 für das Modell und k2 für das Testbild; pose temp− > scale dif f ist im Beispiel mit dem Wert 5.1 belegt. Analog ergibt sich die Gleichung für die Y-Dimension mit k1 row,
k2 row und ysize m.
Bei der Größeneinteilung der Bins in X- und Y-Dimension erfolgte eine Anpassung an die Ar-
26
KAPITEL 4. IMPLEMENTIERUNG DES ERKENNUNGSSYSTEMS
beit [Jun06], die ebenfalls auch schon in [Low03] vorgeschlagen wurde. Darin stellte sich nach
vielen Tests die Untergliederung in 25-Grad-Schritte als bestmögliche heraus. Wie bereits weiter
oben erwähnt, lässt sich auch diese Konstante in der Datei definitions.h anderen Gegebenheiten leicht anpassen. Ist die Einordnung der Pose (in dieser Reihenfolge) nach Orientierung,
Skalierung, X-Dimension und Y-Dimension erfolgt, so erfolgt die Eintragung der Pose in eine
Schlüsselpunktliste, in Abbildung 4.2 keypoint-index-list genannt. Jede dieser Listen umfasst
nach der Verarbeitung aller Posen eines Musters alle diejenigen, die in den vier Ordnungskriterien jeweils in das gleiche Bin gehasht werden und somit für eine Gesamtpose des Modells
im Testbild sprechen. Die Klasse KPIList besitzt als Klassenvariablen den booleschen Wert
big enough, der anzeigt ob eine ausreichende Anzahl an Schlüsselpunkten in diese Liste gehasht
wurde, um eine Modellpose im Testbild daraus zu berechnen. Des Weiteren wird die Anzahl der
gehasten Schlüsselpunkte mit nr of elements mitprotokolliert. Zu guter letzt besitzt die Klasse
die KPBin-Variable root, die ein Zeiger auf den Kopf der Liste darstellt und die Verbindung zwischen einem Bin der Y-Dimension und der keypoint-index-list (Ziffer 4) ist.
Eine keypoint-index-list ist konsistent mit den restlichen Implementierungen ebenfalls eine doppelt verkettete Liste, deren Elemente vom Typ KPBin sind. Dabei steht KP für Keypoint, also
Schlüsselpunkt. Für die Verkettung existieren wiederum die Zeiger *prev und *next auf das
Vorgänger- bzw. Nachfolgerelement der Liste. Die in eine Liste gehashten Schlüsselpunkte
werden allerdings nicht mit ihren kompletten Daten in diese KPBins eingetragen, da u.a. die
detaillierten Informationen während des Hashvorgangs nicht propagiert werden. Es genügt die
Abspeicherung der Indexnummer des Schlüsselpunktes und die maximale Skalierung, im vorliegenden Beispielfall also 3 und 8.0 für die KPBin-Klassenvariablen Idx und Sc. Werden im
Folgenden die exakten Daten eines Schlüsselpunktes zu weiteren Berechnungen, u.a. der Modellpose im Testbild, benötigt, so wird die Verbindung der KPI-Listen und der zu Anfang eingelesenen Liste aller gematchten Punktpaare (Ziffer 5) genutzt. Diese Verbindung ergibt sich aus
der Übereinstimmung der Indexnummern, so dass u.a. zum Index 3 alle absoluten Informationen
aus der hier matchpoint-list genannten Datenbank gesammelt werden können.
Besitzt eine keypoint-index-list mindestens drei Elemente, so wechselt der Booleanwert der
Klassenvariable big enough von false auf true. big enough = true zeigt an, dass eine ausreichende Anzahl an Schlüsselpunkten in eine KPBin-Liste gehasht wurde, um die Modellpose
im Testbild berechnen zu können. Die Anzahl drei ist gewählt, da hiermit alle Parameter einer
affinen Transformation bestimmt werden können. Aus theoretischen Gesichtspunkten ist eine
affine Abbildung für das vorliegende Problem zwar nicht notwendig, da ausschließlich Rotation,
Translation und Skalierung vorliegen können, aus Praxissicht lassen sich die Parameter dieses
4.3. UMSETZUNG DES CLUSTERVORGANGS
27
linearen Problems allerdings leichter lösen. Daraus resultiert die Anwendung in dieser Arbeit.
Formal lässt sich eine affine Transformation wie folgt darstellen:
u
v
!
=
m1 m2
m3 m4
!
x
y
!
+
tx
ty
!
(4.2)
Dabei bezeichnet (x y)T den Modellpunkt, der Testbildpunkt geht mit (u v)T in die Gleichung
ein. mi sind die Repräsentanten, die für die affine Rotation, Skalierung und Streckung stehen
und (tx ty )T steht für die Modelltranslation. Die Bestimmung dieser Parameter kann mittels
eines linearen Gleichungssystems durchgeführt werden, das wie folgt aufgebaut ist:









x1 y1 0 0
0 0 x1 y1
..
..
..
..
.
.
.
.
xn yn 0 0
0 0 xn yn
1
0
..
.
0
1
..
.










1 0 


0 1
m1
m2
m3
m4
tx
ty


u1
v2
..
.



 

 

 

 
=

 

 
  u 
  n 

vn
(4.3)
Besetzt man die Variablen mit den Werten von genau drei Schlüsselpunktpaaren, so erhält man
eine einzelne, exakte Lösung. Fließen mehr als drei Schlüsselpunktpaare in das Gleichungssystem ein, so ergibt sich eine Näherungslösung nach dem Least-Square-Ansatz mit Hilfe der
Pseudoinversen
x = (AT A)−1 AT b,
(4.4)
wenn die Elemente des Gleichungssystems mit Ax = b bezeichnet wurden.
4.3.2
Iterative Verbesserung der Stabilität einzelner Cluster
Die Parameter für eine affine Transformation werden für alle Schlüsselpunktlisten, also für jedes Element der Liste der Cluster für ein Muster, wie in Gleichung 4.2 durchgeführt. Relativ
oft besteht diese Liste von Clustern allerdings nicht aus ausschließlich einem Element, d.h. die
geclusterten Schlüsselpunktpaare stimmen auf den ersten Blick für mehrere Musterposen im
Testbild. Dies entsteht durch Randfälle beim Clustervorgang, so dass eine Verknüpfung verschiedener Schlüsselpunktlisten zu möglichst einer einzigen Liste von Vorteil wäre. Der im
Folgenden erklärte Ansatz der iterativen Verbesserung bzw. Zusammenfügung von Clustern basiert auf den jeweiligen Parameter für die affine Transformation, im vorhergehenden Abschnitt
28
KAPITEL 4. IMPLEMENTIERUNG DES ERKENNUNGSSYSTEMS
4.3.1 mit mi , i = 1, ..., 4 benannt.
Das System startet mit der an erster Stelle in der Liste der Cluster eingetragenen Schlüsselpunktliste und berechnet von dieser die affinen Transformationsparamter. Anschließend wird für jeden
Schlüsselpunkt der weiteren Schlüsselpunktlisten in der Clusterliste, falls existent, überprüft, ob
dieser ebenfalls den gegebenen Parametern genügen würde. Als Schwellwert bzw. Fehlergrenze
wird in der Arbeit [Jun06] ein Wert von 40 Prozent der maximal projizierten Modellgröße angesetzt und findet auch in dieser Arbeit Verwendung. Im konkreten Fall bedeutet dies, dass ein in
das Testbild mit Hilfe der affinen Transformationsparameter projizierter Modellpunkt nicht weiter als 0.2∗hprojizierte M odellgroessei von seinem gematchten Testbildpunkt abweichen darf.
Ist diese Bedingung erfüllt, so wird der überprüfte Schlüsselpunkt aus seiner aktuellen Punktliste
entfernt und in jene eingefügt, mit der die aktuellen Transformationsparameter bestimmt wurden.
Dieser Vorgang der Übertragung von Schlüsselpunkten aus einer Punktliste in eine andere und
damit die Neuaufteilung von Clustern wird für alle geclusterten Schlüsselpunkte des aktuellen
Models durchgeführt, wobei jede Schlüsselpunktliste mindestens einmal diejenige ist, von der
die aktuellen affinen Transformationsparameter bestimmt werden. Mindestens einmal deshalb,
da der Gesamtvorgang iterativ solange fortgeführt wird, bis sich an der Zuordnung der Schlüsselpunkte zu Clustern oder im Idealfall am Ende genau zu einem Cluster, keine Änderungen mehr
ergeben.
4.4
Auswahl der Endresultate
Die Auswahl der Endresultate basiert auf den zuvor berechneten und in Abschnitt 4.3 beschriebenen Clustern von Schlüsselpunkten. Im Idealfall besteht das Ergebnis des Clustervorgangs
wie erwähnt aus genau so vielen Listen von Clustern, wie Objekte, insbesondere Spielkarten,
im aktuellen Testbild zu erkennen sind und jede Clusterliste besitzt genau ein Element. Dieses
Element, eine Liste von Schlüsselpunkten, besteht möglichst aus einer zahlreichen Menge von
Schlüsselpunktpaaren, so dass die Berechnung der Musterpose im Testbild sehr stabil festgestellt
werden kann. In der Praxis sind diese Ideale leider äußerst selten anzutreffen; in einem guten Fall
ist wenigstens eine der Idealvorstellungen, Anzahl der Clusterlisten oder viele Schlüsselpunkte,
die für eine Musterpose stimmen, gegeben. Um aus einer zu großen Menge von Clusterlisten
und damit Posen für verschiedene Muster möglichst die richtigen als bestpassend einzustufen,
existieren verschiedene Möglichkeiten. Im Folgenden sind die in dieser Arbeit implementierten
Sortierverfahren genannt und anschließend näher erläutert.
• Anzahl der Cluster
4.4. AUSWAHL DER ENDRESULTATE
29
Bild 4.3: Qt-Anwendung mit Testbild und Endresultaten im rechten widget
• Gesamtanzahl der Clusterelemente aller Cluster
• die durchschnittliche Anzahl der Clusterelemente pro Cluster
• Differenz des ins Testbild projizierten Musters und des Testbildes an dieser Stelle
• relative Gesamtanzahl an Clusterelementen aller Cluster bzgl. der Schlüsselpunktanzahl
des jeweiligen Musters
Die Festlegung, welches Verfahren zur Erkennung herangezogen wird, legt der Nutzer über die
bereits in 4.1 erwähnte rechte Kombobox der Qt4-Anwendung fest.
Die Verwendung des erstgenannten Sortierverfahrens, Anzahl der Cluster, stellt einen Widerspruch zum Idealziel genau eines Clusters pro Muster dar. Trotzdem ist die Anwendung in
besonderen Fällen nicht von Nachteil, bei denen die Abweichungen der Posen eines Musters
zueinander und zum tatsächlichen Testbildbereich relativ minimal sind und die iterative Verbesserung einzelner Cluster (siehe die Abschnitte 3.2 und 4.3.2) u.a. auf Grund des zeitlichen
Aspektes nicht angewandt wird.
Die Gesamtanzahl der Clusterelemente aller Cluster für die Ordnung der Ergebnisse zu nutzen,
30
KAPITEL 4. IMPLEMENTIERUNG DES ERKENNUNGSSYSTEMS
stellt einen deutlichen Vorteil für Objekte mit hohem Detailreichtum dar. Für sie bestehen bereits
nach der Vorabberechnung der Schlüsselpunkte größere Datenbanken zur Verfügung, die auch
zu einer höheren Anzahl an gematchten Punktpaaren führen. Die Anwendung dieser Möglichkeit der Ergebnissortierung empfielt sich ausschließlich für stark unterscheidbare Objekte mit
ungefähr gleicher Information. Das beschriebene Problem lässt sich in Maßen durch die Anwendung des dritten Sortierverfahrens mildern, bei dem die Anzahl der Clusterelemente in Bezug zur
Clusteranzahl gesetzt wird. Für Muster mit vielen Details entstehen in der Praxis nicht nur eine
höhere Anzahl an Schlüsselpunkten, vielmehr werden diese in der Regel auch zu mehr Clustern
zusammengefasst.
Verfahren Nummer vier der obigen Übersicht ist mathematisch stabil fundiert und unter der
Annahme von keiner bis wenig Beleuchtungsänderung auch in der Praxis gut anwendbar. Zur
Verwendung bei der Berechnung der Ergebnisse dieser Arbeit, die in Kapitel 5 näher dargestellt
sind, genügt diese mathematische Verifikation nicht. Das Verfahren besitzt, wie in Abschnitt 2.1
näher erleutert, einige entscheidende Nachteile, u.a. in der zeitlichen Dimension.
Die Ergebnisse im folgenden Kapitel 5 basieren auf dem Sortierverfahren, bei dem die Gesamtanzahl der Elemente aller Cluster in Bezug zur jeweiligen Schlüsselpunktanzahl des Musters gesetzt wird. Damit wird das entscheidende Problem des Verfahrens umgangen, welches
ausschließlich die absolute Elementanzahl aller Cluster zur Entscheidung verwendet. Der Divisionsfaktor für Objekte mit viel Detailreichtum ist entscheidend größer, als für Objekte mit wenig
Information. In Tests für diese Arbeit erreichen damit sowohl Nummernkarten mit niedrigen
Augenzahlen, als auch Bildkarten eine in etwa gleiche relative Anzahl an geclusterten Schlüsselpunkten.
Kapitel 5
Aufbau und Resultate der Experimente
5.1
Aufbau der Versuchsumgebung
Als Eingangsdaten für die Kartenerkennung können sowohl Bilder im Offlinemodus, wie auch
im Onlinemodus verwendet werden. Im Folgenden werden verschiedene Offlinedatenbanken
vorgestellt und verwendet, deren Bilder von unterschiedlichen Kamerasystemen stammen. Um
einen realen Vergleich anstellen zu können, wurden alle Fotos auf eine Einheitsgröße von ca.
640 x 480 Pixel unterabgetastet. Die dazu notwendigen Glättungsoperationen zur Vermeidung
von Aliasingeffekten und weiteren Phänomenen bzw. Bildfehlern bei der Unterabtastung wurden
zuvor auf die Originalbilder angewandt.
Für die Onlinebilder findet im getesteten Aufbau eine Sony DFW-VL500 Verwendung, deren
Daten direkt per Firewireverbindung an einen PC gesendet werden. Dieser Datenstrom wird
mittels dem Linuxprogramm Coriander ausgelesen und bei Bedarf in Bilddateien des Formats
*.pgm abgespeichert. Um sich eine teils notwendige Unterabtastung zu sparen, lässt sich der Videostream in Coriander auf eine gewünschte Bildgröße einstellen, u.a. auf Graustufen mit 640 x
480 Pixeln. Die zwischendurch abgespeicherten Bilder lassen sich ohne Zwischenschritte sofort
in der in Kapitel 4.1 vorgestellten Anwendung öffnen und weiterverarbeiten, d.h. die Erkennung
von vorhandenen Karten lässt sich direkt durchführen.
Für die Auflage der Karten findet in allen im Folgenden dargestellten Experimenten der Versuchsaufbau aus Kapitel 3.1 Verwendung, der in Abbildung 3.1 visualisiert ist. Die Berechnung
eines Testbildes mit zwei Spielkarten dauert auf einem Pentium 4 mit 2 GHz zwischen zehn und
15 Sekunden.
31
32
KAPITEL 5. AUFBAU UND RESULTATE DER EXPERIMENTE
Bild 5.1: Testbild mit Restriktionen und einer Größe von 774 x 518 Pixeln
5.2
Resultate von Graustufenbildern als Eingabe
Hingegen der Erwartungen auf Grund der fundamentalen Theorie und einiger bekannter Ergebnisse in der Objekterkennung mit SIFT-Merkmalen fallen die Ergebnisse mäßig bis teils sehr
schlecht aus. Eine höhere Erkennungsrate als 75 Prozent konnte in keinem der durchgeführten
Versuche erreicht werden. Viel schlechter fallen die Resultate aus, wenn keinerlei Restriktionen
an die Bildaufnahme und den Experimentalaufbau gestellt werden und Störfaktoren wie Glanzlichter und Rauschen hinzukommen. Mögliche Erklärungen zu den nicht verwertbaren Erkennungsraten von etwa 30 Prozent werden in diesem und dem folgenden Abschnitt 5.3 dargestellt
und diskutiert.
Die im folgenden dargestellten Resultate basieren auf einem Experiment, die entgegen der einschränkungsfreien Aufgabenstellung aus Kapitel 1.1 einige Restriktionen aufzuweisen hat. Dazu
zählen die mit exakt zwei festgelegte Anzahl von Karten im Testbild, die Forderung eines nahezu
homogenen Hintergrundes, der mit Hilfe einer Abdeckplatte über den Karten und über die gesamte Glasfläche des Versuchsaufbaus erreicht wird und die Vermeidung von Reflexionen durch
starke Glanzlichter. Die stark rauscharmen Aufnahmen mit einer Auflösung von 10 Megapixeln
stammen von einer Nikon D80 und wurden auf eine Testbildgröße von 774 x 518 Pixel unterab-
5.2. RESULTATE VON GRAUSTUFENBILDERN ALS EINGABE
33
getastet. Die Abweichung zum Format 640 x 480 Pixel ergibt sich durch ein unterschiedliches
Seitenverhältnis beim verwendeten CCD-Chip - 3:2 statt 4:3. Als weitere Einschränkung wurden
die zwei Testkarten im Testbild zum einen aneinandergrenzend und zum anderen nahezu parallel
zu den Glasplattenrändern in der Mitte der Platte positioniert. Auf Grund der Rotationsinvarianz
von SIFT-Merkmalen sollte sich diese Restriktion allerdings nicht signifikant auf die Endresultate auswirken, wie auch in einigen wenigen Testaufnahmen festgestellt werden konnte.
Die Abbildung 5.1 veranschaulicht ein Beispiel aus der Datenbank der in diesem Test verwendeten Bilder. Nach der Klassifikation aller gefundenen Matches zwischen Testbild und den 52
Mustern aus der Datenbank mit der Kennziffer 1 in Tabelle 4.1 und dem anschließenden Sortieren der Ergebnisse nach dem vierten, in Kapitel 4.4 vorgestellten Verfahren, ergeben sich die
folgenden Endresultate.
Die 38.46 Prozent falscher Ergebnisse teilen sich in dieser Testreihe in die 24.24 Prozent fehGesamtresultate
Erkennungsrate
Nichterkennung
falsches Ergebnis
kein Ergebnis
falsches Ergebnis falscher Kartentyp
falsche Kartennummer
falscher Kartentyp Verwechslung schwarz ⇔ rot
richtige Farbe
fehlerhafte Rückweisung
61.54%
38.46%
0.00%
7.69%
30.77%
2.88%
4.81%
24.24%
anteilig bzgl.
höherer Ergebnisebene
------20.00%
80.00%
37.50%
62.50%
---
Tabelle 5.1: Testergebnisse einer Versuchsreihe mit 52 Testbildern und Restriktionen
lerhafter Rückweisung auf, bei der die Spielkarte im Testbild vorhanden ist, aber auf Grund
einer unzureichenden Anzahl an Schlüsselpunktmatches für eine Musterpose verworfen wird,
und 14.22 Prozent, bei denen das Kartenmuster zwar als möglicherweise im Testbild vorhanden
eingestuft wird, allerdings bei der Auswahl der Endresultate durch andere Muster mit besseren
Übereinstimmungen aus den Top zwei verdrängt.
Um überprüfen zu können, ob die relativ schlechten Resultate des vorangegangenen Experiments auf Grund von Mehrdeutigkeiten durch Vorhandensein von zwei Spielkarten aufgetreten
sind, muss ein weiteres Experiment durchgeführt werden. Dabei gelten die selben Einschränkungen wie im weiter oben vorgestellten Test, wobei hinzukommt, dass lediglich eine Spielkarte pro
Testbild existiert. Somit können Klassifikationen mit den Symbolen für den Kartentyp von der
einen Karte und der Augenzahl der anderen Karte ausgeschlossen werden.
Wie der Tabelle 5.2 zu entnehmen ist, verbessert sich die Erkennungsrate inkl. Resultatauswahl
34
KAPITEL 5. AUFBAU UND RESULTATE DER EXPERIMENTE
Gesamtresultate
Erkennungsrate
Nichterkennung
falsches Ergebnis
kein Ergebnis
falsches Ergebnis falscher Kartentyp
falsche Kartennummer
falscher Kartentyp Verwechslung schwarz ⇔ rot
richtige Farbe
fehlerhafte Rückweisung
69.23%
30.77%
0.00%
8.64%
22.13%
4.32%
4.32%
7.69%
anteilig bzgl.
höherer Ergebnisebene
------28.07%
71.93%
50.00%
50.00%
---
Tabelle 5.2: Testergebnisse einer Versuchsreihe mit 52 Testbildern und Restriktionen, aber im
Gegensatz zur ersten Testreihe ausschließlich einer Karte pro Testbild
dabei nicht gravierend. Positiv fällt bei diesem Ergebnis der nicht korrekte Anteil an Rückweisungen auf. Lediglich 7.69 Prozent aller Testbilder enthielten eine Spielkarte, die sofort bei der
Klassifikation aussortiert wurde, da nicht genügend - im implementierten Fall mindestens drei gematchte Punktpaare für sie sprachen.
Nachdem in den zwei vorangegangenen Experimenten Restriktionen bei der Testbilderstellung
Gesamtresultate
Erkennungsrate
Nichterkennung
falsches Ergebnis
kein Ergebnis
falsches Ergebnis falscher Kartentyp
falsche Kartennummer
falscher Kartentyp Verwechslung schwarz ⇔ rot
richtige Farbe
fehlerhafte Rückweisung
38.46%
61.54%
0.00%
9.77%
51.77%
0.98%
8.79%
20.19%
anteilig bzgl.
höherer Ergebnisebene
------15.87%
84.13%
10.00%
90.00%
---
Tabelle 5.3: Testergebnisse einer Versuchsreihe mit 52 Testbildern und keinen Restriktionen
aufgestellt und soweit möglich eingehalten wurden, sind dem Aufbau und der Bildaufnahme
beim im Folgenden dargestellten Testversuch keine Grenzen gesetzt. Um den Einfluss von signifikanten Glanzlichtern testen zu können, wird jedes Testbild unter Zuhilfenahme eines nahezu senkrechten Blitzes auf die Glasplatte aufgenommen. Als Hintergrund um die aufgelegten
Spielkarten und auch der sonstigen Umgebung wird Willkür zugelassen, um nicht durch Zufall
günstige oder ungünstige Erkennungsbedingungen zu schaffen. Als Aufnahmegerät dient eine
Sony DSC-W1 Digitalkamera mit einer effektiven Auflösung von fünf Megapixeln. Die entstandenen Bilder werden vor der Eingabe in die Prozedur der Kartenerkennung auch auf 774 x 518
5.2. RESULTATE VON GRAUSTUFENBILDERN ALS EINGABE
35
Bild 5.2: Testbild ohne Restriktionen und einer Größe von 774 x 518 Pixeln
Pixel unterabgetastet, um einen realen Vergleich mit den vorigen Experimenten gewährleisten
zu können. Die Kartenanzahl beträgt für die meisten im Test verwendeten Bilder genau zwei,
allerdings wurden auch etwa ein Dutzend Testbilder mit drei bzw. vier Spielkarten versehen,
die allerdings im Ergebnisdurchschnitt keine Änderungen bewirkten. Eine Beispielaufnahme zu
diesem Experiment lässt sich der Abbildung 5.2 entnehmen.
Im Vergleich zu den Testläufen mit Restriktionen, insbesondere mit dem ersten, der ebenfalls
zwei Spielkarten pro Testbild zugrunde legt, brechen die Ergebnisse stark ein, wie der Tabelle
5.3 zu entnehmen ist.
Abschließend für den Abschnitt der Graustufenbilder soll an dieser Stelle noch ein Experiment dargestellt werden, bei dem eine Videokamera mit relativ geringer Auflösung und hohem
Rauschanteil als Eingabegerät Verwendung findet. Die Kamera ist vom Typ Sony DFW-VL500
und wird per Firewirekabel wie in Abschnitt 5.1 mit dem PC verbunden, so dass sowohl die Bearbeitung von Offlinebilder, aber auch die Arbeit mit Onlinebildern möglich ist. Als den restlichen
Experimenten am besten angepasste Testbildgröße wird die Maximalauflösung von 640 x 480
Pixel verwendet. Die Aufnahmen erfolgen direkt in Graustufen, d.h. ohne anschließende Farbraumumwandlung, und können sofort im PGM-Format gesichert und weiterverwendet werden.
Die Anzahl der Spielkarten pro Testbild ist wiederum auf exakt zwei festgelegt; der Hintergrund
36
KAPITEL 5. AUFBAU UND RESULTATE DER EXPERIMENTE
Bild 5.3: Testbild der Sony-Videokamera mit einer Größe von 640 x 480 Pixeln
ist über den Verlauf des Tests variabel gestaltet. Reflexionen bzw. Glanzlichter werden ausschließlich durch Lichtspiegelungen der Glasscheibe verursacht, d.h. ein externer Blitz wird
nicht eingesetzt. Die Beleuchtung des Testaufbaus erfolgt durch zwei Glühlampen, die einen
recht warmen Farbton abstrahlen, was aber zum einen durch die Graustufen und zum zweiten
durch die Kontrastspreizung zu Beginn des Objekterkennungsvorgangs wenig Einfluss auf die
Bildqualität besitzt.
Trotz vielfacher Versuche der besseren Fokussierung und Verbesserung des Schärfegrades konnten Stufeneffekte an dem Kartensymbolen nicht verhindert werden, was ein Grund für die im
Folgenden dargestellte schlechte Erkennungsrate sein kann. Ein Beispielbild befindet sich in der
Abbildung 5.3.
Die 71.15 Prozent aller Testfälle, bei denen ein falsches Ergebnis, wie der Tabelle 5.4 zu entnehmen ist, als Endresultat angezeigt wurde, teilt sich wiederum in die zwei Fälle der fehlerhaften
Rückweisung und der falschen Endauswahl. Die richtige Klassifikation, allerdings mit einer
Einordnung in die Liste Endresultat auf Platz drei und weiter hinten gelang in wenig befriedigenden 3.84 Prozent. Dabei waren alle Auswahlfehler durch eine zur Korrektheit verschiedenen
5.3. RAUSCHABHÄNGIGKEIT DER OBJEKTERKENNUNG MIT SIFT-MERKMALEN 37
Gesamtresultate
Erkennungsrate
Nichterkennung
falsches Ergebnis
kein Ergebnis
falsches Ergebnis falscher Kartentyp
falsche Kartennummer
falscher Kartentyp Verwechslung schwarz ⇔ rot
richtige Farbe
fehlerhafte Rückweisung
28.85%
71.15%
0.00%
0.00%
71.15%
0.00%
0.00%
67.31%
anteilig bzgl.
höherer Ergebnisebene
------0.00%
100.00%
0.00%
100.00%
---
Tabelle 5.4: Testergebnisse einer Versuchsreihe mit 52 Testbildern und keinen Restriktionen;
Kamera: Sony DFW-VL500
Kartennummer verursacht. Mit 67.31 Prozent wurden mehr als zwei Drittel aller in den Testbildern vorhandenen Karten bereits bei der Klassifikation durch eine unzureichende Anzahl an
gematchten Schlüsselpunktpaaren zurückgewiesen und können daher auch nicht in der Liste der
Endresultate vermerkt werden.
Gerade die starke, fehlerhafte Rückweisungsrate kann in der Verwendung der Kartenmuster liegen. Für die oben genannten Prozentzahlen wurden wie in den vorangegangenen Experimenten
auch, die Muster mit der Kodierungsziffer 1, also Aufnahmen der Nikon D80 verwendet. Führt
man den gleichen Versuch mit Hilfe von Mustern durch, die mit der selben Kamera wie die
Testbilder entstanden sind, so lässt sich ein wesentlich besseres Gesamtergebnis erzielen, das
allerdings auch nicht über die 60 bis 70 Prozent der vorherigen Testserien hinauskommt. Eine
explizite Untersuchung der Abhängigkeit der Objekterkennung mit SIFT-Merkmalen bezüglich
dem Störfaktor Rauschen erfolgt im folgenden Kapitel 5.3.
5.3
Rauschabhängigkeit der Objekterkennung mit SIFT-Merkmalen
Rauschen ist besonders ein Einflussfaktor für die Bildentstehung bei schwachen Lichtverhältnissen, die bei keiner Verwendung von zusätzlichen Lichtquellen und damit der Vermeidung
von Glanzlichtern in der Praxis häufig anzutreffen sind. Gerade für die Betrachtung einzelner
Punktmerkmale sollte der Einfluss von Störpixeln signifikant sein und sich damit auch auf die
Objekterkennung auswirken. Die Widerlegung oder der Nachweis dieser Annahme soll in diesem Abschnitt vollzogen werden.
38
KAPITEL 5. AUFBAU UND RESULTATE DER EXPERIMENTE
Für die experimentellen Tests wird jeweils eine Verwechslungsmatrix aller 52 Kartenmuster
mit der Kodierungsziffer 1 erstellt, d.h. jede Karte wird mit jeder verglichen und die Anzahl der
gematchten Schlüsselpunktpaare in eben jene Matrix eingetragen. Dabei werden elf verschiedene Signal-Rausch-Verhältnisse verwendet: Zum einen werden die Originale mit den Originalen selbst verglichen, zum anderen die Originale mit den mit Gaußrauschen versehenen Mustern.
Die jeweiligen Rauschanteile liegen in Zehn-Prozent-Schritten bei zehn Prozent, zwanzig Prozent, usw. bis einhundert Prozent. Dazu wurden die Originalmuster mit Hilfe des Programms
Corel Paint Shop Pro XI.2 und dem Menüpunkt ’Anpassen/Bildrauschen hinzufügen’ verrauscht.
Die im darauf folgenden Dialogfenster anzugebenen Prozente beziehen sich auf den zu verwendenden Bereich aus der Farbmatrix des aktuellen Bildes. Da in dieser Arbeit ausschließlich auf
Grauwertbildern gearbeitet wird, wird die monochrome Farbmatrix verwendet. Im Fall von 100
Prozent Rauschen wird somit eine Gaußglocke auf den Grauverlauf mit den Werten 0 bis 255 gelegt und entsprechend der Gaußverteilung zufällig auf die Bildpixel addiert, d.h. dass die meisten
Pixel mit Additionswerten um die 127 verrauscht werden. Eine anschließende Histogrammverengung erzeugt wieder ein Grauwertbild mit Werten im Bereich [0, 255]. Für z.B. ausschließlich
10 Prozent Rauschanteil wird die Gaußglocke nur über die 10 Prozent der hellsten Grauwerte
gelegt, was im Regelfall dann der Bereich [230, 255] sein sollte. Die Addition erfolgt wie zuvor beschrieben. Schlussendlich entstehen elf Verwechslungsmatrizen mit je 52 x 52 = 2704
Einträgen, d.h. insgesamt werden knapp 30.000 Mustervergleiche ausgewertet. Deren Ergebnisse sind in den Abbildungen 5.4 und 5.5 veranschaulicht.
Bei den acht Ergebnischarts der zwei Abbildungen ist auf der Abszisse jeweils der prozentuale
Anteil des Gaußrauschens am Gesamtbild abgetragen, während die Ordinate für die jeweilige
Anzahl gematchter Schlüsselpunktpaare pro Mustervergleich steht. Die jeweils blaue Funktion
beschreibt dabei die Anzahl des besten Vergleichs zweier Muster, die orangefarbene das zweitbeste Ergebnis. Liegen beide Funktionen relativ dicht beieinander, so ergibt sich schnell Verwechslungspotenzial im Clustervorgang, falls die Matchpaare des zweitbesten (oder gar drittbesten)
Ergebnisses geschlossener für ein und dieselbe Musterpose im Testbild stimmen. Des Weiteren
sei erwähnt, dass die Tests dieses Abschnittes ausschließlich auf Mustern durchgeführt wurden,
d.h. Störeinflüsse um die Karten herum bzw. (leicht) unterschiedliche Beleuchtungsverhältnisse
sind nicht anzutreffen. In den beiden Abbildungen 5.4 und 5.5 steht der fett gedruckte Begriff
am rechten Diagrammrand für den verwendeten Kartentyp.
Die jeweiligen Funktionen in den Charts besitzen alle einen ähnlichen Verlauf. Deutlich zu erkennen ist, dass sich ohne Rauscheinfluss die Funktionen des jeweils besten und des zweitbesten
Vergleichsergebnisses eindeutig voneinander unterscheiden. Eine Annäherung findet bereits mit
5.3. RAUSCHABHÄNGIGKEIT DER OBJEKTERKENNUNG MIT SIFT-MERKMALEN 39
400
350
250
200
Club
# Matches
300
150
100
50
0
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
70%
80%
90%
100%
70%
80%
90%
100%
70%
80%
90%
100%
Anteil des Bildrauschens
350
300
200
Diamond
# Matches
250
150
100
50
0
0%
10%
20%
30%
40%
50%
60%
Anteil des Bildrauschens
300
200
150
Heart
# Matches
250
100
50
0
0%
10%
20%
30%
40%
50%
60%
Anteil des Bildrauschens
400
350
250
200
Spade
# Matches
300
150
100
50
0
0%
10%
20%
30%
40%
50%
60%
Anteil des Bildrauschens
Bild 5.4: Rauschabhängigkeit der Spielkartenerkennung mit Berücksichtigung aller 13 Kartenmuster pro Kartentyp
40
KAPITEL 5. AUFBAU UND RESULTATE DER EXPERIMENTE
250
150
Club
# Matches
200
100
50
0
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
70%
80%
90%
100%
70%
80%
90%
100%
70%
80%
90%
100%
Anteil des Bildrauschens
250
150
Diamond
# Matches
200
100
50
0
0%
10%
20%
30%
40%
50%
60%
Anteil des Bildrauschens
140
120
80
Heart
# Matches
100
60
40
20
0
0%
10%
20%
30%
40%
50%
60%
Anteil des Bildrauschens
250
150
Spade
# Matches
200
100
50
0
0%
10%
20%
30%
40%
50%
60%
Anteil des Bildrauschens
Bild 5.5: Rauschabhängigkeit der Spielkartenerkennung unter ausschließlicher Berücksichtigung
der 10 Zahlkarten pro Kartentyp
5.4. RESULTATE VON EINGABEBILDERN MIT RGB-VERSCHIEDENEN FARBRÄUMEN41
einem Rauschanteil von zehn Prozent, spätestens bei zwanzig Prozent statt, da sich die blauen
Funktionen jeweils stark monoton fallend verhalten, die Ergebnisse für die zweitbesten Ergebnisse erst ab zehn bis zwanzig Prozent Rauschanteil eine Abschwächung erfahren. Ab einem
zwanzigprozentigen Rauschanteil beträgt der Abstand beider Funktionen von jedem der acht
Charts 50 Prozent, teilweise sogar weniger als ein Viertel. Deutlicher ist dies in der Abbildung
5.5 zu beobachten, bei deren Charts jeweils nur die zehn Zahlkarten eines jeden Kartentyps in
die Wertung eingehen. Am signifikantesten ist eine Funktionsannäherung zwischen blauer und
orangefarbener Kurve bei dem Kartentyp Diamond festzustellen.
Die Bestätigung für eine Wohlunterscheidbarkeit von Bildkarten wird damit geliefert, dass der
Anteil der gematchten Schlüsselpunktpaare des jeweils zweitbesten Ergebnisses gegenüber des
erstbesten nie mehr als zehn Prozent beträgt, eine Verwechslung also nahezu ausgeschlossen
werden kann. Die potenziellen Verwechslungen von Zahlkarten untereinander erreicht ähnliche
Prozentwerte bzgl. des falschen Kartentyps bzw. der falschen Kartennummer wie in Abschnitt
5.2. Eine fehlerhafte Zuordnung eines Musters zu einem Testbild wird zumeist durch eine nicht
korrekte Kartennummer desselben Kartentyps erreicht. Eine Verwechslung zwischen den Farben rot und schwarz tritt fast nie auf. Insgesamt trat lediglich bei zwei von 29.744 Mustervergleichen der Fehler auf, dass eine zur Testkarte falsche Musterkarte die meisten Matchpaare von
Schlüsselpunkten erhielt.
Der Einfluss des Störfaktors Rauschen, wie er sich quantitativ bei den Ergebnissen des letzten
Experiments im Abschnitt 5.2 zeigt, lässt sich mit den Resultaten dieses Abschnittes bestätigen.
Spätestens ab einem Rauschanteil von 60 bis 70 Prozent ist eine genaue Zuordnung, auch auf
Grund weniger gematchter Schlüsselpunktpaare nicht mehr gegeben.
5.4
Resultate von Eingabebildern mit RGB-verschiedenen Farbräumen
Auch wenn die zahlreichen Ergebnisse in Kapitel 5.2 zeigen, dass eine Transformation der Testbildern vom RGB-Farbraum in Graustufen keine signifikant großen Fehlerzahlen bewirkt, so ist
eine Versuchsanordnung mit eindeutiger Unterscheidung der Farben rot und schwarz mit Sicherheit eine Bestätigung oder gar Verbesserung der Ergebnisse. Die Aufteilung eines RGB-Bildes in
seine verschiedenen Kanäle kann sowohl in die drei Farbbestandteile rot, grün und blau erfolgen,
als auch die Einzelbilder des HSI-Farbraums Farbton, Sättigung und Intensität. Die Intensität
entspricht dabei dem Graustufenbild. Eine Auswertung der zahlreichen Kanalbilder ergibt, dass
sich die Farben rot und schwarz, die die einzig relevanten bei der Unterscheidung von Spielkar-
42
KAPITEL 5. AUFBAU UND RESULTATE DER EXPERIMENTE
ten sind, am besten im Sättigungskanal voneinander trennen lassen. Wie im Beispielbild 5.6 zu
sehen, behält schwarz dabei seine Farbe bei, während rot sich der Farbe weiß annähert. Somit ist
eine nahezu maximale Differenzierung möglich.
Für die Testreihe findet dieselbe Bilderdatenbank wie beim im Kapitel 5.2 als zweites vorGesamtresultate
Erkennungsrate
Nichterkennung
falsches Ergebnis
kein Ergebnis
falsches Ergebnis falscher Kartentyp
falsche Kartennummer
falscher Kartentyp Verwechslung schwarz ⇔ rot
richtige Farbe
fehlerhafte Rückweisung
75.00%
13.46%
11.54%
3.37%
10.10%
0.00%
3.37%
25.00%
anteilig bzgl.
höherer Ergebnisebene
------25.00%
75.00%
0.00%
100.00%
---
Tabelle 5.5: Testergebnisse der zweiten Versuchsreihe mit 52 Testbildern und jeweils genau einer
Spielkarte pro Testbild, hier allerdings im Sättigungskanal
gestellten Experiments Verwendung, d.h. die Aufnahme mit Hilfe der Nikon D80 erfolgte mit
nahezu homogenem Hintergrund, kaum Reflexionen und genau einer Karte in jedem Testbild.
Die Umwandlung bzw. Kanaltrennung der ursprünglichen RGB-Bilder wurde mit dem Bildverarbeitungsprogramm Paint Shop Pro Photo XI.2 von Corel durchgeführt, wobei ebenso eine
eigene Implementierung bei signifikant herausragenden Ergebnissen möglich ist.
Die eindeutige Unterscheidung zwischen den Farben rot und schwarz im Sättigungskanal ist damit, wie in Tabelle 5.5 ersichtlich, nachgewiesen. Allerdings sollte in der Praxis trotzdem dieses
Verfahren nicht zwangsläufig angewendet werden, da trotz des Mehraufwandes mit durch die
Kanaltransformation die Endresultate keine besseren Ergebnisse bieten, als im Graustufenmodus.
5.4. RESULTATE VON EINGABEBILDERN MIT RGB-VERSCHIEDENEN FARBRÄUMEN43
Bild 5.6: Testbild im Sättigungskanal mit einer Größe von 774 x 518 Pixeln
44
KAPITEL 5. AUFBAU UND RESULTATE DER EXPERIMENTE
Kapitel 6
Zusammenfassung und Ausblick
Das Ziel dieser Arbeit war die praktische Umsetzung der Objekterkennung insbesondere bei der
robusten Erkennung von Spielkarten aus Untertischaufnahmen. Dazu wurden einige mögliche
Verfahren vorgestellt, sowie ihre Vor- aber auch Nachteile im Bezug auf die direkte Problemstellung dargelegt. Speziell ist der Unterschied herausgestellt wurden, der sich durch die Verwendung einzelner Punktmerkmale und dem gegenüber von zusammenhängenden Bildregionen bzw.
geometrischen Formen ergibt. Zweitere stellen dabei eine höhere Sicherheit bei der Wiederfindung dar, allerdings steigt damit auch teils drastisch der Rechenaufwand. Da die Anwendung
echtzeitnah ablaufen soll, wurden Verfahren wie ein Template Matching zwischen Testbildern
und Mustern u.a. auf Grund ihrer Komplexität verworfen. Das Wiederfinden von Punktmerkmalen gestaltet sich hingegen auf Grund ihres fehlenden Kontextbezuges sehr schwierig. Die Wahl
für die Findung interessanter Merkmale in den Testbildern fiel schlussendlich auf sogenannte
SIFT-Merkmale, da es sich hierbei zwar um Punktmerkmale handelt, diese aber deskriptiv mit
Zuhilfenahme ihrer Umgebung beschrieben werden. SIFT steht dabei für scale invariant feature
transform, so dass gewünschte Invarianzen bzgl. Skalierung und auch Rotierung vom Verfahren
implizit gegeben und bei der Aufgabenstellung der Wiederfindung von Spielkarten sehr hilfreich
sind.
Bei der Verarbeitung eines (Test-)Bildes werden beim SIFT-Verfahren zwei wesentliche Schritte
durchlaufen: Als Erstes die Detektion von Schlüsselpunkten und zum Zweiten die Beschreibung derer mit Hilfe eines sogenannten Deskriptors. Für die Detektion stabiler Merkmale wird
das Eingabebild mit der skalenkontinuierlichen Gaußfunktion auf verschiedenen Auflösungsstufen gefaltet. Das Kriterium für die Stabilität von Merkmalen leitet sich dann aus der Differenz
zweier um einen Faktor k verschobenen gaußgefilterten Bildfunktionen ab. Zur Auffindung von
Schlüsselpunktkandidaten werden nun Maxima und Minima in diesen Differenzen gesucht, wo45
46
KAPITEL 6. ZUSAMMENFASSUNG UND AUSBLICK
bei jeder Pixel mit seiner Achternachbarschaft sowie den jeweils neun Pixeln der darüber und
darunter liegenden Auflösungsstufe verglichen wird. Kandidaten mit niedrigem Kontrast werden wieder verworfen. Die Beschreibung jedes einzelnen Schlüsselpunktes erfolgt anschließend
mit Hilfe der Bildgradienten und deren Orientierungen in der Umgebung des gefundenen Punktmerkmales. Zum Erreichen der Rotationsinvarianz für das Verfahren wird jedem Schlüsselpunkt
zusätzlich eine Hauptorientierung zugewiesen auf Basis derer die Deskriptordarstellung relativ
zur eben dieser vorgenommen wird.
Für die weitere Steigerung der Robustheit der SIFT-Merkmale zur Objekterkennung empfielt
sich das Clustern und damit Zusammenfassen der einzelnen Punktmerkmale. Dies geschieht mit
der Einordnung jedes Merkmals in eine mehrdimensionale Hashfunktion, die in dieser Reihenfolge nach der Orientierung, der Skalierung und den beiden Dimensionen, also in x- als auch
y-Richtung, durchlaufen wird. Dabei ergibt sich im Idealfall für jedes Testbild genau ein Cluster
von Schlüsselpunkten, mit Hilfe derer die Musterpose im Testbild bestimmt werden kann. Entstehen mehrere Cluster, wie in den meisten Testfällen zu beobachten war, so schließt sich eine
Neuordnung der Cluster an, um eine möglichst stabile Mehrheit für eine Pose möglichst eines
Kartenmuster im Testbild zu erhalten. Da auch dieser Vorgang in der Praxis leider nicht immer
erfolgreich war, werden die Klassifikationsergebnisse zum Abschluss sortiert und eine bestimmte
Anzahl, im Fall von zwei zu erkennenden Spielkarten genau zwei, als Endresultate ausgegeben.
Als Sortierkriterien wurden in dieser Arbeit vier verschiedene Möglichkeiten vorgestellt, wobei
die Wahl schlussendlich auf die Verwendung der relativen Anzahl an Clusterelementen bzgl. der
gesamten Punktmerkmale des zugehörigen Kartenmusters fiel.
Im Experimentalteil wurden einige Versuchsanordnungen und ihre Ergebnisse präsentiert. Gewünschte Erkennungsraten und damit die Robustheit des Gesamtverfahrens konnten leider nicht
erreicht werden, so dass mit der in dieser Arbeit beschriebenen Vorgehensweise nicht mehr als
70 Prozent Erkennungsrate möglich sind. Erwähnenswert ist dabei die eindeutige Erkennung
aller drei Bildkarten je Kartentyp, da bei diesen für die Berechnung zum einen eine ausreichende
Menge an Schlüsselpunkten zur Verfügung stehen und zum anderen die Wohlunterscheidbarkeit
gegenüber anderen Karten bzw. im Allgemeinen anderen Objekten gegeben ist. Bei der Erkennung von Zahlkarten liegt eine Verwechslung zumeist mit anderen Kartennummern des gleichen
Spielkartentyps vor, was an den vielen übereinstimmenden Merkmalen liegt, die im Hashvorgang den Ergebnissen zufolge stärker ins Gewicht fallen, allein auf Grund der Anzahl gegenüber
der differierenden Schlüsselpunkten. Ein störender Einfluss variabler Bildhintergründe konnte
in den zahlreichen Tests kaum festgestellt werden, hingegen eine Aufbaubeleuchtung mit Glanzlichtern einen gravierenden Rückgang der Erkennungsrate mit sich bringt. Ein weiterer sehr
47
negativer Einfluss ist durch den Störfaktor Rauschen gegeben, der explizit in dieser Arbeit untersucht wurde. Bereits bei einem Anteil von etwa 20 bis 30 Prozent lassen sich starke Einflüsse
auf das Gesamtergebnis nachweisen. Obwohl die Berechnungen in dieser Arbeit auf Grund
des Komplexitätsfaktors auf Grauwertbildern durchgeführt wurden, lässt sich kein Nachteil daraus erkennen. Die bessere Unterscheidung der Kartentypen mit roter Farbe gegenüber der mit
schwarzer für den Menschen ist für die Berechnung mit SIFT-Merkmalen nicht gegeben.
In weiterführenden Arbeiten sollte untersucht werden, ob Verfahren der Objekterkennung mit anderen Sortierverfahren zum Abschluss und/oder mit weiteren zwischengeschalteten Berechnungen Verbesserungen in der Erkennungsrate liefern. Auch die zeitliche Länge für die Berechnung
der Matches der Schlüsselpunkte von den hier vorliegenden 52 Kartenmustern mit den den Testbildern ist unter Umständen zu beschleunigen. Für die Anwendung in der Praxis, zum Beispiel
bei Pokerturnieren, ist das in dieser Arbeit vorgestellte Verfahren noch nicht ausreichend, da die
Fehlerraten und dabei insbesondere die relativ hohe falsche Rückweisung von Kartenmustern
nicht befriedigend sind.
48
KAPITEL 6. ZUSAMMENFASSUNG UND AUSBLICK
Literaturverzeichnis
[BL02] M. Brown, D. Lowe: Invariant features from interest point groups, 2002.
[Can86] J. Canny: A computational approach to edge detection, IEEE Trans. Pattern Anal.
Mach. Intell., Bd. 8, Nr. 6, 1986, S. 679–698.
[Dud06] Dudenredaktion: Duden - Die deutsche Rechtschreibung, Dudenverlag, 2006.
[HP89] A. Hurlbert, T. Poggio: A network for image segmentation using color Morgan Kaufmann Publishers Inc., 1989, S. 297–304.
[Jun06] F. Jung: Objekterkennung mit SIFT-Features, September 2006.
[KS04] Y. Ke, R. Sukthankar: PCA-SIFT: A more distinctive representation for local image
descriptors, 2004.
[Low03] D. Lowe: Distinctive image features from scale-invariant keypoints, in International
Journal of Computer Vision, Bd. 20, 2003, S. 91–110.
[Tro07] Trolltech: Qt 4.3: Qt Reference Documentation (Open Source Edition), Trolltech,
http://doc.trolltech.com/4.3/index.html, 2007.
49
50
LITERATURVERZEICHNIS
Verzeichnis der Bilder
2.1
Links: Testbild mit Glanzlicht und variablem Hintergrund, erzeugt durch Verwendung des eingebauten Blitzes an der Sony DSC-W1 und mit einer Kontrastspreizung vorverarbeitet. Rechts: Kantenbild eines Testbildes, bei dem beide
Spielkarten exakt aneinander liegen und somit ausschließlich eine Karte detektiert wird (grüner Rahmen). . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
a: Testbild. b: Muster. c: Visualisierung der Korrelation zwischen den Bildern a
und b aus Abbildung 2.2. d: Visualisierung der Korrelation zwischen dem Bild a
mit homogenem schwarzen Hintergrund außerhalb der Karten und dem Muster
in Abbildung 2.2.b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.3
Berechnung der Differences of Gaussian. Entnommen aus [Low03]. . . . . . . .
8
2.4
Gradientenhistogramm und 2x2-Deskriptor eines Schlüsselpunktes. Entnommen
aus [Low03]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.1
Aufbau zum effizienten Aufnehmen von Testbildern . . . . . . . . . . . . . . . . 14
3.2
Übersicht der einzelnen Schritte zum Clustern einzelner Schlüsselpunktpaare . . 16
4.1
Qt-Anwendung nach dem Start . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.2
Visuelle Darstellung des Clustervorgangs. In Teilen nach [Jun06]. . . . . . . . . 24
4.3
Qt-Anwendung mit Testbild und Endresultaten im rechten widget . . . . . . . . 29
5.1
Testbild mit Restriktionen und einer Größe von 774 x 518 Pixeln . . . . . . . . . 32
5.2
Testbild ohne Restriktionen und einer Größe von 774 x 518 Pixeln . . . . . . . . 35
5.3
Testbild der Sony-Videokamera mit einer Größe von 640 x 480 Pixeln . . . . . . 36
5.4
Rauschabhängigkeit der Spielkartenerkennung mit Berücksichtigung aller 13 Kartenmuster pro Kartentyp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.5
Rauschabhängigkeit der Spielkartenerkennung unter ausschließlicher Berücksichtigung der 10 Zahlkarten pro Kartentyp . . . . . . . . . . . . . . . . . . . . 40
2.2
51
52
VERZEICHNIS DER BILDER
5.6
Testbild im Sättigungskanal mit einer Größe von 774 x 518 Pixeln . . . . . . . . 43
Verzeichnis der Tabellen
4.1
Codierung der Kartenmuster . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5.1
5.2
Testergebnisse einer Versuchsreihe mit 52 Testbildern und Restriktionen . . . .
Testergebnisse einer Versuchsreihe mit 52 Testbildern und Restriktionen, aber
im Gegensatz zur ersten Testreihe ausschließlich einer Karte pro Testbild . . . .
Testergebnisse einer Versuchsreihe mit 52 Testbildern und keinen Restriktionen
Testergebnisse einer Versuchsreihe mit 52 Testbildern und keinen Restriktionen;
Kamera: Sony DFW-VL500 . . . . . . . . . . . . . . . . . . . . . . . . . . .
Testergebnisse der zweiten Versuchsreihe mit 52 Testbildern und jeweils genau
einer Spielkarte pro Testbild, hier allerdings im Sättigungskanal . . . . . . . .
5.3
5.4
5.5
53
. 33
. 34
. 34
. 37
. 42