bundleAdjustmentStructure

Совершенствуйте 3-D точки с помощью корректировки пакета только для структуры

Описание

пример

xyzRefinedPoints = bundleAdjustmentStructure(xyzPoints,pointTracks,cameraPoses,intrinsics) возвращает усовершенствованные 3-D точки, которые минимизируют ошибки перепроекции.

Процедура улучшения только для структуры является особым случаем корректировки пакета с положениями камеры, зафиксированными во время оптимизации. 3-D точки и положения камеры помещаются в ту же систему мировой координаты.

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

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

Примеры

свернуть все

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

data = load('sfmGlobe');

Совершенствуйте 3-D мировые точки.

xyzRefinedPoints = bundleAdjustmentStructure(data.xyzPoints,data.pointTracks,data.cameraPoses,data.intrinsics);

Отобразите усовершенствованные 3-D мировые точки.

pcshow(xyzRefinedPoints,'VerticalAxis','y','VerticalAxisDir','down','MarkerSize',45);

Отобразите камеры.

hold on
plotCamera(data.cameraPoses,'Size',0.2);
hold off
grid on

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

Входные параметры

свернуть все

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

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

Совпадающие точки через повторные изображения в виде N - массив элемента pointTracks объекты.

Камера позирует в виде таблицы, содержащей два столбца для 'ViewId' и 'AbsolutePose'. Можно получить cameraPoses таблица с помощью imageviewset posesфункции объекта .

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

Аргументы name-value

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

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

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

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

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

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

Отобразите информацию о прогрессе в виде разделенной запятой пары, состоящей из 'Verbose'и любой false или true.

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

свернуть все

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

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

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

Ссылки

[1] Lourakis, M.I.A. и А.А. Аргирос. "SBA: пакет программного обеспечения для типовой разреженной корректировки пакета". Транзакции ACM на математическом программном обеспечении. Объем 36, выпуск 1. Март 2009.

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

[3] Triggs, B., П. Маклочлан, Р. Хартли и А. Фицджиббон. "Свяжите корректировку: современный синтез". Продолжения международного семинара на алгоритмах визуализации: теория и практика. Страницы 298 — 372. Springer-Verlag. 1999.

Смотрите также

Объекты

Функции

Введенный в R2020a