Структура из движения, реконструируйте трехмерное облако точек с учетом соответствия точек 2D-изображения
Использование регистра
- Объект вращается вокруг своего центра с различной скоростью
- Фиксированная камера смотрит на объект
- Учитывая соответствие точек 2D-изображения, реконструируйте 3D-облако точек.
- Когда объект вращается, другая его часть видна на камеру, и, таким образом, обнаруживаются разные точки и соответствия.
Сцена
а. N изображений
б. N-1 пары изображений
с. N-1 2D точечная корреспонденция (два 2D точечных массива)
Реализация
Для каждого из (N-1) 2D баллов соответствий
- Вычислить относительную позу камеры
- Триангуляция для получения 3D очков
- Для каждых 2-х массивов 3D-точек извлеките соответствие, используя 2D-соответствие, указанное в [c]
- Используя полученную 3D-корреспонденцию @ [3], получаем дорожку каждой из трехмерных точек объекта, получая по одной дорожке для каждой из точек / вершин объекта.
Результат:
A (N – 2) 3D точечные массивы, соответствия, позы камеры и дорожки (одна дорожка для каждой точки объекта)
Рассмотрен подход для решения проблемы:
Учитывая, что результат триангуляции является точным до масштаба, вычислите облако точек.
A. Каждый из результатов триангуляции и относительного перевода камеры
выражается в неоднородных координатах (каждый результат имеет свой масштаб).
B. При условии, что структура объекта является твердой и, следовательно, не изменяется,
расстояние каждой из трехмерных точек до ее центра должно быть одинаковым для всех поз камеры.
C. Имея в виду [B], все триангулированные трехмерные точки на [A] и на камерах
может быть преобразован в однородную систему координат.
D. Выберите одну из поз камеры и трансформируйте первую точку в каждой дорожке (определяется @ [4])
к этой позе камеры (преобразование путем инверсии накопленной камеры
Позы), в результате, ожидаемая точка могла.
Является ли приведенный выше правильный подход для создания облака точек из 2D соответствия точек?
1 ответ
Это правильная процедура для реконструкции объекта. Я работал над этой темой в прошлом году на проекте в нашем университете. Опыт, который я приобрел, заключается в том, что реконструировать объект с помощью движущейся руки камеры нелегко.
согласование
Прежде всего вы должны подумать о сопоставлении точек с интерсетами. SURF и SIFT - хорошие методы сопоставления для этих точек. Когда объект движется менее чем на 15°, вы можете подумать об использовании USURF, который немного быстрее, чем обычный SURF (более подробную информацию смотрите в статье SURF). В нашем проекте мы решили использовать Optical Flow в OpenCV, он выглядит немного медленнее, но был более устойчивым к выбросам. Ваш объект только вращается, поэтому вы можете подумать и об этом.
Оценка Матрицы
Далее идет оценка ваших результатов новой матрицы камеры. У вас есть возможность узнать, на сколько объект был повернут (например, шаговый двигатель или что-то в этом роде)? Таким образом, вы можете сравнить свои вычисленные результаты с шагами двигателя. Если оно выше порога, вы знаете, что вычисление было плохим. Но будьте осторожны, точность некоторых шаговых двигателей не так хороша, но некоторые эксперименты могут принести больше информации об этом.
Оценка Облака
Есть несколько хороших способов оценить вычисляемое облако. Самый простой способ - вычислить ошибку перепроецирования облака. Для этого вы просто изменяете свою реконструкцию и смотрите, как далеко вычисленные изображения указывают на исходные соответствующие точки. Другой тест должен проверить, все ли точки находятся перед камерой. Вычисляя это может случиться так, что точки лежат впереди и позади камеры. Я понимаю, что это может произойти, когда обе камеры закрывают друг друга, и триангуляция также прекращается.
Первая пара изображений
Я не уверен, если этот шаг необходим со статической камерой. Но прежде всего нам нужно было вычислить фундаментальную матрицу. Мы получили опыт использования пары изображений, которая имеет наибольшее количество совпадений для их извлечения, и использование версии RANSAC дают наилучшие результаты. Но, возможно, вы можете попытаться поместить объект так, чтобы он имел наибольшее количество точек интереса впереди для первого выстрела.
Пары следующих изображений
Что действительно хорошо сработало, так это извлечение новых положений камеры из существующего облака точек, которое ранее вычислялось из старых пар изображений. Для этого вы должны помнить 2D-3D соответствие изображений ранее. Он называется "Оценка позы камеры в перспективе" (PnP).
В итоге у нас были хорошие и плохие результаты. Это было в зависимости от объекта сканирования. Вот несколько статей, которые мне помогли: