iPhone iOS UIImage Wie erkennt man einen Laser-Punkt auf einem Kamera-Feed?

  • Ich habe ein Roboter-Spielzeug gefunden und kontrolliere es mit einem iPhone. Der Roboter gibt einen Live-Kamera-Feed mit einer bekannten Bildgröße aus, und ich zeige ihn auf UIImage.

    Ich habe dem Roboter einen Laserzeiger hinzugefügt und ihn entlang der Roboterachse fixiert. Ich versuche, den Laserzeigerpunkt 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 zurückfahren muss.

    Wie kann ich einen Punkt hellroter weißer Pixel auf einem Bildschirm erkennen? Eine Lösung wäre das Abtasten der Farbe von Pixeln in a bestimmten Radius des Zentrums und erkennen eine helle Farbe des Blobs. Kann jemand einen Algorithmus für diese Aktivität vorschlagen?

    Ein anderer Ansatz wäre, die durchschnittliche Position des Punkts über die letzten Frames zu verfolgen, wodurch der geschätzte Radius reduziert wird. Wenn sich in einem vordefinierten Bereich kein Punkt befindet, kann der Suchbereich erweitert werden.

    Zum Schluss möchte ich dem Roboter beibringen können, Teppich um ihn herum zu erkennen. Teppich reflektiert einen Laserzeiger auf eine bestimmte Art und Weise, und ich möchte wissen, wie viele Bilder um den Roboter herum ähnliche Eigenschaften haben. Wenn ich weiß, wo sich der Laserzeiger 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 festzustellen, ob ihre Silhouetten übereinstimmen?

    Ich habe bemerkt, 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 .

    Vielen Dank!

    iPhone iOS UIImage Wie erkennt man einen Laser-Punkt auf einem Kamera-Feed?

    iPhone iOS UIImage Wie erkennt man einen Laser-Punkt auf einem Kamera-Feed?

    18 June 2012
    Alex Stone
2 answers
  • OpenCV ist für iOS kompilierbar. Obwohl dies nicht der effizienteste ist, haben Sie die Möglichkeit, den Algorithmus zu portieren. Ich habe mit dem ConDensation-Algorithmus ein ähnliches Marker-Tracking-Problem gemacht. Suchen Sie mit OpenCV nach Marker-Tracking. Es ist ein sehr großer Forschungsbereich und der genaue Algorithmus hängt von Ihrer Anwendung ab. Wenn ich mich recht erinnere, gibt es ungefähr 3000 Bildverarbeitungsmethoden - eine gute auszuwählen ist eine Kunst!

    Eine Lösung wäre das Abtasten der Farbe von Pixeln innerhalb eines bestimmten Radius des Zentrums und erkennen eine helle Farbe des Blobs. Kann jemand einen Algorithmus für diese Aktivität vorschlagen?

    Übrigens ist dies die Grundidee hinter dem sogenannten Partikelfilter (von welche Kondensation ist eine Methode). Gut gemacht, Sie haben die Grundidee selbst herausgefunden!

    Ein anderer Ansatz wäre, die durchschnittliche Position des Punktes über dem Punkt zu verfolgen letzte Frames, wodurch der geschätzte Radius reduziert wird. Wenn kein Punkt in einem vordefinierten Bereich vorhanden ist, kann der Suchbereich erweitert werden.

    Dies wird als Zustandsdauer und bezeichnet kann auf verschiedene Arten modelliert werden. Der Kondensationsalgorithmus verwendet einen stochastischen Ansatz, der einem normalen alten Kalman-Filter nicht unähnlich ist.

    Gibt es eine effiziente Möglichkeit, mehrere kleine Bilder mit einem zu vergleichen, um festzustellen, ob ihre Silhouetten übereinstimmen?

    < / blockquote>

    Dieser ist etwas schwieriger. Sie könnten zwar einen Vorlagenabgleich versuchen, aber ich weiß nicht, wie gut es unter iOS funktionieren wird (sehr umfangreiche Berechnungen und iOS-Kameras sind dafür nicht geeignet).

    18 June 2012
    Paul de Lange
  • Wie wäre es mit diesem Code?

    https://www.youtube.com/watch?v=MKUWnz_obqQ

    https://github.com/niitsuma/detect_laser_pointer

    In diesem Code werden HSV-Farben mit dem T-Quadrattest von hotelling

    25 May 2014
    Hirotaka NIITSUMA