Ich habe ein verfolgtes Roboterspielzeug und steuere es mit einem iPhone. Der Roboter gibt einen Live-Kamera-Feed mit bekannter Bildgröße aus und ich zeige ihn auf UIImage an.
Ich habe dem Roboter einen Laserpointer hinzugefügt und ihn entlang der Achse des Roboters befestigt. Ich versuche, den Laserpointerpunkt auf dem Bild zu erkennen und damit die Nähe des Objekts zu berechnen. Wenn der Laserpunkt weit von der Mitte entfernt ist, weiß ich, dass der Roboter an der Wand klebt und gesichert werden muss.
Wie kann ich einen Punkt mit hellweiß-roten Pixeln auf einem Bildschirm erkennen? Eine Lösung wäre, die Farbe von Pixeln innerhalb eines bestimmten Radius des Zentrums abzutasten und eine helle Farbe des Blobs zu erkennen. Kann jemand einen Algorithmus für diese Aktivität vorschlagen?
Ein anderer Ansatz wäre, die durchschnittliche Position des Punktes über die letzten paar Frames zu verfolgen und so den Schätzradius zu verringern. Wenn in einem vordefinierten Bereich kein Punkt vorhanden ist, kann der Suchbereich erweitert werden.
Schließlich möchte ich dem Roboter beibringen können, Teppiche um ihn herum zu erkennen. Teppich reflektiert einen Laserpointer auf eine bestimmte Weise, und ich möchte verstehen, wie viele Rahmen um den Roboter ähnliche Eigenschaften haben. Wenn ich weiß, wo sich der Laserpointer auf einem Bildschirm befindet, kann ich ein kleines Rechteck aus diesem Bild ausschneiden und sie miteinander vergleichen. Gibt es eine effiziente Möglichkeit, mehrere kleine Bilder miteinander zu vergleichen, um zu verstehen, ob ihre Silhouetten übereinstimmen?
Mir ist aufgefallen, dass der Laser von glänzenden Oberflächen reflektiert wird, und die Richtung dieser Reflexion kann mir etwas über die Ausrichtung der Oberfläche im Raum gemäß den Brechungsgesetzen sagen.
Danke!