Automatisiertes Dartspiel

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche

Dieses Projekt wurde im Rahmen des Interaktionspraktikums im WS 18/19 bearbeitet

Idee

Die Idee hinter dem Projekt war es eine Software zu entwicklen, welche, mit hilfe einer Kamera, Liveaufnahmen einer Dartscheibe verarbeitet und die geworfenen Punkte automatisch anzeigt und zusammenrechnet.

Umsetzung

Hardware:

- beliebiger Computer

- beliebige Webcam (am besten mit Stativ)

Software:

- openFrameworks mit OfxCV Addon

- Visual Studio

Stand des Projekts

Homographie:

Um die Auswertung der geworfenen Punkte zu erleichtern, wäre es am besten die Dartscheibe frontal zu filmen.
Dies ist aber aus zwei Gründen nicht möglich, erstens würde die Kamera dann beim spielen im Weg stehen und die Spieler wären beim werfen im Bild, zweitens passiert es dann oft, dass sich die Spitze der Dartpfeile nicht erkennen lässt, weil die Federn der Pfeile oder andere Darts sie verdecken.
Daher muss von der Seite gefilmt werden. Dies führt aber zu einem verzerrtem Bild:

Verzerrt Darts.jpg

Auf dem verzerrten Bild würde sich die Einteilung der einzelnen Punktefelder, in der Software, schwierig gestalten.
Deshalb verwenden wir die in OfxCV vorhandene Methode findHomography um das Bild zu entzerren.

Homographie darts.PNG

Wie oben zu erkennen werden die gesetzten Punkte im rechten Bild dazu verwendet, dass Bild zu transformieren und auf die Punkte links anzupassen.
Dadurch entsteht ein Bild, welches perfekt Frontal erscheint:

Ergebnis Darts.PNG


Hintergrundsubtraktion:

Da auf der Dartscheibe relativ viele Farben und Linien vorhanden sind, welche die Erkennung der Pfeilspitzen stören könnten, empfielt es sich eine Hintergrundsubtraktion durchzuführen.
Hier ein unbearbeitetes Orginalbild:

Darts schief.jpg

Wie sich gut erkennen lässt, ist vorallem auf den schwarzen Feldern die Dartspitze schwer zu erkennen.
Um dies zu beheben, führen wir eine Hintergrundsubtraktion mit der OfxCV-Methode AbsDiff durch.
Dieser Methode werden zwei Bilder übergeben, als Ergebnis erhält man dann ein neues Bild, welches nur die Veränderung der beiden Aufnahmen hervorhebt und den Rest ausblendet.
So sieht ein fertig bearbeitetes Bild aus:

Hintergrundsubtraktion darts.PNG


Probleme

Leider sind wir im Rahmen des Praktikums nicht mit dem Projekt fertig geworden, da wir mit einigen Problemen zukämpfen hatten.

Das Problem, welches sich am leichtesten hätte lösen lassen können, aber dennoch am meisten Zeit verschwendet hat, war die Tatsache, dass unsere Orginalbilder zu groß für die Homographie waren.
Dadurch gab es bei der durchführung der Homographie immer noch mehr verzerrte Bilder als Ergebnis:

Wrong darts.PNG

Dieses Problem ließ sich relativ leicht dadurch beheben, dass das verwendete Bild auf die in der Software verwendeten 640x480 Pixel runter skaliert wurde.
Allerdings hat uns das Erkennen dieses Fehlers viel Zeit gekostet.

Ein weiteres Problem ist, wie sich im Beispielbild für die Hintergrundsubtraktion erkennen lässt, dass die Kamera wackelt, dadurch sind auch nach der durchgeführten Hintergrundsubtraktion noch Kanten zu erkennen.
Dies ließe sich aber durch ein Stativ leicht beheben.


Nächste Schritte

Um das Projekt fertigzustellen müssten noch einige Schritte vollzogen werden:

- virtuelle Einteilung der Dartscheibe in die verschiedenen Punktefelder

- automatisches Erkennen der Pfeilspitze

- erkennen der Position der Spitze im Bezug zu den Punktefeldern

- Ausgabe der geworfenen Punkte

Beteiligte Personen

Joshua Molitor, Alexander Lurz

Anhang

Den Quellcode gibt es hier.