indexImages

Создайте индекс поиска изображений

Описание

пример

imageIndex = indexImages(imds) создает invertedImageIndex объект, imageIndex, это содержит поисковый индекс для imds. Используйте imageIndex с retrieveImages функционируйте, чтобы искать изображения.

пример

imageIndex = indexImages(imds,bag) возвращает поисковый индекс, который использует пользовательский bagOfFeatures объект, bag. Используйте этот синтаксис с bag вы создали, когда это необходимо, чтобы изменить количество визуальных слов, или тип функции раньше создавал индекс поиска изображений для imds.

imageIndex = indexImages(___,Name,Value) дополнительные опции использования заданы одним или несколькими Name,Value парные аргументы, с помощью любого из предыдущих синтаксисов.

Эти параллельные вычисления поддержки объектов с помощью нескольких рабочих MATLAB®. Включите параллельные вычисления из диалогового окна Computer Vision Toolbox Preferences. Чтобы открыть настройки Computer Vision Toolbox™, на вкладке Home, в разделе Environment, нажимают Preferences. Затем выберите Computer Vision Toolbox .

Примеры

свернуть все

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

setDir  = fullfile(toolboxdir('vision'),'visiondata','imageSets','cups');
imds = imageDatastore(setDir);

Индексируйте набор изображений.

imageIndex = indexImages(imds)
Creating an inverted image index using Bag-Of-Features.
-------------------------------------------------------

Creating Bag-Of-Features.
-------------------------

* Selecting feature point locations using the Detector method.
* Extracting SURF features from the selected feature point locations.
** detectSURFFeatures is used to detect key points for feature extraction.

* Extracting features from 6 images...done. Extracted 1708 features.

* Keeping 80 percent of the strongest features from each category.

* Balancing the number of features across all image categories to improve clustering.
** Image category 1 has the least number of strongest features: 1366.
** Using the strongest 1366 features from each of the other image categories.

* Using K-Means clustering to create a 20000 word visual vocabulary.
* Number of features          : 1366
* Number of clusters (K)      : 1366

* Initializing cluster centers...100.00%.
* Clustering...completed 1/100 iterations (~0.03 seconds/iteration)...converged in 1 iterations.

* Finished creating Bag-Of-Features


Encoding images using Bag-Of-Features.
--------------------------------------

* Encoding 6 images...done.
Finished creating the image index.
imageIndex = 
  invertedImageIndex with properties:

         ImageLocation: {6x1 cell}
            ImageWords: [6x1 vision.internal.visualWords]
         WordFrequency: [1x1366 double]
         BagOfFeatures: [1x1 bagOfFeatures]
        MatchThreshold: 0.0100
    WordFrequencyRange: [0.0100 0.9000]

Отобразите набор изображений с помощью montage функция.

thumbnailGallery = [];
for i = 1:length(imds.Files)
    I = readimage(imds,i);
    thumbnail = imresize(I,[300 300]);
    thumbnailGallery = cat(4,thumbnailGallery,thumbnail);
end

figure
montage(thumbnailGallery);

Выберите изображение запроса.

queryImage = readimage(imds,2);
figure
imshow(queryImage)

Ищите набор изображений подобное изображение с помощью изображения запроса. Лучший результат является первым.

indices = retrieveImages(queryImage,imageIndex)
indices = 5×1

     2
     1
     5
     3
     4

bestMatchIdx = indices(1);

Отобразите лучшее соответствие от набора изображений.

bestMatch = imageIndex.ImageLocation{bestMatchIdx}
bestMatch = 
'/mathworks/devel/bat/BR2019bd/build/matlab/toolbox/vision/visiondata/imageSets/cups/blueCup.jpg'
figure
imshow(bestMatch)

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

setDir  = fullfile(toolboxdir('vision'),'visiondata','imageSets','cups');
imgSets = imageSet(setDir, 'recursive');

Изображение на дисплее установлено.

thumbnailGallery = [];
for i = 1:imgSets.Count
    I = read(imgSets, i);
    thumbnail = imresize(I, [300 300]);
    thumbnailGallery = cat(4, thumbnailGallery, thumbnail);
end

figure
montage(thumbnailGallery);

Обучите набор признаков с помощью пользовательского экстрактора функции.

extractor = @exampleBagOfFeaturesExtractor;
bag = bagOfFeatures(imgSets,'CustomExtractor',extractor);
Creating Bag-Of-Features.
-------------------------
* Image category 1: cups
* Extracting features using a custom feature extraction function: exampleBagOfFeaturesExtractor.

* Extracting features from 6 images in image set 1...done. Extracted 115200 features.

* Keeping 80 percent of the strongest features from each category.

* Using K-Means clustering to create a 500 word visual vocabulary.
* Number of features          : 92160
* Number of clusters (K)      : 500

* Initializing cluster centers...100.00%.
* Clustering...completed 21/100 iterations (~0.22 seconds/iteration)...converged in 21 iterations.

* Finished creating Bag-Of-Features

Используйте обученный набор признаков, чтобы индексировать набор изображений.

imageIndex = indexImages(imgSets,bag,'Verbose',false) 
imageIndex = 
  invertedImageIndex with properties:

         ImageLocation: {6x1 cell}
            ImageWords: [6x1 vision.internal.visualWords]
         WordFrequency: [1x500 double]
         BagOfFeatures: [1x1 bagOfFeatures]
        MatchThreshold: 0.0100
    WordFrequencyRange: [0.0100 0.9000]

queryImage = read(imgSets,4);

figure
imshow(queryImage)

Ищите изображение от индекса изображений с помощью изображения запроса.

indices = retrieveImages(queryImage,imageIndex);
bestMatch = imageIndex.ImageLocation{indices(1)};
figure
imshow(bestMatch)

Входные параметры

свернуть все

Изображения, заданные как imageDatastore объект. Объектно-ориентированная память набор изображений.

Мешок визуальных слов, заданных как bagOfFeatures объект.

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'Verbose'TRUE устанавливает 'Verbose' свойство к true

Сохраните местоположения функции, заданные как разделенная запятой пара, состоящая из 'SaveFeatureLocations'и логический скаляр. Когда установлено в true, местоположения функции изображений сохранены в imageIndex выведите объект. Используйте данные о местоположении, чтобы проверить пространственные или геометрические результаты поиска изображений. Если вы не требуете местоположений функции, установите это свойство на ложь уменьшать потребление памяти.

Отобразите информацию прогресса, указанную как разделенная запятой пара, состоящая из 'Verbose'и логический скаляр.

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

свернуть все

Отобразите поисковый индекс, возвращенный как invertedImageIndex объект.

Алгоритмы

imageIndex использует среду набора признаков с детектором ускоренных устойчивых функций (SURF) и экстрактором, чтобы изучить словарь 20 000 визуальных слов. Визуальные слова затем используются, чтобы создать индекс, который сопоставляет визуальные слова с изображениями в imds. Можно использовать индекс, чтобы искать изображения в imds это похоже на данное изображение запроса.

Представленный в R2015a

Для просмотра документации необходимо авторизоваться на сайте