epipolarLine

Вычислите epipolar строки для стереоизображений

Синтаксис

lines = epipolarLine(F,points)
lines = epipolarLine(F',points)

Описание

пример

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

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

Примеры

свернуть все

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

Точки, matched_points1 и matched_points2, были предполагаемо соответствующими.

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

Покажите inliers в первом изображении.

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

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

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

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

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

Покажите epipolar строки в первом изображении

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

Покажите inliers во втором изображении.

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

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

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

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

свернуть все

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

[P 2,1] * F * [P 1,1]' = 0

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

Основная матрица, заданная как 3х3 матрица. Фундаментальная матрица F' сопоставляет точки в изображении I2 к epipolar строкам в изображении I1.

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

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

свернуть все

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

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

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

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

Введенный в R2011a