triangulate

3-D местоположения неискаженных соответствующих точек в стереоизображениях

Описание

пример

worldPoints = triangulate(matchedPoints1,matchedPoints2,stereoParams) возвращает 3-D местоположения соответствия с парами неискаженных точек изображений от двух стереоизображений.

worldPoints = triangulate(matchedPoints1,matchedPoints2,cameraMatrix1,cameraMatrix2) возвращает 3-D местоположения соответствующих пар в системе мировой координаты. Эти местоположения заданы матрицами проекции камеры.

[worldPoints,reprojectionErrors] = triangulate(___) дополнительно возвращает ошибки перепроекции для мировых точек с помощью любого из входных параметров от предыдущих синтаксисов.

Примеры

свернуть все

Загрузите параметры стерео.

load('webcamsSceneReconstruction.mat');

Читайте в стереопаре изображений.

I1 = imread('sceneReconstructionLeft.jpg');
I2 = imread('sceneReconstructionRight.jpg');

Не исказите изображения.

I1 = undistortImage(I1,stereoParams.CameraParameters1);
I2 = undistortImage(I2,stereoParams.CameraParameters2);

Обнаружьте поверхность в обоих изображениях.

faceDetector = vision.CascadeObjectDetector;
face1 = faceDetector(I1);
face2 = faceDetector(I2);

Найдите центр поверхности.

center1 = face1(1:2) + face1(3:4)/2;
center2 = face2(1:2) + face2(3:4)/2;

Вычислите расстояние от камеры 1 к поверхности.

point3d = triangulate(center1, center2, stereoParams);
distanceInMeters = norm(point3d)/1000;

Отобразите обнаруженную поверхность и расстояние.

distanceAsString = sprintf('%0.2f meters', distanceInMeters);
I1 = insertObjectAnnotation(I1,'rectangle',face1,distanceAsString,'FontSize',18);
I2 = insertObjectAnnotation(I2,'rectangle',face2, distanceAsString,'FontSize',18);
I1 = insertShape(I1,'FilledRectangle',face1);
I2 = insertShape(I2,'FilledRectangle',face2);
 
imshowpair(I1, I2, 'montage');

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

свернуть все

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

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

Параметры камеры для системы стерео, заданной как stereoParameters объект. Объект содержит внутренний параметр, значение внешних параметров и параметры искажения объектива системы стереофотоаппарата. Можно использовать estimateCameraParameters функционируйте, чтобы оценить параметры камеры и возвратить stereoParameters объект.

Когда вы передаете stereoParameters возразите против функции, источник системы мировой координаты расположен в оптическом центре камеры 1. x - ось указывает направо, y - точки оси вниз и z - точки оси далеко от камеры.

Матрица проекции для камеры 1, заданный как 4 3 матрица. Матрица сопоставляет 3-D точку в однородных координатах на соответствующую точку в изображении камеры. Этот вход описывает местоположение и ориентацию камеры 1 в системе мировой координаты. cameraMatrix1 должна быть действительная и неразреженная числовая матрица. Можно получить матрицу камеры использование cameraMatrix функция.

Матрицы камеры передали функции, задайте систему мировой координаты.

Матрица проекции для камеры 1, заданный как 4 3 матрица. Матрица сопоставляет 3-D точку в однородных координатах на соответствующую точку в изображении камеры. Этот вход описывает местоположение и ориентацию камеры 1 в системе мировой координаты. cameraMatrix1 должна быть действительная и неразреженная числовая матрица. Можно получить матрицу камеры использование cameraMatrix функция.

Матрицы камеры передали функции, задайте систему мировой координаты.

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

свернуть все

3-D местоположения соответствия с парами неискаженных точек изображений, заданных как M-by-3 матрица. Матрица содержит количество M [x, y, z] местоположения соответствия с парами неискаженных точек изображений от двух стереоизображений.

Когда вы задаете геометрию камеры с помощью stereoParams, мировые координаты точки относительно оптического центра камеры 1.

Когда вы задаете геометрию камеры с помощью cameraMatrix1 и cameraMatrix2, мировые координаты точки заданы матрицами камеры.

Функция возвращает worldPoints как double, если matchedPoints1 и matchedPoints2 double. В противном случае функция возвращает worldPoints как single.

Типы данных: single | double

Ошибки перепроекции, возвращенные как M-by-1 вектор. Функциональные проекты каждая мировая точка назад в оба изображения. Затем в каждом изображении, функция вычисляет ошибку перепроекции как расстояние между обнаруженным и повторно спроектированной точкой. reprojectionErrors вектор содержит среднюю ошибку перепроекции для каждой мировой точки.

Советы

triangulate функция не составляет искажение объектива. Можно не исказить изображения с помощью undistortImage функция прежде, чем обнаружить точки. В качестве альтернативы можно не исказить сами точки с помощью undistortPoints функция.

Ссылки

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

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

Введенный в R2014b