estimateWorldCameraPose

Оцените положение камеры от 3-D до 2-D соответствий точек

Описание

пример

[worldOrientation,worldLocation] = estimateWorldCameraPose(imagePoints,worldPoints,cameraParams) возвращает ориентацию и расположение калиброванной камеры в мировой системе координат. Область входа worldPoints должен быть определен в мировой системе координат.

Эта функция решает задачу perspective- n -point (PnP), используя перспективный трехточечный (P3P) алгоритм [1]. Функция также устраняет ложные соответствия с помощью алгоритма консенсуса выборки M-estimator (MSAC).

[___,inlierIdx] = estimateWorldCameraPose(imagePoints,worldPoints,cameraParams) возвращает индексы inliers, используемых для вычисления положения камеры, в дополнение к аргументам из предыдущего синтаксиса.

[___,status] = estimateWorldCameraPose(imagePoints,worldPoints,cameraParams) дополнительно возвращает код состояния, чтобы указать, было ли достаточно точек.

[___] = estimateWorldCameraPose(___,Name,Value) использует дополнительные опции, заданные одним или несколькими Name,Value аргументы в виде пар, с использованием любого из предыдущих синтаксисов.

Примеры

свернуть все

Загрузка ранее вычисленных соответствий мир-изображение.

data = load('worldToImageCorrespondences.mat');

Оцените положение мировой камеры.

[worldOrientation,worldLocation] = estimateWorldCameraPose(...
     data.imagePoints,data.worldPoints,data.cameraParams);

Постройте графики мировых точек.

 pcshow(data.worldPoints,'VerticalAxis','Y','VerticalAxisDir','down', ...
     'MarkerSize',30);
 hold on
 plotCamera('Size',10,'Orientation',worldOrientation,'Location',...
     worldLocation);
 hold off

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

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

свернуть все

Координаты неискаженных точек изображения, заданные как массив M-на-2 с координатами [x, y]. Количество точек изображения, M, должно быть не менее четырех.

Функция не учитывает искажение объектива. Можно либо отменить искажение изображений, используя undistortImage функцию перед обнаружением точек изображения, или можно не искажать сами точки изображения, используя undistortPoints функция.

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

Координаты мировых точек, определенных как массив <reservedrangesplaceholder3>-by-3 [x, y, z] координаты.

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

Параметры камеры, заданные как cameraParameters или cameraIntrinsics объект. Можно вернуть cameraParameters использование объекта estimateCameraParameters функция. The cameraParameters объект содержит собственные, внешние и параметры искажения объектива камеры.

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

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

Пример: 'MaxNumTrials', 1000

Максимальное количество случайных испытаний, заданное как разделенная разделенными запятой парами, состоящая из 'MaxNumTrials'и положительный целочисленный скаляр. Фактическое количество испытаний зависит от количества изображений и мировых точек и значений для MaxReprojectionError и Confidence свойства. Увеличение количества испытаний улучшает робастность выхода за счет дополнительных расчетов.

Доверие в нахождении максимального количества инкрустаторов, заданная как разделенная разделенными запятой парами, состоящая из 'Confidence'и скаляр в области значений (0,100). Увеличение этого значения улучшает робастность выхода за счет дополнительных расчетов.

Порог ошибок репроекции для нахождения выбросов, заданный как разделенная разделенными запятой парами, состоящая из 'MaxReprojectionError'и положительный числовой скаляр в пикселях. Увеличение этого значения заставляет алгоритм сходиться быстрее, но может снизить точность результата.

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

свернуть все

Ориентация камеры в мировых координатах, возвращенная как матрица 3 на 3.

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

Расположение камеры, возвращенной как вектор модуля 1 на 3.

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

Индексы inlier точек, возвращенные как M-на-1 логический вектор. Логическое истинное значение в векторе соответствует инлиерам, представленным в imagePoints и worldPoints.

Код состояния, возвращенный как 0, 1, или 2.

Код состоянияСтатус
0Нет ошибки
1imagePoints и worldPoints не содержат достаточного количества точек. Требуется минимум четыре точки.
2Не найдено достаточного количества инлиеров. Требуется минимум 4 инлиера.

Ссылки

[1] Gao, X.-S., X.-R. Хоу, Ж. Тан и Х.Ф. Чэн. «Полная классификация решений для перспективно-трехточечной задачи». Транзакции IEEE по шаблонному анализу и машинному анализу. Том 25,Issue 8, стр. 930-943, август 2003.

[2] Торр, П. Х. С., и А. Циссерман. MLESAC: новый робастный оценщик с приложением для оценки геометрии изображения. Компьютерное зрение и понимание изображений. Том 78, Выпуск 1, Апрель 2000, стр. 138-156.

Расширенные возможности

.
Введенный в R2016b