exponenta event banner

estimateUncalibratedRectification

Некалиброванная стереоректификация

Описание

пример

[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');

Figure contains an axes. The axes with title Original images and matching feature points contains 4 objects of type image, line.

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

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);

Отображение стереоанаглифа, который также можно просмотреть с помощью 3-D очков.

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

Figure contains an axes. The axes contains an object of type image.

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

свернуть все

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

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

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

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

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

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

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

свернуть все

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

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

Совет

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

Ссылки

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

[2] Поллефейс, М., Кох, Р. и Ван Гул, Л. Простой и эффективный метод исправления для общего движения. Материалы седьмой Международной конференции IEEE по компьютерному зрению. Том 1, стр. 496-501. 1999. DOI:10.1109/ICCV.1999.791262.

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

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