exponenta event banner

bundleAdjustment

Уточнение позы камеры и 3-D точек

Описание

пример

[xyzRefinedPoints,refinedPoses] = bundleAdjustment(xyzPoints,pointTracks,cameraPoses,intrinsics) возвращает уточненные точки 3-D и позы камеры, которые минимизируют ошибки обратного впрыска. Процедура уточнения является вариантом алгоритма Левенберга - Марквардта. Точки 3-D и позы камеры размещаются в одной и той же глобальной системе опорных координат.

[___,reprojectionErrors] = bundleAdjustment(___) дополнительно возвращает вектор N-элемента, содержащий среднее значение ошибки репроекции для каждой точки мира 3-D, используя аргументы из предыдущего синтаксиса.

[___] = bundleAdjustment(___,Name,Value) использует дополнительные параметры, указанные одним или несколькими Name,Value аргументы пары. Неопределенные свойства имеют значения по умолчанию.

Примеры

свернуть все

Загрузить данные для инициализации.

data = load('sfmGlobe');

Уточните позы и точки камеры.

[xyzRefinedPoints,refinedPoses] = ...
    bundleAdjustment(data.xyzPoints,data.pointTracks,data.cameraPoses,data.intrinsics);

Отображение улучшенных поз камеры и 3-D точек мира.

pcshow(xyzRefinedPoints,'VerticalAxis','y','VerticalAxisDir',...
    'down','MarkerSize',45);
hold on
plotCamera(refinedPoses,'Size',0.1);
hold off
grid on

Figure contains an axes. The axes contains 51 objects of type line, text, patch, scatter.

Входные аргументы

свернуть все

Неочищенные точки 3-D, заданные как матрица M-by-3 с расположениями [x, y, z].

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

Поза камеры ViewId, Orientation, и Location информация, указанная в виде таблицы из трех столбцов. Идентификаторы ракурсов относятся к идентификаторам в pointTracks объект. Ориентации задаются как матрицы вращения 3 на 3. Расположения задаются как трехэлементные векторы.

Характеристики камеры, заданные как скаляр или массив M-элементов cameraIntrinsics объекты. M - количество поз камеры. Используйте скалярное значение при захвате изображений с помощью одной и той же камеры. Используйте вектор при захвате изображений различными камерами.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'MaxIterations', '50'

Максимальное число итераций перед остановкой алгоритма Левенберга-Марквардта, указанное как разделенная запятыми пара, состоящая из 'MaxIterations"и положительное целое число.

Абсолютный допуск окончания среднеквадратичной ошибки репроекции в пикселях, указанный как пара, разделенная запятыми, состоящая из 'AbsoluteTolerance"и положительный скаляр.

Относительный допуск окончания уменьшения ошибки обратного впрыска между итерациями, указанный как пара, разделенная запятыми, состоящая из 'RelativeTolerance"и положительный скаляр.

Флаг для указания искажения объектива, указанный как разделенная запятыми пара, состоящая из 'PointsUndistorted«и либо» false или true. При установке PointsUndistorted кому false, точки 2-D в pointTracks должен быть из изображений с искажением объектива. Чтобы использовать неискаженные точки, используйте undistortImage сначала функция, затем установка PointsUndistorted кому true.

Просмотреть идентификаторы для фиксированной позы камеры, указанной как разделенная запятыми пара, состоящая из 'FixedViewIDsи вектор неотрицательных целых чисел. Каждый идентификатор соответствует ViewId фиксированной позы камеры в cameraPoses. Пустое значение для FixedViewIDs означает, что все позы камеры оптимизированы.

Отображение сведений о ходе выполнения, указанных как пара, разделенная запятыми, состоящая из 'Verbose«и либо» false или true.

Выходные аргументы

свернуть все

3-D местоположения уточненных точек мира, возвращаемые в виде матрицы M-by-3 [x, y, z] местоположений.

Типы данных: single | double

Рафинированная камера позирует, возвращается в виде таблицы. Таблица содержит три столбца для 'ViewId', 'Orientation', и 'Location'.

Ошибки повторного впрыска, возвращенные в виде вектора M-by-1. Функция проецирует каждую точку мира обратно в каждую камеру. Затем в каждом изображении функция вычисляет ошибку повторного впрыска как расстояние между обнаруженной и повторно спроецированной точкой. reprojectionErrors вектор содержит среднюю ошибку репроекции для каждой точки мира.

Ссылки

[1] Луракис, М.И.А. и А.А. Аргирос. «Преимущества для малого бизнеса: пакет программного обеспечения для настройки общего разреженного пакета». Транзакции ACM на математическом программном обеспечении. 2009.

[2] Хартли, R. и А. Зиссермен. Геометрия нескольких видов в компьютерном видении. Издательство Кембриджского университета, 2003 год.

[3] Триггеры, B., P. McLauchlan, R. Hartley и A. Fitzgibbon. «Корректировка пучка: современный синтез». Материалы Международного рабочего совещания по алгоритмам видения. Спрингер-Верлаг. 1999, стр. 298-372.

Представлен в R2016a