estimateEssentialMatrix

Оцените существенную матрицу от соответствующих точек в паре изображений

Синтаксис

E = estimateEssentialMatrix(matchedPoints1,matchedPoints2,cameraParams)
E = estimateEssentialMatrix(matchedPoints1,matchedPoints2,cameraParams1,cameraParams2)
[E,inliersIndex] = estimateEssentialMatrix(matchedPoints1,matchedPoints2)
[E,inliersIndex,status] = estimateEssentialMatrix(matchedPoints1,matchedPoints2)
[E,inliersIndex,status] = estimateEssentialMatrix(___,Name,Value)

Описание

пример

E = estimateEssentialMatrix(matchedPoints1,matchedPoints2,cameraParams) возвращает 3х3 существенную матрицу, E, с помощью демонстрационного согласия M-средства-оценки (MSAC) алгоритм. Точками ввода может быть M-by-2 матрицы количества M [x, y] координаты, или KAZEPoints, SURFPoints, MSERRegions, BRISKPoints или объект cornerPoints. Объект cameraParams содержит параметры камеры, используемой, чтобы взять изображения.

E = estimateEssentialMatrix(matchedPoints1,matchedPoints2,cameraParams1,cameraParams2) возвращает существенную матрицу, связывающую два изображения, взятые различными камерами. cameraParams1 и cameraParams2 являются объектами cameraParameters, содержащими параметры камеры 1 и камеры 2 соответственно.

[E,inliersIndex] = estimateEssentialMatrix(matchedPoints1,matchedPoints2) дополнительно возвращает M-by-1 логический вектор, inliersIndex, используемый, чтобы вычислить существенную матрицу. Функция устанавливает элементы вектора к true, когда соответствующая точка использовалась, чтобы вычислить основную матрицу. Элементы установлены в false, если они не используются.

[E,inliersIndex,status] = estimateEssentialMatrix(matchedPoints1,matchedPoints2) дополнительно возвращает код статуса, чтобы указать на валидность точек.

[E,inliersIndex,status] = estimateEssentialMatrix(___,Name,Value) дополнительные опции использования, заданные одним или несколькими Имя, аргументы пары Значения.

Примеры

свернуть все

Загрузите предварительно вычисленные параметры камеры.

load upToScaleReconstructionCameraParameters.mat

Считайте и не исказите два изображения.

imageDir = fullfile(toolboxdir('vision'),'visiondata',...
    'upToScaleReconstructionImages');
images = imageDatastore(imageDir);
I1 = undistortImage(readimage(images,1),cameraParams);
I2 = undistortImage(readimage(images,2),cameraParams);
I1gray = rgb2gray(I1);
I2gray = rgb2gray(I2);

Обнаружьте характерные точки каждое изображение.

imagePoints1 = detectSURFFeatures(I1gray);
imagePoints2 = detectSURFFeatures(I2gray);

Извлеките дескрипторы функции от каждого изображения.

features1 = extractFeatures(I1gray,imagePoints1,'Upright',true);
features2 = extractFeatures(I2gray,imagePoints2,'Upright',true);

Совпадайте с функциями через изображения.

indexPairs = matchFeatures(features1,features2);
matchedPoints1 = imagePoints1(indexPairs(:,1));
matchedPoints2 = imagePoints2(indexPairs(:,2));
figure
showMatchedFeatures(I1,I2,matchedPoints1,matchedPoints2);
title('Putative Matches')

Оцените существенную матрицу.

[E,inliers] = estimateEssentialMatrix(matchedPoints1,matchedPoints2,...
 cameraParams);

Отобразите соответствия inlier.

inlierPoints1 = matchedPoints1(inliers);
inlierPoints2 = matchedPoints2(inliers);
figure
showMatchedFeatures(I1,I2,inlierPoints1,inlierPoints2);
title('Inlier Matches')

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

свернуть все

Координаты соответствующих точек в изображении 1, заданный как M-by-2 матрица M [x, y] координаты, или как KAZEPoints, SURFPoints, BRISKPoints, MSERRegions или объект cornerPoints. Вход matchedPoints1 должен содержать по крайней мере пять точек, которые являются предполагаемо соответствующими при помощи функции, такой как matchFeatures.

Координаты соответствующих точек в изображении 1, заданный как M-by-2 матрица M [x, y] координаты, или как KAZEPoints, SURFPoints, MSERRegions, BRISKPoints или объект cornerPoints. Вход matchedPoints2 должен содержать по крайней мере пять точек, которые являются предполагаемо соответствующими при помощи функции, такой как matchFeatures.

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

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

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

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

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

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

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

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

Порог расстояния Сэмпсона, заданный как пара, разделенная запятой, состоящая из 'MaxDistance' и скалярного значения. Функция использует порог, чтобы найти, что выбросы, возвращенные в пикселях, придали квадратную форму. Расстояние Сэмпсона является приближением первого порядка геометрического расстояния в квадрате между точкой и epipolar строкой. Увеличьте это значение, чтобы заставить алгоритм сходиться быстрее, но это может также оказать негативное влияние на точность результата.

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

свернуть все

Существенная матрица, возвращенная как 3х3 матрица, которая вычисляется из точек во входных параметрах matchedPoints2 и matchedPoints1.

[P21]*EssentialMatrix*[P11]'=0

Точка P1 в изображении 1, в нормированных координатах изображений, соответствует, точка P2 в изображении 2.

В компьютерном зрении существенная матрица является 3х3 матрицей, которая связывает соответствующие точки в стереоизображениях, которые находятся в нормированных координатах изображений. Когда две камеры просматривают 3-D сцену из двух отличных положений, геометрических отношений между 3-D точками и их проекциями на 2D вывод изображений к ограничениям между точками изображений. Два изображения той же сцены связаны epipolar геометрией.

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

Индекс Inliers, возвращенный как M-by-1 логический индексный вектор. Набор элемента к true указывает, что соответствующие индексируемые совпадающие точки в matchedPoints1 и matchedPoints2 использовались, чтобы вычислить существенную матрицу. Набор элемента к false означает, что индексируемые точки не использовались для вычисления.

Типы данных: логический

Код статуса, возвращенный как одно из следующих возможных значений:

состояниеЗначение
0:Никакая ошибка.
1:matchedPoints1 и matchedPoints2 не содержат достаточно точек. Требуются по крайней мере пять точек.
2:Недостаточно inliers найдено. Наименьшее количество пять inliers требуется.

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

Советы

Используйте estimateEssentialMatrix, когда вы будете знать камеру intrinsics. Можно получить intrinsics использование приложения Camera Calibrator. В противном случае можно использовать функцию estimateFundamentalMatrix, которая не требует камеры intrinsics. Основная матрица не может быть оценена от компланарных мировых точек.

Ссылки

[1] Кукелова, Z., М. Баджнэк и решения для собственного значения полинома Т. Пэдждлы родственника на 6 ПБ и на 5 ПБ создают проблемы. Лидс, Великобритания: BMVC, 2008.

[2] Nister, D.. “Эффективное решение родственника с пятью точками создает проблему”. Транзакции IEEE согласно анализу шаблона и искусственному интеллекту. Объем 26, выпуск 6, июнь 2004.

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

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

Введенный в R2017b