worldpointset

Управление 3-D для 2-D соответствий точек

Описание

The worldpointset объект хранит соответствия между 3-D точками мира и 2-D точками изображения между полями зрения камеры. Можно использовать worldpointset объект со imageviewset объект для управления данными изображений и карт для структуры от движения, визуальной одометрии и визуальной одновременной локализации и картографии (SLAM).

Создание

Синтаксис

Описание

пример

wpSet = worldpointset создает объект worldpointset со свойствами по умолчанию. Используйте функции объекта для выполнения таких действий, как добавление, изменение или удаление соответствий, поиск точек в представлении и поиск представлений точек.

Свойства

расширить все

Это свойство доступно только для чтения.

3D мировые точки, определенные как матрица <reservedrangesplaceholder4>-by-3 со строками , содержащими [<reservedrangesplaceholder3> <reservedrangesplaceholder2> <reservedrangesplaceholder1>] мировые точки. M - количество 3-D мировых точек.

Это свойство доступно только для чтения.

Идентификаторы для представлений, связанных с мировыми точками, заданные как вектор-строка N-element из целых чисел.

Это свойство доступно только для чтения.

Количество 3-D мировых точек, заданное как скаляр.

Это свойство доступно только для чтения.

3-D с 2-D соответствиями, заданные как трехколоночная таблица.

СтолбецОписание
PointIndexКаждая строка содержит линейный индекс мировой точки.
ViewIdКаждая строка содержит вектор с N 1 байт, задающий идентификаторы представлений, связанных с соответствующими мировыми точками. N - количество представлений, сопоставленных с мировой точкой.
FeatureIndexКаждая строка содержит вектор с N 1 байт, задающий индексы точек функции, которые соответствуют мировой точке. Каждый элемент является индексом точки функции в виде, заданном соответствующим элементом в ViewID камера.

Функции объекта

addWorldPointsДобавьте мировые точки в мировой набор точек
removeWorldPointsУдалите мировые точки из набора мировых точек
updateWorldPointsОбновление мировых точек в мировом наборе точек
addCorrespondencesОбновление мировых точек в наборе мировых точек
removeCorrespondencesУдалите 3-D для 2-D соответствий из мирового набора точек
updateCorrespondencesОбновите 3-D, чтобы 2-D соответствия в мировом наборе точек
findViewsOfWorldPointНайдите взгляды, которые наблюдают мировую точку
findWorldPointsInTracksНайдите мировые точки, которые соответствуют точечным трекам
findWorldPointsInViewНайти мировые точки, наблюдаемые в виду

Примеры

свернуть все

Загрузка MAT-файл, содержащий стереофонические параметры в рабочую область.

load('webcamsSceneReconstruction.mat');

Считайте стерео пары изображений в рабочую область.

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

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

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

Задайте интересующую прямоугольную область (ROI) в формате [x y width height].

roi = [30 30 size(I1,2)-30 size(I1,1)-30];

Обнаружение и извлечение ускоренных робастных функций (SURF) из обоих изображений с помощью информация только для чтения.

imagePoints1 = detectSURFFeatures(im2gray(I1),'ROI',roi);
imagePoints2 = detectSURFFeatures(im2gray(I2),'ROI',roi);
  
[feature1,validPoints1] = extractFeatures(im2gray(I1),imagePoints1,'Upright',true);
[feature2,validPoints2] = extractFeatures(im2gray(I2),imagePoints2,'Upright',true);

Сопоставить извлечённые функции друг с другом.

indexPairs = matchFeatures(feature1,feature2);

Вычислите 3-D мировые точки.

matchedPoints1 = validPoints1(indexPairs(:,1));
matchedPoints2 = validPoints2(indexPairs(:,2));
worldPoints    = triangulate(matchedPoints1,matchedPoints2,stereoParams);

Создайте worldpointset объект для управления соответствиями.

wpSet = worldpointset;

Добавьте мировые точки к worldpointset.

[wpSet,newPointIndices] = addWorldPoints(wpSet,worldPoints);

Добавьте 3-D к 2-D соответствиям точек к worldpointset.

wpSet = addCorrespondences(wpSet,1,newPointIndices,indexPairs(:,1));
wpSet = addCorrespondences(wpSet,2,newPointIndices,indexPairs(:,2));

Отобразите мировые точки.

pcshow(wpSet.WorldPoints,'VerticalAxis','y','VerticalAxisDir','down','MarkerSize',45)

Введенный в R2020b