exponenta event banner

imageviewset

Управление данными для структуры от движения, визуальной одометрии и визуального SLAM

Описание

imageviewset объект управляет атрибутами представления и попарно связями между представлениями данных, используемых в структуре от движения, визуальной одометрии и данных одновременной локализации и отображения (SLAM). Атрибуты просмотра могут быть описателями элементов, точками элементов или абсолютными позициями камеры. Попарные связи между видами могут быть совпадениями точек, относительными позициями камеры или информационной матрицей. Этот объект можно также использовать для поиска точечных дорожек, используемых triangulateMultiview и bundleAdjustment функции.

Создание

Синтаксис

Описание

пример

vSet = imageviewset() возвращает объект imageviewset. Можно добавить виды и соединения с помощью addView и addConnection функции объекта.

Свойства

развернуть все

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

Просмотр атрибутов, заданных в виде таблицы из трех столбцов. Таблица содержит столбцы, как описано в этой таблице.

КолонкаОписание
ViewIdИдентификатор представления, указанный как уникальное целое число
AbsolutePoseАбсолютная поза вида, указанная как rigid3d объект.
FeaturesВекторы признаков, заданные как матрица M-на-N векторов признаков или как binaryFeatures.
Points

Точки изображения, указанные как один из следующих параметров:

  • M-by-2 матрица координат в формате [x, y]

  • Массив точек элемента M-элемента.

Дополнительные сведения см. в разделе Типы элементов точек.

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

Парные соединения между представлениями, заданными в виде таблицы из четырех столбцов. Таблица содержит столбцы, как описано в этой таблице. Каждая строка соответствует одному соединению.

КолонкаОписание
ViewId1Идентификатор представления для первого представления, указанный как уникальное целое число.
ViewId2Идентификатор представления для второго представления, указанного как уникальное целое число.
RelativePoseОтносительная позиция второго вида относительно первого вида, указанного как rigid3d или affine3d объект. При указании affine3d объект, относительная поза должна представлять 3-D преобразование подобия.
InformationMatrixИнформационная матрица, заданная как матрица 6 на 6 при указании RelativePoseв качестве rigid3d объект. При указании RelativePose как affine3d объект, InformationMatrix должна быть матрицей 7 на 7. Информационная матрица представляет неопределенность ошибки измерения и является обратной от ковариационной матрицы.
MatchesИндексы совпадающих характерных точек между двумя представлениями, заданными как M-by-2 матрица.

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

Число представлений, указанное как неотрицательное целое число.

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

Число подключений, указанное как неотрицательное целое число.

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

addViewДобавление видов в набор видов
updateViewОбновить представление в наборе представлений
deleteViewУдалить представление из набора представлений
hasViewПроверка наличия представления в наборе представлений
addConnectionДобавление соединения между видами в наборе представлений
updateConnectionОбновление связи между представлениями в наборе представлений
deleteConnectionУдаление соединения между представлениями в наборе представлений
hasConnectionПроверка наличия соединения между двумя представлениями в наборе представлений
connectedViewsВозврат связанных представлений
posesАбсолютные позы, связанные с представлениями в наборе представлений
createPoseGraphСоздать график позы
findTracksПоиск совпадающих точек в нескольких представлениях
optimizePosesОптимизация абсолютных поз с использованием зависимостей относительных поз
plotНабор видов печати и соединения

Примеры

свернуть все

Загрузка изображений в рабочую область.

imageDir = fullfile(toolboxdir('vision'),'visiondata','structureFromMotion');
images = imageDatastore(imageDir);

Вычислить элементы для первого изображения.

I = im2gray(readimage(images,1));
pointsPrev = detectSURFFeatures(I);
[featuresPrev,pointsPrev] = extractFeatures(I,pointsPrev);

Создайте набор видов изображений и добавьте в него один вид.

vSet = imageviewset;
vSet = addView(vSet,1,'Features',featuresPrev,'Points',pointsPrev);

Вычислите элементы и совпадения для остальных изображений.

for i = 2:numel(images.Files)
  I = im2gray(readimage(images, i));
  points = detectSURFFeatures(I);
  [features, points] = extractFeatures(I,points);
  vSet = addView(vSet,i,'Features',features,'Points',points);
  pairsIdx = matchFeatures(featuresPrev,features);
  vSet = addConnection(vSet,i-1,i,'Matches',pairsIdx);
  featuresPrev = features;
end

Поиск дорожек точек между видами в наборе видов изображения.

tracks = findTracks(vSet);
Представлен в R2020a