Я получил игрушку с отслеживаемым роботом и управляю ею с помощью iPhone. Робот выводит прямую трансляцию с камеры с известным размером кадра, и я отображаю ее на UIImage.
Я добавил лазерную указку на робота и закрепил ее вдоль оси робота. Я пытаюсь определить точку лазерного указателя на изображении и таким образом пытаюсь вычислить близость объекта. Если лазерная точка находится далеко от центра, я знаю, что робот застрял у стены и должен отступить.
Как я могу обнаружить точку ярких бело-красных пикселей на экране? Одним из решений будет выбор цвета пикселей в пределах определенного радиуса центра и обнаружение яркого цвета капли. Кто-нибудь может предложить алгоритм для этой деятельности?
Другой подход заключается в отслеживании среднего положения точки за последние несколько кадров, что позволяет уменьшить предполагаемый радиус. Если в предварительно определенной области нет точки, область поиска может быть расширена.
Наконец, я хочу научить робота обнаруживать ковер вокруг него. Ковер отражает лазерную указку определенным образом, и я хочу понять, сколько рамок вокруг робота имеют схожие свойства. Если я знаю, где находится лазерная указка на экране, я могу вырезать маленький прямоугольник из этого изображения и сравнить их один с другим. Есть ли эффективный способ сравнения нескольких маленьких изображений друг с другом, чтобы понять, соответствуют ли их силуэты?
Я заметил, что лазер отражается от глянцевой поверхности, и направление этого отражения может мне что-то сказать об ориентации поверхности в пространстве в соответствии с законами преломления.
Спасибо!
источник
Ответы:
OpenCV компилируется для iOS. Хотя он может быть не самым эффективным, он дает вам возможность перенести алгоритм. Я сделал аналогичную проблему отслеживания маркера, используя алгоритм ConDensation. Посмотрите маркер отслеживания с OpenCV. Это ОЧЕНЬ большая область исследований, и точный алгоритм, который вы хотите, полностью зависит от вашего приложения. Если я правильно помню, есть около 3000 методов обработки изображений, о которых сообщалось, - выбрать хороший способ - настоящее искусство!
Кстати, это основная идея так называемого фильтра частиц (одним из методов которого является конденсация). Молодец, ты сам понял основную идею!
Это называется постоянством состояния и может моделироваться различными способами. Алгоритм конденсации использует стохастический подход, не отличающийся от простого старого фильтра Калмана.
Этот немного сложнее. Вы можете попробовать сопоставление с шаблоном, но я не знаю, насколько хорошо он будет работать на iOS (очень тяжелый расчет и камера iOS не очень подходит для него).
источник
Как насчет этого кода
https://www.youtube.com/watch?v=MKUWnz_obqQ
https://github.com/niitsuma/detect_laser_pointer
В этом коде цвет HSV сравнивается с использованием критерия t квадрата Хотеллинга
источник