20.08.2013 Aufrufe

Pokereco Kurzdokumentation

Pokereco Kurzdokumentation

Pokereco Kurzdokumentation

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!