Поиск корреспонденции для распознавания маркеров

Моя общая цель — сделать оценку позы на основе маркера.
Для этого мне нужно соответствие между координатами изображения и координатами объекта.

Поэтому после обнаружения круговых маркеров мне нужно определить, что верхний левый маркер — это A, первый справа — B, затем C и D. Как в примере на рисунке ниже.

введите описание изображения здесь

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

Example:
realMarkerWidth = 2,7
realWorldSizeOfOnePixel = MarkerWidth / RealMarkerWidth
distance = euclidiantDistance(P1,P2) * realWorldSizeOfOnePixel

Мой текущий подход:

С этой информацией алгоритм поиска соответствия идет следующим образом.

Обозначения:

Начальные измеренные расстояния сохраняются в наборе P = (dist (m1, m2), …, dist (mi, mi + 1)}

Обнаруженные маркеры будут в наборе D = {d1, d2 …, dn}

  1. Изначально измерьте расстояние между всеми отмеченными маркерами. P =
    {dist (A, B), dist (A, C), dist (A, D), dist (B, C), …, dist (D, C)
    Примечание: это делается только один раз и до времени выполнения программы оценки позы.

  2. Если | D | > = 3 тогда

    dref = d1;

    dj = d2;

    в то время как < | D |)

    измерить dist (dRef, dj) и сопоставить его со всеми записями в P.
    Предположим, что текущий dist является тем, который имеет наибольшее сходство с одной записью в P. Увеличьте вхождение предполагаемых маркеров на один

3.dref = Маркер с самым высоким значением вхождения

4. Сделайте это для всех обнаружений в D


Пример:

dref = A, а другие обнаруженные маркеры — B и C.
Тогда программа будет считать 2 раза A один раз B и один раз C.
Наличие A выше, чем все остальные, поэтому dref должно быть A,


Проблема:

Этот подход работает только в 2D-пространстве. Пока все маркеры находятся в одной плоскости, расстояния корректируются. Но если некоторые маркеры не находятся в одной плоскости, расстояния неправильные, и поэтому расстояния больше не могут сравниваться. Смотрите изображение ниже для примера.

введите описание изображения здесь


Вопрос

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

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

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]