Восстановление трехмерных локаций соответствующих точек - PullRequest
2 голосов
/ 01 марта 2011

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

  • Сделать запись с камеры (информация в оттенках серого, размер VGA: 640 x 480)
  • Извлечь характерные точки в кадрах камеры (для этого я использую SIFT)
  • Соответствующие элементы из кадра [k-1] с элементами из кадра [k] (для этого я собираюсь использовать RANSAC, подробнее об этом позже ...)
  • Рассчитать / оценить некоторыеинформация об относительном расстоянии между этими характерными точками (это будет в некоторой (x, y, z) системе координат)

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

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

Второй недостаток заключается в том, что, если у меня есть информация о переписке, как получитькакая-то информация о расстоянии между всеми этими точками.Я читал, что для решения этой проблемы можно использовать перспективную проекцию, и, в свою очередь, следует попытаться оценить Фундаментальную Матрицу.Затем сделайте математическую магию, чтобы получить облако точек.Дело в том, что я не понимаю, что означают фактические значения в фундаментальной матрице.Я знаю, что это дает математическую связь между положением 2 камер (или, в моем случае, 2 кадра в видео, где камера движется), и тем, что использует эпиполярную геометрию.Но кроме этого, я просто понятия не имею, что на самом деле влечет за собой фундаментальная матрица.Как эта матрица 3x3 захватывает 6DOF одной камеры относительно другой?Также я думаю, что «математическая магия», о которой я говорил, является своего рода умножением матриц, но я не нашел никакого информационного источника, чтобы объяснить мне, что он делает и какова формулировка.

Поэтому мой вопрос таков:Кто-нибудь из вас может указать мне правильное направление?Я копался в ссылках на статьи, которые читал до сих пор, но они также дают мне строку «мы решаем это с помощью алгоритма RANSAC», и у меня появляется ощущение, что я смотрю неправильнонаправление.Есть ли какое-то хорошее объяснение этих вещей, возможно, с точки зрения непрофессионалов и / или с некоторыми иллюстрациями?Короче говоря: где мне искать или где найти эту неуловимую информацию?

Заранее спасибо, Xilconic

PS: проверил Википедию, но она мне мало помогает.Также слушал «Фундаментальную матричную песню», и это та же история.

Ответы [ 3 ]

4 голосов
/ 02 марта 2011

Написал мой тезис по этому вопросу, также используя алгоритм RANSAC в моей статье.

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

Snag 1

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

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

Snag 2

Самое важное в матрице F состоит в том, что она отображает точку на одном изображении в линию на другом:

Fx = l ', где x - точка на одном изображении, а l ' - линия на другом.

Матрица F имеет 9 элементов, но должна иметь ранг 2 , а также масштаб не имеет значения, поэтому он имеет только 7 степеней свободы. Нет простого объяснения для элементов матрицы F .

Использование соответствия точки x <-> x F трехмерной координаты мира X изображенной точки может быть извлечен, если вы знаете внутренние параметры камеры, такие как фокусное расстояние.

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

2 голосов
/ 02 марта 2011

Посмотрите на первую формулу в записи в википедии на фундаментальной матрице:

enter image description here

Это «модель», которую вы пытаетесь решить, используяRANSAC.У вас есть две 3xn (n>=7) матрицы x и x', которые представляют все ваши соответствующие x,y - x',y' точки на обоих изображениях (третья координата - это просто число1 все время).И неизвестная 3x3 матрица F, для которой вы хотите узнать значения.Алгоритм псевдокода для RANSAC в записи в википедии является довольно хорошим объяснением.

Теперь, что является фундаментальной матрицей?Один из способов представить точку на изображении - это 3D-линия, соединяющая положение камеры и эту точку в 3D-пространстве.Эта линия простирается до бесконечности в обоих направлениях.Если вы посмотрите на трехмерную точку на этой линии с другой камеры, то на изображении с этой камеры вы увидите линию, проходящую прямо через нее.Преобразование (действительно проекция) точки на изображении в трехмерную линию - это просто матричная операция.Проекция линии в 3D на 2D-изображение также является матричной операцией.F объединяет обе эти матричные операции в одну матрицу.F также можно использовать для определения матрицы камеры обеих камер, которую затем можно использовать для 3D-реконструкции.

Может быть, это немного помогает?В остальном я узнал больше всего об этом от Хартли и Циссермана .

1 голос
/ 04 марта 2011

Надежное начало для надежного решения фундаментальной матрицы с использованием алгоритма с 5 или 8 точками. Тем не менее, фундаментальное матричное решение может быть восприимчивым к выбросам, и вы, вероятно, захотите, чтобы какая-то дополнительная всеобъемлющая система выполняла фактическое 3D-решение. Вы можете использовать подход типа фильтра Калмана (быстрый, может быть выполнен в реальном времени на встроенных системах) или настройку связки (очень точная, но может быть медленнее).

Некоторые хорошие SFM-программы, которые вы можете использовать или почерпнуть из:

VSLAM (разработано Конолиге, профессором в Стэнфорде, а также работающим в Willow Garage, ребята из OpenCV). Вероятно, самое быстрое решение по настройке пучка, которое я когда-либо видел.

RSLAM (разработан Oxford Mobile Robotics Group, показывает отличные результаты)

...