exponenta event banner

estimateFundamentalMatrix

Оценка фундаментальной матрицы по соответствующим точкам в стереоизображениях

Описание

пример

estimateFundamentalMatrix оценивает фундаментальную матрицу по соответствующим точкам в стереоизображениях. Эта функция может быть настроена на использование всех соответствующих точек или исключение отклонений. Можно исключить отклонения с помощью надежного метода оценки, такого как консенсус случайной выборки (RANSAC). При использовании надежной оценки результаты могут не совпадать между прогонами из-за рандомизированного характера алгоритма.

пример

F = estimateFundamentalMatrix(matchedPoints1,matchedPoints2) возвращает фундаментальную матрицу 3 на 3, F, используя метод наименьшей медианы квадратов (LMedS). Входными точками могут быть M-by-2 матрицы M числа координат [x y], или KAZEPoints, SURFPoints, MSERRegions, ORBPoints, или cornerPoints объект.

[F,inliersIndex] = estimateFundamentalMatrix(matchedPoints1,matchedPoints2) дополнительно возвращает логические индексы, inliersIndex, для inliers, используемых для вычисления основной матрицы. inliersIndex output является вектором M-by-1. Функция устанавливает элементы вектора на true когда соответствующая точка использовалась для вычисления фундаментальной матрицы. Для элементов установлено значение false если они не используются.

[F,inliersIndex,status] = estimateFundamentalMatrix(matchedPoints1,matchedPoints2) дополнительно возвращает код состояния.

[F,inliersIndex,status] = estimateFundamentalMatrix(matchedPoints1,matchedPoints2,Name,Value) использует дополнительные параметры, указанные одним или несколькими аргументами пары Name и Value.

Примеры

свернуть все

Метод RANSAC требует, чтобы входные точки были сопоставлены. Мы можем, например, использовать matchFeatures функция для этого. Использование алгоритма RANSAC устраняет любые отклонения, которые все еще могут содержаться в предположительно согласованных точках.

Загрузить стереопункты.

load stereoPointPairs

Оцените фундаментальную матрицу.

fRANSAC = estimateFundamentalMatrix(matchedPoints1,...
    matchedPoints2,'Method','RANSAC',...
    'NumTrials',2000,'DistanceThreshold',1e-4)
fRANSAC = 3×3

    0.0000   -0.0004    0.0348
    0.0004    0.0000   -0.0937
   -0.0426    0.0993    0.9892

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

load stereoPointPairs
[fLMedS, inliers] = estimateFundamentalMatrix(matchedPoints1,matchedPoints2,'NumTrials',2000)
fLMedS = 3×3

    0.0000   -0.0004    0.0349
    0.0004    0.0000   -0.0938
   -0.0426    0.0994    0.9892

inliers = 18x1 logical array

   1
   1
   1
   1
   1
   1
   0
   1
   0
   0
      ⋮

Загрузите стереоизображение.

I1 = imread('viprectification_deskLeft.png');
I2 = imread('viprectification_deskRight.png');

Показать предполагаемые совпадающие точки.

figure;
showMatchedFeatures(I1,I2,matchedPoints1,matchedPoints2,'montage','PlotOptions',{'ro','go','y--'});
title('Putative point matches');

Figure contains an axes. The axes with title Putative point matches contains 4 objects of type image, line.

Показать внутренние точки.

figure;
showMatchedFeatures(I1, I2, matchedPoints1(inliers,:),matchedPoints2(inliers,:),'montage','PlotOptions',{'ro','go','y--'});
title('Point matches after outliers were removed');

Figure contains an axes. The axes with title Point matches after outliers were removed contains 4 objects of type image, line.

Загрузите пары стереопунктов.

load stereoPointPairs

Вычислите основную матрицу для входных точек, не содержащих отклонений.

inlierPts1 = matchedPoints1(knownInliers,:);
inlierPts2 = matchedPoints2(knownInliers,:);
fNorm8Point = estimateFundamentalMatrix(inlierPts1,inlierPts2,'Method','Norm8Point')
fNorm8Point = 3×3

    0.0000   -0.0004    0.0348
    0.0004    0.0000   -0.0937
   -0.0426    0.0993    0.9892

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

свернуть все

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

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

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

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

Пример: 'Method', 'RANSACзадает RANSAC в качестве метода для вычисления фундаментальной матрицы.

