estimateUncalibratedRectification

Некалиброванное исправление стерео

Синтаксис

[T1,T2] = estimateUncalibratedRectification(F,inlierPoints1,inlierPoints2,imagesize)

Описание

пример

[T1,T2] = estimateUncalibratedRectification(F,inlierPoints1,inlierPoints2,imagesize) возвращает проективные преобразования для исправления стереоизображений. Эта функция не требует или внутренних или внешних параметров камеры.

Примеры

свернуть все

Этот пример показывает, как вычислить основную матрицу из соответствующих точек в паре стереоизображений.

Загрузите стереоизображения и характерные точки, которые являются уже соответствующими.

I1 = imread('yellowstone_left.png');
I2 = imread('yellowstone_right.png');
load yellowstone_inlier_points;

Отобразите соответствия точки. Заметьте, что соответствующие точки находятся в различных строках, указывая, что стереопара не исправлена.

showMatchedFeatures(I1, I2,inlier_points1,inlier_points2,'montage');
title('Original images and matching feature points');

Вычислите основную матрицу из соответствующих точек.

f = estimateFundamentalMatrix(inlier_points1,inlier_points2,...
    'Method','Norm8Point');

Вычислите преобразования исправления.

[t1, t2] = estimateUncalibratedRectification(f,inlier_points1,...
    inlier_points2,size(I2));

Исправьте стереоизображения с помощью проективных преобразований t1 и t2.

[I1Rect,I2Rect] = rectifyStereoImages(I1,I2,t1,t2);

Отобразите анаглиф стерео, который может также быть просмотрен с трехмерными очками.

figure;
imshow(stereoAnaglyph(I1Rect,I2Rect));

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

свернуть все

Основная матрица для стереоизображений, заданных как 3х3 основная матрица. Основная матрица удовлетворяет следующие критерии:

Если P 1, точка в изображении 1, соответствует P 2, точка в изображении 2, то:
[P 2,1] *F * [P 1,1]' = 0

F должен быть двойным или одним.

Координаты соответствующих точек в изображении один, заданный как M-by-2 матрица количества M [x y] координаты, или как aORBPoints, BRISKPoints, SURFPoints, MSERRegions или объект cornerPoints.

Координаты соответствующих точек в изображении два, заданный как M-by-2 матрица количества M [x y] координаты, или как aORBPoints, BRISKPoints, SURFPoints, MSERRegions или объект cornerPoints.

Второй входной размер изображения, заданный как двойное, одно, или целочисленное значение и в формате, возвращенном функцией size. Размер входного изображения 2 соответствует inlierPoints2.

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

свернуть все

Проективное преобразование, возвращенное как 3х3 матрица, описывающая проективные преобразования для входа, отображает T1.

Проективное преобразование, возвращенное как 3х3 матрица, описывающая проективные преобразования для входа, отображает T2.

Советы

  • epipole может быть расположен в первом изображении или втором изображении. При применении вывода некалиброванное исправление T1 (или T2), чтобы отобразить 1 (или отобразить 2) может привести к нежелательному искажению. Можно проверять на epipole в изображении путем применения функции isEpipoleInImage.

Ссылки

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

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

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Представленный в R2012b