Pokereco Kurzdokumentation
Pokereco Kurzdokumentation
Pokereco Kurzdokumentation
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Inhalt:<br />
<strong>Pokereco</strong> <strong>Kurzdokumentation</strong><br />
1.Allgemeines<br />
1.1.Projektbeschreibung<br />
1.2.Team<br />
2.Programmablauf<br />
2.1.Kartenerfassung<br />
2.1.1.Settings bearbeiten<br />
2.1.2.Integration in pokereco<br />
2.2.Kartenerkennung<br />
2.3.Benutzeroberfläche<br />
3.Technik<br />
3.1.Software<br />
3.2.Hardware<br />
4.Schluss<br />
1/9<br />
<strong>Pokereco</strong> <strong>Kurzdokumentation</strong>
1. Allgemeines<br />
<strong>Pokereco</strong> <strong>Kurzdokumentation</strong><br />
Die folgenden Punkte geben einen kurzen Überblick über das Projekt.<br />
1.1. Projektbeschreibung<br />
Der Name <strong>Pokereco</strong> setzt sich aus Poker-Recognition zusammen.<br />
(Recognition = englisch für Erkennung)<br />
Das deutet gleich auf die Funktion des Programms hin, nämlich die Erkennung<br />
von Pokerkarten.<br />
1.2. Team<br />
Zum <strong>Pokereco</strong> Projektteam gehören:<br />
Daniel Mattes<br />
(daniel.mattes@stud.fh-regensburg.de)<br />
-Webcamerfassung<br />
-Verarbeitung des Bildes<br />
Volker Kindermann<br />
(volker.kindermann@stud.fh-regensburg.de)<br />
-Erkennung des Bildes<br />
Markus Banse<br />
(markus.banse@stud.fh-regensburg.de)<br />
-Grafische Benutzeroberfläche<br />
-Gestaltung<br />
2/9
2. Programmablauf<br />
<strong>Pokereco</strong> <strong>Kurzdokumentation</strong><br />
Die Umsetzung sieht wie folgt aus:<br />
Eine herkömmliche Webcam erstellt ein Bild der Pokerkarten.<br />
In diesem Bild werden die wichtigen Ausschnitte bearbeitet und<br />
weitergegeben. Dann erkennt das Programm die Symbole des Ausschnittes<br />
und kann somit die Karte eindeutig identifizieren. Schliesslich werden die<br />
übermittelten Karten auf einer grafischen Benutzeroberfläche präsentiert.<br />
2.1. Kartenerfassung<br />
Die Kartenerfassung erfolgt mittels einer Webcam.<br />
Mit Hilfe des selbstgebauten Gerüsts (siehe Foto) und vormarkierten Feldern<br />
für die Pokerkarten, ist eine immer gleiche Position der Karten gewährleistet.<br />
Dies ist später für die automatische Kartenerkennung sehr wichtig!<br />
Zur Realisierung des Zugriffs auf die Kamera wurden folgenden Bibliotheken<br />
verwendet:<br />
● DirectShow.NET<br />
http://www.codeproject.com/cs/media/directshownet.asp<br />
● DirectX.Capture Class Library<br />
http://www.codeproject.com/cs/media/directxcapture.asp<br />
3/9
2.1.1 Settings bearbeiten<br />
<strong>Pokereco</strong> <strong>Kurzdokumentation</strong><br />
Da das Gerüst nach einem Transport nicht wieder 100% auf der gleichen<br />
Position ist, können Verschiebungen des Bildbereichs auftreten. Deshalb gibt es<br />
die Möglichkeit den Bildbereich mit der Anwendung „Settings“ zu justieren und<br />
diese Daten in einer XML-Datei abzuspeichern. Diese Daten werden dann bei<br />
der automatischen Erkennung verwendet.<br />
Vorgehensweise der Justierung:<br />
1. Aktuelles Bild der Webcam mit „Capture“ erstellen<br />
2. Für jede Karten den Bereich auswählen und mit „Area Card #“ der<br />
jeweiligen Karte zuweisen<br />
3. Umwandlung in Schwarz-Weiss<br />
Da nicht immer von gleich bleibenden Lichtverhältnissen ausgegangen<br />
werden kann, kann der Schwellenwert und die Pixelanzahl für den<br />
Dilatationsfilter für jede Karte separat eingestellt werden.<br />
Mit „Bearbeiten“ werden die Bildausschnitte dann umgewandelt und<br />
angezeigt. Somit können die Einstellungen überprüft und angepasst<br />
werden<br />
4. Zuletzt können dann die Einstellungen mit „Save“ abgespeichert werden<br />
4/9
Format der XML-Datei:<br />
<strong>Pokereco</strong> <strong>Kurzdokumentation</strong><br />
In der XML-Datei werden für jede Karte folgende Daten abgespeichert.<br />
<br />
1<br />
84 //Position in x-Richtung<br />
263 //Position in y-Richtung<br />
68<br />
121<br />
170<br />
4<br />
<br />
2.1.2 Integration in pokereco<br />
Beim Start von pokereco wird sofort die Kamera initialisiert. Hierbei führt die<br />
Kamera einen automatischen Weissabgleich durch. Dies kann je nach<br />
Lichtverhältnis bis zu 5 sec Benötigen, bis ein optimales Bild vorhanden ist.<br />
Beim Identifizieren wird ein aktuelles Kamerabild erstellt. Danach wird die<br />
aktuelle XML-Datei geladen und anhand der vorhanden Koordinaten für jede<br />
Karte ein Bild erstellt, in Schwarz-Weiss umgewandelt und abgespeichert.<br />
Diese einzelnen Kartenbilder werden dann von der Kartenerkennung<br />
verwendet.<br />
Abbildung der erstellten Bilder:<br />
5/9
2.2. Kartenerkennung<br />
<strong>Pokereco</strong> <strong>Kurzdokumentation</strong><br />
Um eine eindeutig Erkennung der 52 Karten zu ermöglichen müssen auf jeder<br />
Karte genau 2 Objekte identifiziert werden.<br />
Dazu gehört zum einen die Wertigkeit der Karte. Hier kann es sich um einen<br />
Zahlenwert zwischen 2 und 10 oder einen der Buchstaben J (für Jack), Q (für<br />
Queen), K (für King) oder A (für Ace) handeln. Zum anderen muß die<br />
Kartenfarbe erkannt werden (Diamonds, Hearts, Spades oder Clubs).<br />
Mit Hilfe des Tools „VB General Contour Example“, das von CVB mitgeliefert<br />
wird, wurden die oben beschriebenen Objekte auf den Karten identifiziert, mit<br />
einem Objekt-Name versehen und anschließend in einer Datenbank-Datei<br />
abgespeichert.<br />
6/9
<strong>Pokereco</strong> <strong>Kurzdokumentation</strong><br />
Zum Erkennen der Objekte auf den Kartenausschnitten kommt die Contour<br />
Bibliothek der CVB Software zum Einsatz. Contour ermöglicht den Vergleich<br />
von bekannten Objekten, die im Vorfeld festgelegt werden mit Objekten die in<br />
Echtzeit aus Bilddaten extrahiert werden.<br />
Die Kartenerkennung läuft nun folgendermaßen ab:<br />
Contour lädt die Datenbank-Datei und kennt damit alle für die<br />
Kartenerkennung erforderlichen Objekte.<br />
Um möglichst wenig Objekte fälschlicherweise zu erkennen, werden Filter<br />
gesetzt, die die Objekt-Eigenschaften genauer beschreiben. Dabei werden<br />
einschränkende Werte für Fläche, Länge und Ähnlichkeit des erkannten Objekts<br />
zum Objekt in der Datenbank gesetzt und der Filter angewandt.<br />
Dadurch, dass bei den unterschiedlichen Karten nicht nur die Symbole und<br />
Farben, sondern auch gewisse Störfaktoren (bei Bildkarten z.B. der Rand)<br />
variieren, musste für die Konfiguration des Filters nun ein passender Wert<br />
gefunden werden, der für alle Karten passt.<br />
Durch einige Testläufe konnten schliesslich folgende Werte ermittelt werden:<br />
-maxArea: 5000<br />
-minArea: 350<br />
-maxLength: 290<br />
-minLength: 0<br />
Tritt der Fall ein, dass trotz dem Einsatz von Filtern mehr als 2 Objekte auf<br />
einer Karte erkannt werden, so wird das erkannte Objekt mit der größeren<br />
Ähnlichkeit zum Datenbank-Objekt als das Richtige angesehen.<br />
Die erkannten Karten werden dann als String in der Form Wertigkeit+Farbe an<br />
die Benutzeroberfläche weitergegeben.<br />
7/9
2.3. Benutzeroberfläche<br />
<strong>Pokereco</strong> <strong>Kurzdokumentation</strong><br />
Die Poker-Spielvariante die bei <strong>Pokereco</strong> simuliert wird heisst<br />
„Texas Hold 'Em“.<br />
Dabei bekommt jeder Spieler 2 Karten, die sog. Pocketcards, auf die Hand.<br />
In der Mitte werden dann nach und nach 5 Karten, die sog. Boardcards,<br />
aufgedeckt. Genau gesagt, zuerst 3 Karten(der Flop), dann eine Karte(der<br />
Turn) und zum Schluss nochmals eine Karte(der River).<br />
Diese Karten zählen für jeden Spieler. Also kann jeder Spieler aus 2 Karten<br />
und den 5 Karten in der Mitte das beste Blatt benutzen. Ein Blatt besteht aus 5<br />
Karten. Der Spieler mit dem besten Blatt gewinnt schliesslich die Runde.<br />
Die kleinen Pokergrafiken die auf der grafischen Benutzeroberfläche abgebildet<br />
sind, werden mit Hilfe des übergebenen Strings von der Kartenerkennung<br />
erzeugt. Beim <strong>Pokereco</strong>-Programm gibt es zusätzlich die Möglichkeit die<br />
Gewinnwahrscheinlichkeiten der einzelnen Spieler zu bestimmen!<br />
8/9
<strong>Pokereco</strong> <strong>Kurzdokumentation</strong><br />
Sie werden in kleiner Schrift unter den Pocketcards dargestellt und können<br />
dynamisch zu jederzeit berechnet und dargestellt werden.<br />
3. Technik<br />
Es wurde folgende Technik eingesetzt.<br />
3.1. Software<br />
Im Bereich der Kartenbearbeitung und -erkennung wurde das Tool „VB General<br />
Contour Example“ von der Toolbox „Common Vision Blox“ benutzt.<br />
3.2. Hardware<br />
Um das Projekt zu verwirklichen reichte ein Standardcomputer mit<br />
Windowskonfiguration und MS Visual Studio .NET.<br />
Hinzu kam der Einsatz einer Webcam der Marke Microsoft Lifecam VX-6000.<br />
4. Schluss<br />
Zum Schluss möchten wir uns noch bei Herrn Prof. Dr. Herbert Kopp für die<br />
gute und schnelle Unterstützung bedanken!<br />
9/9