bundleAdjustmentMotion

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

Описание

пример

refinedPose = bundleAdjustmentMotion(xyzPoints,imagePoints,absolutePose,intrinsics) возвращает уточненное абсолютное положение камеры, которое минимизирует ошибки репроекции.

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

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

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

Примеры

свернуть все

Загрузите данные для инициализации в рабочую область.

data = load('motionOnlyBA.mat');

Уточните абсолютные положения камеры.

refinedPose = bundleAdjustmentMotion(data.xyzPoints,data.imagePoints,data.absPose,data.intrinsics);

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

pcshow(data.xyzPoints,'VerticalAxis','y','VerticalAxisDir','down','MarkerSize',45);
hold on

Постройте график положения абсолютной камеры до и после уточнения.

plotCamera('AbsolutePose',data.absPose,'Color','r','Size',2);
plotCamera('AbsolutePose',refinedPose,'Color','m','Size',2);

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

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

свернуть все

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

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

Изображения точек, заданные как M -by-2 матрица или M -элементный массив типов объектов точек.

Абсолютное положение камеры, заданное как скаляр rigid3d объект.

Характеристика камеры, заданная как cameraIntrinsics объект.

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

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

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

свернуть все

Уточненное абсолютное положение камеры, возвращаемое как rigid3d объект.

Ошибки репроекции, возвращенные как 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