Точное измерение относительного расстояния между набором опорных точек (приложение дополненной реальности) - PullRequest
6 голосов
/ 05 декабря 2011

Допустим, у меня есть набор из 5 маркеров.Я пытаюсь найти относительные расстояния между каждым маркером, используя структуру дополненной реальности, такую ​​как ARToolkit .В моем фиде камер первые 20 кадров показывают мне только первые 2 маркера, поэтому я могу выполнить преобразование между двумя маркерами.Вторые 20 кадров показывают мне только 2-й и 3-й маркеры и так далее.Последние 20 кадров показывают мне 5-й и 1-й маркеры.Я хочу построить 3D-карту положения маркеров всех 5 маркеров.

Мой вопрос заключается в том, что, зная, что с расстояниями будут возникать неточности из-за низкого качества видеопотока, как я могу минимизировать неточности, учитывая всю собранную информацию?

Мой наивный подход состоял бы в том, чтобы использовать первый маркер в качестве базовой точки, из первых 20 кадров взять среднее значение преобразований и поместить 2-й маркер и так далее для 3-го и 4-го.Для 5-го маркера поместите его между 4-м и 1-м, поместив его в середину среднего значения преобразований между 5-м и 1-м и 4-м и 5-м.Я чувствую, что этот подход смещен в сторону размещения первого маркера и не учитывает, что камера видит более 2 маркеров на кадр.

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

Любая помощь относительно правильного подхода к этой проблеме будет принята с благодарностью.

Редактировать: дополнительная информация о проблеме:

Допустим, карта реального мира выглядит следующим образом:

enter image description here

Допустим, я получил 100 показаний закаждое из преобразований между точками представлено стрелками на изображении.Реальные значения записаны над стрелками.

Полученные мной значения имеют некоторую ошибку (предполагается, что они следуют гауссовому распределению относительно действительного значения).Например, одно из показаний, полученных для маркера 1-2, может быть х: 9,8, у: 0,09.Учитывая, что у меня есть все эти показания, как я могу оценить карту.В идеале результат должен быть как можно ближе к реальным значениям.

У моего наивного подхода есть следующая проблема.Если среднее значение для преобразований от 1 до 2 слегка отклонено, размещение 3 может быть отключено, даже если показания от 2 до 3 очень точные.Эта проблема показана ниже:

enter image description here

Зеленые - это действительные значения, черные - это расчетные значения.Среднее преобразование от 1 до 2: x: 10 y: 2.

1 Ответ

0 голосов
/ 06 декабря 2011

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

Предполагая, что ваши позиции маркеров фиксированы (например, к неподвижному твердому телу), и вы хотите их относительное положениеЗатем вы можете просто записать их позиции и усреднить их.Если есть вероятность спутать один маркер с другим, вы можете отслеживать их от кадра к кадру и использовать непрерывность каждого местоположения маркера между двумя периодами для подтверждения его идентичности.

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

В общем, если ваше тело движется, для лучшей работы потребуется некотороесвоего рода модель для ее динамики, которая должна использоваться, чтобы отслеживать ее позу во времени.При наличии динамической модели вы можете использовать фильтр Калмана для отслеживания;Фильтры Калмана хорошо адаптированы для интеграции описываемых вами типов данных.

Включая расположение ваших маркеров в качестве части вектора состояния Калмана, вы сможете иметь возможность определять их относительные местоположения из чистоданные датчика (который, кажется, ваша цель), а не запрашивать эту информацию априори.Если вы хотите иметь возможность эффективно обрабатывать произвольное количество маркеров, вам, возможно, придется придумать какую-нибудь хитрую мутацию обычных методов;Кажется, ваша проблема разработана таким образом, чтобы избежать решения с помощью традиционных методов декомпозиции, таких как последовательная фильтрация Калмана.


Редактируйте, как в комментариях ниже:

Если ваши маркеры дают полную 3D-позутолько из трехмерного положения), дополнительные данные помогут вам сохранить точную информацию об отслеживаемом объекте.Однако приведенные выше рекомендации по-прежнему применимы:

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

Новые мысли, которые приходят на ум:

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