bundleAdjustmentStructure

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

Описание

пример

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

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

[xyzRefinedPoints,reprojectionErrors] = bundleAdjustmentStructure(___) дополнительно возвращает вектор N-element, содержащий среднюю ошибку репроекции для каждой точки 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. The axes contains 51 objects of type line, text, patch, scatter.

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

свернуть все

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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

Ссылки

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

[2] Хартли, Р. и А. Зиссерман. «Несколько видов геометрии в Компьютерное Зрение». Cambridge University Press. 2003

[3] Триггс, Б., П. Маклаучлан, Р. Хартли и А. Фицгиббон. Bundle Adjustment: A Modern Synthesis (неопр.) (недоступная ссылка). Материалы Международного практикума по алгоритмам зрения: теория и практика. Страницы 298 - 372. Springer-Verlag. 1999.

Введенный в R2020a