
Projekt ChessCamera
Schachcomputer mit Bilderkennung
"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

Youtube Video: ChessCamera
Die Details

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

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

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.
Die Software kalibriert anhand der Felder a1 bis h2 und a7 bis h8 die durchschnittlichen Helligkeitswerte der schwarzen und weißen Figuren.

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

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

Schritt 5 - Zug an Schachengine übergeben

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