imageviewset

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

Описание

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

Создание

Синтаксис

Описание

пример

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

Свойства

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

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

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

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

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

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

  • M массив точек функции -element .

Для получения дополнительной информации см. раздел «Типы функций точек».

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

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

СтолбецОписание
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