estimateWorldCameraPose

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

Описание

пример

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

Эта функция решает perspective-n-point (PnP) проблема с помощью "перспективы три точки" (P3P) алгоритм [1]. Функция также устраняет побочные соответствия с помощью демонстрационного согласия M-средства-оценки (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 object. The axes object contains 11 objects of type line, text, patch, scatter.

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

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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

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

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

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

StatusCode Состояние
0Никакая ошибка
1imagePoints и worldPoints не содержите достаточно точек. Минимум четырех точек требуется.
2Недостаточно inliers найдено. Минимум 4 inliers требуется.

Ссылки

[1] Гао, X.-S., X.-R. Как, Дж. Тан и Х.Ф. Ченг. “Классификация Полных решений для Проблемы "Перспектива Три Точки"”. Транзакции IEEE согласно Анализу Шаблона и Искусственному интеллекту. Объем 25, Выпуск 8, стр 930–943, август 2003.

[2] Торр, P. H. S. и А. Зиссермен. “MLESAC: Новое Устойчивое Средство оценки с Приложением к Оценке Геометрии Изображений”. Компьютерное зрение и Распознавание изображений. Объем 78, Выпуск 1, апрель 2000, стр 138-156.

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

Введенный в R2017b