Projekt ChessCamera

Schachcomputer mit Bilderkennung

Eine Webcam über dem Brett erkennt die Stellung der schwarzen und weißen Figuren und antwortet auf Züge mit einem Gegenzug per Sprachausgabe. Für Bilderkennung und Schachengine kommt freie Software zum Einsatz.

"Weiß beginnt, Schwarz gewinnt" - Spielen Sie doch einmal Schach gegen den Computer mit lediglich einem gewöhnlichen Schachbrett - und Ihrem PC.

Sobald Sie Ihren Zug ausgeführt haben, nimmt die über dem Brett angebrachte Kamera ein Foto auf, der PC analysiert dieses und übergibt die neu erkannte Stellung per "Universal Chess Interface" (UCI) Syntax an eine Schachengine. Die errechnet den Gegenzug und übermittelt ihn per Sprache an Sie zurück. Sie führen den Computerzug nun auf dem realen Brett nach und dürfen sofort über Ihren nächsten Zug nachdenken.

Die in C++ geschriebene ChessCamera-Software beherrscht sowohl Rochaden als auch das Schlagen "en passant" sowie die Bauernumwandlung. Daneben protokolliert sie sämtliche Spielzüge in einer PGN Datei ("Portable Game Notation") und informiert Sie, sobald eine der wichtigeren namentlich bekannten Spieleröffnungen erkannt wurde.

Die Bilderkennung basiert dabei auf dem freien Sofwarepaket "OpenCV". Als Schachengine kann laut Roman Müller, Entwickler von ChessCamera, prinzipiell jede UCI-fähige Software dienen. Im Praxistest bedient sich Roman der freien Engine "Fruit".

Im eingebauten 2-Player-Modus wird lediglich die Partie zwischen zwei menschlichen Gegnern mitprotokolliert.





ChessCamera Video


video

Youtube Video: ChessCamera


Die Details


chesscam prep
Vorbereitung
Auf einen ausreichend hellen Arbeitsplatz ist zu achten.
Figuren aufstellen, Webcam im Abstand 70 cm über dem Brett anbringen. Programm starten. Es erscheint ein Testbild, mit dessen Hilfe das Schachbrett vermessen wird. Dazu müssen 2 Ecken (links oben, rechts unten) des Bretts mit der Maus erfasst werden.

chesscam 00
Schritt 1 - Kalibrierung Leerfelder
Die Kamera nimmt das Bild der Grundstellung auf. Die Software kalibriert anhand der Felder a3 bis h6 die Helligkeitswerte der (leeren) schwarzen und weißen Felder. Die Brettgeometrie wird berechnet (Länge und Breite der Felder) und die Felder werden initialisiert mit den Werten der Grundstellung.

chesscam 00
Schritt 2 - Kalibrierung Figuren
Die Software kalibriert anhand der Felder a1 bis h2 und a7 bis h8 die durchschnittlichen Helligkeitswerte der schwarzen und weißen Figuren.

chesscam 03
Schritt 3 - Der (erste) Zug
Die Kamera nimmt das Bild der neuen Stellung auf. Die Software analysiert Feld für Feld jeweils den durchschnittlichen Helligkeitswert sowie die Helligkeitsschwankungen innerhalb des Feldes. So wird bestimmt, ob es sich um ein leeres oder ein besetztes Feld handelt und welche Farbe ggf. die Figur auf dem Feld hat.

chesscam 03a
Schritt 4 - Berechnung des Zuges
Aus der Differenz zwischen alter und neuer Stellung wird der Zug berechnet. Die Bildanalyse erkennt dabei keine(!) Figurtypen (Bauer, Dame, König usw.), sondern nur die Farben der sich auf den besetzten Feldern befindlichen Figuren. Der Figurtyp des Zuges ergibt sich zwingend aus den erkannten Änderungen auf dem Brett. Lediglich bei der Bauernumwandlung ist somit die Eingabe des neuen Figurtyps per Tastenanschlag erforderlich.

chesscam 04
Schritt 5 - Zug an Schachengine übergeben

chesscam 06
Schritt 6 - Sprachausgabe des Maschinenzuges
Per Kommandozeilen-Soundplayer wird z.B. ausgegeben: "Springer g8 schlägt f6". Des Weiteren wird nach jedem neuen (Halb-)Zug geprüft, ob es sich um eine bekannte Eröffnung handelt. Der Wert ("z.B. "Sizilianisch") wird am Bildschirm ausgegeben :)
Den ausgegebenen Zug auf dem Brett nachführen - und nachdenken.
Jetzt den nächsten eigenen Zug auf dem Brett ausführen -> Weiter mit Schritt 3.