exponenta event banner

треугольный

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

Координаты точек на изображении 2, заданные как матрица M-by-2 М числа координат [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 функция.

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

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

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

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

свернуть все

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

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

При указании геометрии камеры с помощью cameraMatrix1 и cameraMatrix2координаты мировых точек определяются матрицами камеры.

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

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

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

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

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

Совет

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

Ссылки

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

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

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