iPhone iOS UIImage, как определить точку «лазерного указателя» на канале камеры?

9

Я получил игрушку с отслеживаемым роботом и управляю ею с помощью iPhone. Робот выводит прямую трансляцию с камеры с известным размером кадра, и я отображаю ее на UIImage.

Я добавил лазерную указку на робота и закрепил ее вдоль оси робота. Я пытаюсь определить точку лазерного указателя на изображении и таким образом пытаюсь вычислить близость объекта. Если лазерная точка находится далеко от центра, я знаю, что робот застрял у стены и должен отступить.

Как я могу обнаружить точку ярких бело-красных пикселей на экране? Одним из решений будет выбор цвета пикселей в пределах определенного радиуса центра и обнаружение яркого цвета капли. Кто-нибудь может предложить алгоритм для этой деятельности?

Другой подход заключается в отслеживании среднего положения точки за последние несколько кадров, что позволяет уменьшить предполагаемый радиус. Если в предварительно определенной области нет точки, область поиска может быть расширена.

Наконец, я хочу научить робота обнаруживать ковер вокруг него. Ковер отражает лазерную указку определенным образом, и я хочу понять, сколько рамок вокруг робота имеют схожие свойства. Если я знаю, где находится лазерная указка на экране, я могу вырезать маленький прямоугольник из этого изображения и сравнить их один с другим. Есть ли эффективный способ сравнения нескольких маленьких изображений друг с другом, чтобы понять, соответствуют ли их силуэты?

Я заметил, что лазер отражается от глянцевой поверхности, и направление этого отражения может мне что-то сказать об ориентации поверхности в пространстве в соответствии с законами преломления.

Спасибо!

Лазерная указка закрыть

Лазерная указка 1

Алекс Стоун
источник
1
Можете ли вы включить и выключить лазерную указку в шаблоне? Как один кадр выключен, следующий включен, и вы вычитаете последующие кадры, чтобы сделать это очень очевидным.
эндолит
Это очень хорошая идея! Но у меня нет контроля над лазерной указкой, она включена или выключена.
Алекс Стоун
@AlexStone Я пытаюсь добиться подобного, единственное отличие - я пытаюсь обнаружить лазерный луч на зрачке глаза. Можете ли вы помочь мне с кодом ios или любым другим примером кода, который вы использовали в opencv для отслеживания лазерного луча? Спасибо за помощь заранее, спасибо AJ.
AmJa

Ответы:

10

OpenCV компилируется для iOS. Хотя он может быть не самым эффективным, он дает вам возможность перенести алгоритм. Я сделал аналогичную проблему отслеживания маркера, используя алгоритм ConDensation. Посмотрите маркер отслеживания с OpenCV. Это ОЧЕНЬ большая область исследований, и точный алгоритм, который вы хотите, полностью зависит от вашего приложения. Если я правильно помню, есть около 3000 методов обработки изображений, о которых сообщалось, - выбрать хороший способ - настоящее искусство!

Одним из решений будет выбор цвета пикселей в пределах определенного радиуса центра и обнаружение яркого цвета капли. Кто-нибудь может предложить алгоритм для этой деятельности?

Кстати, это основная идея так называемого фильтра частиц (одним из методов которого является конденсация). Молодец, ты сам понял основную идею!

Другой подход заключается в отслеживании среднего положения точки за последние несколько кадров, что позволяет уменьшить предполагаемый радиус. Если в предварительно определенной области нет точки, область поиска может быть расширена.

Это называется постоянством состояния и может моделироваться различными способами. Алгоритм конденсации использует стохастический подход, не отличающийся от простого старого фильтра Калмана.

Есть ли эффективный способ сравнения нескольких маленьких изображений друг с другом, чтобы понять, соответствуют ли их силуэты?

Этот немного сложнее. Вы можете попробовать сопоставление с шаблоном, но я не знаю, насколько хорошо он будет работать на iOS (очень тяжелый расчет и камера iOS не очень подходит для него).

Поль де Ланж
источник
Пол, спасибо за невероятно подробный ответ! Я получил OpenCV Framework и буду искать примеры проектов, использующих его.
Алекс Стоун
Привет, Пол, у вас есть идеи по поводу примера приложения для лазерного обнаружения с помощью камеры iOS с использованием openCV?
AmJa