estimateWorldCameraPose

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

Синтаксис

[worldOrientation,worldLocation] = estimateWorldCameraPose(imagePoints,worldPoints,cameraParams)
[___,inlierIdx] = estimateWorldCameraPose(imagePoints,worldPoints,cameraParams)
[___,status] = estimateWorldCameraPose(imagePoints,worldPoints,cameraParams)
[___] = estimateWorldCameraPose(___,Name,Value)

Описание

пример

[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

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

свернуть все

Координаты неискаженных точек изображений, заданных как 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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