epipolarLine

Вычисление эпиполярных линий для стерео изображений

Описание

пример

lines = epipolarLine(F,points) возвращает M -by-3 матрицу, lines. Матрица представляет вычисленные эпиполярные линии в изображении I2 соответствующий points в изображениях I1. Область входа F представляет фундаментальную матрицу, которая отображает точки в I1 к эпиполярным линиям в I2 изображений.

lines = epipolarLine(F',points) Матрица представляет вычисленные эпиполярные линии в изображении I1 соответствующий points в изображениях I2.

Примеры

свернуть все

В этом примере показано, как вычислить фундаментальную матрицу. Он использует метод наименьшей медианы квадратов, чтобы найти инкрустаторы.

Точки, matched_points1 и matched_points2, были предположительно совпадены.

load stereoPointPairs
[fLMedS,inliers] = estimateFundamentalMatrix(matchedPoints1,...
    matchedPoints2,'NumTrials',4000);

Отобразите инлиеры на первом изображении.

I1 = imread('viprectification_deskLeft.png');
figure; 
subplot(121);
imshow(I1); 
title('Inliers and Epipolar Lines in First Image'); hold on;
plot(matchedPoints1(inliers,1),matchedPoints1(inliers,2),'go')

Figure contains an axes. The axes with title Inliers and Epipolar Lines in First Image contains 2 objects of type image, line.

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

epiLines = epipolarLine(fLMedS',matchedPoints2(inliers,:));

Вычислите точки пересечения линий и границы изображения.

points = lineToBorderPoints(epiLines,size(I1));

Покажите эпиполярные линии на первом изображении

line(points(:,[1,3])',points(:,[2,4])');

Figure contains an axes. The axes with title Inliers and Epipolar Lines in First Image contains 11 objects of type image, line.

Отобразите инлиеры на втором изображении.

I2 = imread('viprectification_deskRight.png');
subplot(122); 
imshow(I2);
title('Inliers and Epipolar Lines in Second Image'); hold on;
plot(matchedPoints2(inliers,1),matchedPoints2(inliers,2),'go')

Figure contains 2 axes. Axes 1 with title Inliers and Epipolar Lines in First Image contains 11 objects of type image, line. Axes 2 with title Inliers and Epipolar Lines in Second Image contains 2 objects of type image, line.

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

epiLines = epipolarLine(fLMedS,matchedPoints1(inliers,:));
points = lineToBorderPoints(epiLines,size(I2));
line(points(:,[1,3])',points(:,[2,4])');
truesize;

Figure contains 2 axes. Axes 1 with title Inliers and Epipolar Lines in First Image contains 11 objects of type image, line. Axes 2 with title Inliers and Epipolar Lines in Second Image contains 11 objects of type image, line.

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

свернуть все

Фундаментальная матрица, заданная как матрица 3 на 3. F должен быть двойным или одинарным. Если P 1 представляет точку в первом изображении I 1, которая соответствует P 2, точке во втором изображении I 2, то:

[<reservedrangesplaceholder1> 2,1] * F * [<reservedrangesplaceholder0> 1,1]' = 0

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

Фундаментальная матрица, заданная как матрица 3 на 3. The F' фундаментальная матрица отображает точки в I2 изображений к эпиполярным линиям в I1 изображений.

Координаты точек, заданные как матрица M -by-2. Каждая строка содержит (x, y) координаты точки. M - число точек.

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

свернуть все

Матрица M -by-3, где каждая строка должна быть в формате [A, B, C]. Это соответствует определению линии:

A * x + B * y + C = 0.
M представляет количество линий.

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

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

.
Введенный в R2011a