Перейти к содержанию
    

Навигация по мигающим маркерам

Задача из области визуальной навигации по маркерам. Есть 3 светодиода, пульсирующие с заданной частотой (150-200 Гц, у каждого своя). Есть хорошая быстрая камера, снимающая их. Задача: найти визуальные маркеры и определить позицию камеры по ним.

В статике засечь маркеры тривиально. Проблемы начинаются при резких движениях камеры, когда выключение СИД попадает на один пиксель, а включение его на соседний, или даже через 2-3. Сейчас оно решается перебором "в лоб" ближайшего окружения последнего известного положения маркера, медленно и не очень надёжно. Частота диодов и кадровая частота весьма стабильны и отвечают задаче, частоту могу замерить за 4 импульса маркера. Как можно элегантно решить задачу?

Уже просчитана "дельта" каждого кадра: т.е. можно бесплатно (в плане вычислений) найти все пиксели изменившиеся по сравнению с предыдущим кадром.

 

Следующим этапом будет определение позиции по трём известным маякам, но пока хочу сделать надёжную засечку маркеров даже если они сдвинулись на пару пикселей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а не надо искать разницу от мигания в том же месте раз оно так быстро меняется,

картинки пропустить через полосовые фильтры по времени для трёх разных частот, натянуть на них какой-нибудь полином/сплайн - получатся траектории движения светодиодов по картинке, в зависимости от времени.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, хорошая мысль.

 

Не до конца понял только с полиномом. Представим для примера что снимаю на 1000 кадров\сек, а диод мигает с частотой 100 Гц. Я беру каждый 10 кадр и ищу яркую точку (для увеличения точности можно искать так же чёрную точку со сдвигом по фазе на 5 кадров). Но ведь для коротких последовательностей шум будет неизбежен, по любому у нас останется 3-4 кандидата на маркер. Я думаю брать евклидов ближайший к последней запомненной позиции маркера. Здесь я вижу несколько возможностей, но крутиться это будет на маломощной железке типа Raspberry Pi и надо думать так же о выч. сложности алгоритма.

 

Если не затруднит, посоветуйте статьи о 3d позиционировании по маркерам, как триангулировать свою позицию и как лучше размещать маркеры.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если смотреть на видео как на трехмерный набор данных яркости с временной третьей осью, то если посчитать преобразование Фурье с движущимся окном на какой-то одной частоте (полосовой фильтр) вдоль этой третьей оси, получится облако точек вокруг траектории светодиода [x,y,t] , на которые наименьшими квадратами можно натянуть какой-нибудь сплайн, который заодно и шумы/размер пятна светодиода отфильрует/усреднит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Задача из области визуальной навигации по маркерам. Есть 3 светодиода, пульсирующие с заданной частотой (150-200 Гц, у каждого своя). Есть хорошая быстрая камера, снимающая их.
Что есть "хорошая быстрая камера"?

Это датчик изображения с кадровым переносом, или всё же строчным? (Global или Rolling shutter)?

 

Задача: найти визуальные маркеры и определить позицию камеры по ним.

В статике засечь маркеры тривиально. Проблемы начинаются при резких движениях камеры, когда выключение СИД попадает на один пиксель, а включение его на соседний, или даже через 2-3. Сейчас оно решается перебором "в лоб" ближайшего окружения последнего известного положения маркера, медленно и не очень надёжно. Частота диодов и кадровая частота весьма стабильны и отвечают задаче, частоту могу замерить за 4 импульса маркера. Как можно элегантно решить задачу?

Элегантно можно решить задачу, только правильно её поставив.

Мне кажется, что Вы не совсем хорошо понимаете, что Вам нужно.

Вот с этого и надо было бы начать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

FreeTrack is a free optical motion tracking application for Microsoft Windows, released under the GNU General Public License. Its main function is inexpensive head tracking in computer games and simulations

...

Head motions are tracked with six degrees of freedom (6DOF), specifically; yaw, pitch, roll, left/right, up/down and forward/back. This is done by means of a video capture device, typically a webcam, which is placed in front of the user and tracks a rigid point model headpiece. This point model usually consists of infrared LEDs but can also be normal LEDs and even retroreflective material illuminated by a source of infrared light.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...