Метод, используемый для вычисления фундаментальной матрицы, указанной как разделенная запятыми пара, состоящая из 'Method"и одно из следующих:

Norm8PointНормализованный алгоритм из восьми точек. Для получения надежных результатов вводимые данные matchedPoints1 и matchedPoints2 должны точно соответствовать.
LMedSНаименьшая медиана квадратов. Выберите этот метод, если известно, что не менее 50% точек в matchedPoints1 и matchedPoints2 являются инкрементами.
RANSACКонсенсус RANdom SAmple. Выберите этот метод, если требуется задать порог расстояния для входов.
MSACM-оценщик SAmple Консенсус. Выберите метод S-estimator SAmple Consensus, если требуется установить порог расстояния для входов. Как правило, метод MSAC сходится быстрее, чем метод RANSAC.
LTSНаименьшие обрезанные квадраты. Выберите метод «Наименьшие отсеченные квадраты», если известно минимальное процентное соотношение inliers в matchedPoints1 и matchedPoints2. Как правило, метод LTS сходится быстрее, чем метод LMedS.

Для получения надежных результатов с использованием Norm8Point алгоритм, входы, matchedPoints1 и matchedPoints2, должен точно соответствовать. Другие методы могут допускать отклонения и, следовательно, требуют только предполагаемых согласованных точек ввода. Можно получить предполагаемые совпадающие точки с помощью matchFeatures функция.

Класс фундаментальной матрицы, указанный как разделенная запятыми пара, состоящая из 'OutputClass«и либо» 'double' или 'single'. Это задает класс для основной матрицы и внутренних вычислений функции.

Число случайных испытаний для нахождения отклонений, указанных как пара, разделенная запятыми, состоящая из 'NumTrialsи целочисленное значение. Этот параметр применяется при установке Method параметр для LMedS, RANSAC, MSAC, или LTS.

При установке Method для параметра: LMedS или LTS, функция использует фактическое количество испытаний в качестве значения параметра.

При установке Method для параметра: RANSAC или MSAC, функция использует максимальное количество испытаний в качестве значения параметра. Фактическое число судебных разбирательств зависит от matchedPoints1, matchedPoints2и значение Confidence параметр.

Выберите количество случайных испытаний для оптимизации скорости и точности.

Алгебраический тип расстояния Сэмпсона, указанный как разделенная запятыми пара, состоящая из 'DistanceType«и либо» Algebraic или Sampson. Тип расстояния определяет, является ли пара точек внутренней или внешней. Этот параметр применяется при установке Method параметр для LMedS, RANSAC, MSAC, или LTS.

Примечание

Для ускорения вычислений задайте для этого параметра значение Algebraic. Для геометрического расстояния задайте для этого параметра значение Sampson.

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

Порог расстояния для поиска отклонений, указанный как пара, разделенная запятыми, состоящая из 'DistanceThreshold"и положительное значение. Этот параметр применяется при установке Method параметр для RANSAC или MSAC.

Требуемая уверенность для нахождения максимального количества входов, указанная как пара, разделенная запятыми, состоящая из 'Confidence'и процентное скалярное значение в диапазоне (0 100). Этот параметр применяется при установке Method параметр для RANSAC или MSAC.

Минимальный процент входов во входных точках, указанный как пара, разделенная запятыми, состоящая из 'InlierPercentage'и процентное скалярное значение в диапазоне (0 100). Укажите минимальный процент входов в matchedPoints1 и matchedPoints2. Этот параметр применяется при установке Method параметр для LTS.

Ошибка выполнения отчета, указанная как разделенная запятыми пара, состоящая из 'ReportRuntimeErrorи логическое значение. Задайте для этого параметра значение true для сообщения об ошибках времени выполнения, когда функция не может вычислить фундаментальную матрицу из matchedPoints1 и matchedPoints2. При установке для этого параметра значения false, вы можете проверить status вывод для проверки достоверности фундаментальной матрицы.

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

свернуть все

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

[P21] * Матрица * [P11] '= 0

P1, точка в matchedPoints1 изображения 1 в пикселях, соответствует точке, P2, точка в matchedPoints2 на изображении 2.

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

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

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

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

