Projektkonzept Objekterkennung/Tracking



  • Hallo!

    Ich hätte ein paar grundsätzliche Fragen zur Realisierung eines Projektes und brauche dafür den Rat von Personen, die sich bereits mit Objekterkennung und Tracking beschäftigt haben, damit ich möglichst die einfachste Methode finde.

    Es geht darum sogenannte Sifteo Cubes (www.sifteo.com) zu tracken. Mehrere dieser Cubes liegen auf einem Tisch und sollen anhand einer Darstellung auf dem Monitor korrekt angeordnet werden. Um zu erkennen, ob sie richtig liegen bzw. welches in welcher Form von der Zielposition abweicht, soll die Position und Rotation der Cubes kontinuierlich überprüft werden.

    Der Aufbau ist in dem Fall relativ simpel gehalten. Eine feste Top-Down Kamera schaut auf einen weißen Tisch. Die Cubes haben einen dickeren schwarzen Rand um ihren Bildschirm und sollten daher genügend Kontrast haben, um auch leicht wechselnde Beleuchtungsbedingungen zu verkraften.

    Ich habe bereits geschaut, welche Möglichkeiten sich da bieten. Das sinnvollste ist natürlich die Verwendung einer bestehenden Bibliothek wie OpenCV. Die Frage ist nun aber, wie ich an das Tracking herangehe. Genau hier fehlt mir einfach noch das Wissen darüber, was für Möglichkeiten ich habe bzw. welche man am besten in der beschriebenen Situation verwendet.

    Denkbar wäre eine Segmentierung über die Farbe (schwarz/weiß Bild durch Threshold sollte gute Werte liefern). Man könnte aber auch die Kanten erkennen und über eine Houghtransformation das Objekt rekonstruieren (hier müsste man sich vielleicht überlegen, wie man die passenden Schnittpunkte der Geraden findet -> vielleicht über die Kantenlänge? Die müsste ja relativ gleichbleibend sein bei einer festen Kamera, die senkrecht auf den Tisch schaut)
    Man könnte auch relativ leicht über ein Diff zwischen aktuellem Bild und leerem Tisch erkennen, wo Objekte liegen. Hier ist dann die Frage, wie ich zur Objektrepräsentation komme, um Position und Rotation herauszufinden.
    Vielleicht kommt man durch das feste Setup auch über ein Matching-Verfahren zur Lösung. Grundsätzlich sollten die Cubes eine gleichbleibende Größe im Bild haben und sind zudem recht einfach durch ein Rechteck zu approximieren.

    Welche Methode bietet sich hier am besten an und wie komme ich generell vom Erkennen zur Position und Rotation des Cubes? Eventuell habe ich andere Möglichkeiten auch noch gar nicht betrachtet, da ich sie nicht kenne. Ich habe zudem gehört, dass man beim ARToolkit beliebige Markerpattern übergeben kann. Könnte man da vielleicht einfach eine Maske der schwarzen Umrandung verwenden, um die Cubes zu erkennen (ich vermute die Marker sind auf eckige Elemente beschränkt und die Kanten des Cubes sind abgerundet). Grundsätzlich ist alles erlaubt, es sollten nur keine Marker irgendwo an die Cubes angebracht werden.

    Ich würde mich freuen, wenn ihr Ideen zur Realisierung habt.

    Viele Grüße,
    Sp3iky



  • 90 Klicks und noch niemand der mit OpenCV oder Objekterkennung zu tun hatte? Das ist blöd^^



  • Quadrate, schwarzer Rand, weißer Tisch usw. hört sich nach nem Traum zum Tracken an. 😉
    Ich würds zunächst ganz einfach wie du schon gesagt hast mit Schwellenwert probieren. Mit cv::findContours bekommst du dann ohne viel Aufwand die shapes. Wenn du die in cv::minAreaRect schiebst, hast du direkt das passende rotierte Rechteck, dass dir dann Position und Rotation verrät.
    Wenn du ein Beispielbild postest, schreib ich dir gerne schnell ein paar Codezeilen, an denen du sehen kannst, wie das ganze grob funktioniert.



  • Cool, dass sich doch noch jemand gefunden hat 🙂 Klingt ja so, als hätte OpenCV sogar noch mehr Funktionalität, als ich dachte.

    Danke schonmal für das Angebot ein Codebeispiel zu schreiben. Das Setup ist leider noch nicht aufgebaut, ich hoffe aber, dass es diese Woche noch dazu kommt. Ich würd mich dann wieder melden und ein Bild liefern.

    Viele Grüße,
    Sp3iky



  • Grad hab ich gesehen, dass hier ( http://opencv.itseez.com/doc/tutorials/imgproc/shapedescriptors/bounding_rotated_ellipses/bounding_rotated_ellipses.html#bounding-rotated-ellipses ) eigentlich auch schon alles gezeigt wird, was ich geschrieben hätte. Falls das nicht reicht, steht mein Angebot aber natürlich weiterhin. 😉


Anmelden zum Antworten