imageviewset

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

Описание

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

Создание

Синтаксис

Описание

пример

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

Свойства

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

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

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

СтолбецОписание
ViewIdПросмотрите идентификатор для представления в виде уникального целого числа
AbsolutePoseАбсолютное положение представления в виде rigid3d объект.
FeaturesХарактеристические векторы в виде M-by-N матрица характеристических векторов M или как 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Проверяйте, установлена ли связь между двумя представлениями в поле зрения
findViewНайдите представления сопоставленными с идентификаторами представления
findConnectionНайдите связи сопоставленными с идентификаторами представления
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