089-1233183
Roman Müller, Ismaning b. München

ChessCamera


chess cam

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.
chess cam

ChessCamera - Chess-playing Computer with image recognition


A webcam is mounted above a chess board, it recognizes black and white pieces and replies to moves via text-to-speech. Image recognition and chess engine are based on free software.


Play chess against your computer, using a common chess board - and a webcam connected to your PC.

As soon as you made your move the camera takes a picture, the PC analyses it and forwards the situation to a chess engine (via "Universal Chess Interface", UCI). The engine calculates the countermove and reports it back via a text-to-speech module. Now you can move the computer's piece and think about your next move.

The ChessCamera software was written in C++ language, it can recognize the Rochade as well as "en passant" moves and pawn promotion. It also sends all the moves to a logfile (in PGN format).

The image recognition is based on the free software package "OpenCV". According to the ChessCamera developer Roman Müller, any UCI chess engine can be used. Roman was using the free "Fruit" engine for his tests.

There is also a "2-player-mode" available, where all the moves of 2 (human) players are being recorded into a PGN file.






ChessCamera 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

Die Software übergibt per UCI-Syntax alle bisherigen Züge an eine Schachengine, diese ermittelt den Zug des Computers und gibt ihn zurück ans Hauptprogramm.

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.




back
(c) 2011  romanmueller.de -  Kontakt / Impressum