bundleAdjustment

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

Описание

пример

[xyzRefinedPoints,refinedPoses] = bundleAdjustment(xyzPoints,pointTracks,cameraPoses,intrinsics) возвращает усовершенствованные 3-D точки и положения камеры, которые минимизируют ошибки перепроекции. Процедура улучшения является вариантом алгоритма Levenberg-Marquardt. 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

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

свернуть все

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

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

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

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

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

Задайте дополнительные разделенные запятой пары 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.

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

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

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

свернуть все

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

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

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

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

Ссылки

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

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

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

Введенный в R2016a

Для просмотра документации необходимо авторизоваться на сайте