статусСтоимость
0:Ошибка отсутствует.
1:matchedPoints1 и matchedPoints2 не содержат достаточного количества точек. Norm8Point, RANSAC, и MSAC требуется не менее 8 баллов, LMedS 16 баллов, и LTS требует ceil(800/InlierPercentage).
2:Не найдено достаточного количества вложенных файлов.

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

Совет

Использовать estimateEssentialMatrix когда вы знаете особенности камеры. Вы можете получить характеристику с помощью приложения «Калибратор камеры». estimateFundamentalMatrix функция, не требующая встроенных функций камеры. Заметим, что фундаментальная матрица не может быть оценена по компланарным мировым точкам.

Алгоритмы

свернуть все

Вычисление фундаментальной матрицы

Эта функция вычисляет фундаментальную матрицу с использованием нормализованного восьмиточечного алгоритма [1]

При выборе Norm8Point , функция использует все точки в matchedPoints1 и matchedPoints2 для вычисления фундаментальной матрицы.

При выборе любого другого метода функция использует следующий алгоритм для исключения отклонений и вычисления фундаментальной матрицы из входов:

  1. Инициализируйте основную матрицу F в матрицу 3 на 3 нулей.

  2. Установите счетчик цикла n в нуль, а число циклов N в указанное число случайных испытаний.

  3. Выполните следующие шаги, пока n < N:

    1. Случайный выбор 8 пар точек из matchedPoints1 и matchedPoints2.

    2. Используйте выбранные 8 точек для вычисления фундаментальной матрицы f с помощью нормализованного 8-точечного алгоритма.

    3. Вычислите пригодность f для всех точек в matchedPoints1 и matchedPoints2.

    4. Если пригодность f лучше, чем F, замените F на f.

      Для RANSAC и MSAC, обновление N.

    5. n = n + 1

Количество случайных выборок для методов RANSAC и MSAC

Методы RANSAC и MSAC обновляют число случайных испытаний N для каждой итерации в цикле алгоритма. Функция сбрасывает N в соответствии со следующим:

N = мин (N, log (1 р) log (1 − r8)).
Где, p представляет указанный доверительный параметр, а r вычисляется следующим образом:
∑iNsgn (dui, vi), t )/N, где sgn (a, b) = 1, если a≤b и 0 в противном случае
.
При использовании RANSAC или MSAC, результаты не могут быть идентичными между запусками из-за рандомизированного характера алгоритма.

Типы расстояний

Функция предоставляет два типа расстояний, алгебраическое расстояние и расстояние Сэмпсона, для измерения расстояния пары точек согласно фундаментальной матрице. Следующие уравнения используются для каждого типа, где u представляет matchedPoints1 и v, представляющий matchedPoints2.

Алгебраическое расстояние:d (ui, vi) = (viFuiT) 2
Расстояние Сампсона:d (ui, vi) = (viFuiT) 2 [1 (FuiT) 12 + (FuiT) 22 + 1 (viF) 12 + (viF) 22]

где i представляет индекс соответствующих точек, и (FuiT) j2, квадрат j-й записи вектора FuiT.

Пригодность фундаментальной матрицы для соответствующих баллов

Следующая таблица суммирует, как каждый метод определяет пригодность вычисленной фундаментальной матрицы:

МетодМера пригодности
LMedSмедиана (d (ui, vi); i = 1: N), количество входных точек. Чем меньше значение, тем лучше фитнес.
RANSAC∑iNsgn (dui, vi), t )/N, где sgn (a, b) = 1, если a≤b и 0 в противном случае, t представляет заданный порог. Чем больше значение, тем лучше фитнес.
MSAC∑iNmin (d (ui, vi), t). Чем меньше значение, тем лучше фитнес.
LTS ∑iεΩd (ui, vi), где Λ - первое наименьшее значение (N x q) пары точек. Где q представляет более низкий процент, указанный пользователем. Чем меньше значение, тем лучше фитнес.

Ссылки

[1] Хартли, Р., А. Зиссерман, множественная геометрия вида в компьютерном зрении, Кембриджский университет, пресса, 2003.

[2] Rousseeuw, P., A. Leroy, Rustable Regression and Outlier Detection, John Wiley & Sons, 1987.

[3] Торр, П. Х. С. и А. Зиссерман, MLESAC: новый надежный оценщик с применением для оценки геометрии изображения, компьютерного зрения и понимания изображения, 2000.

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

.
Представлен в R2012b