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