triangulate

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

Описание

пример

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

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

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

[worldPoints,reprojectionErrors,validIndex] = 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');

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

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

свернуть все

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

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

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

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

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

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

Проекционная матрица для камеры 2, заданная как матрица 4 на 3. Матрица преобразует 3-D точку в однородных координатах в соответствующую точку изображения с камеры. Этот вход описывает расположение и ориентацию камеры 2 в мировой системе координат. cameraMatrix2 должна быть действительной и неразборчивой числовой матрицей. Вы можете получить матрицу камеры, используя 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. Функции, проецирующие каждый мир, возвращаются к обоим изображениям. Затем в каждом изображении функция вычисляет ошибку репроекции как расстояние между обнаруженной и перепроектированной точкой. The reprojectionErrors вектор содержит среднюю ошибку репроекции для каждой мировой точки.

Валидность мировых точек, возвращенная как M-на-1 логический вектор. Действительные точки, обозначаемые как логическое 1 (true), расположены перед камерами. Недопустимые точки, обозначаемые как логическое 0 (false), расположены за камерами.

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

Совет

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

Ссылки

[1] Хартли, Р. и А. Зиссерман. «Несколько видов геометрии в Компьютерное Зрение». Cambridge University Press, стр. 312, 2003.

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

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