invertedImageIndex

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

    Описание

    Система координат invertedImageIndex объект является поисковым индексом, который хранит визуальное отображение слова с изображением. Вы можете использовать этот объект с retrieveImages функция для поиска изображения.

    Создание

    Описание

    пример

    imageIndex = invertedImageIndex(bag) возвращает объект поискового индекса, который хранит визуальное отображение слова в изображение на основе входной сумки визуальных слов, bag. The bag аргумент устанавливает свойство BagOfFeatures.

    imageIndex = invertedImageIndex(bag,'SaveFeatureLocations',tf) опционально определяет, сохранять ли данные о местоположении функции в imageIndex. Когда вы задаете логическое значение tf как true, местоположения функций изображения сохраняются в imageIndex объект. Используйте данные о местоположении, чтобы проверить пространственные или геометрические результаты поиска изображения. Если вы не требуете расположения функций, уменьшите потребление памяти, указав tf как false.

    Свойства

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

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

    Визуальные слова, заданные как 1-бай- M вектор visualWords объекты для каждого индексированного изображения. The visualWords объект содержит WordIndex, Location, VocabularySize, и Count свойства для каждого индексированного изображения.

    Вхождение слова, заданное как вектор M -by-1. Вектор содержит процент изображений, в которых происходит каждое визуальное слово. Эти проценты аналогичны частоте документов в приложениях поиска текста. The WordFrequency свойство содержит процент изображений, в которых происходит каждое визуальное слово. Часто полезно подавлять наиболее распространенные слова, чтобы уменьшить набор поиска при поиске наиболее актуальных изображений. Также полезно подавлять редкие слова, поскольку они, вероятно, исходят от выбросов в наборе изображений.

    Можно управлять тем, насколько верхний и нижний конец визуального распределения слов влияет на результаты поиска, настраивая WordFrequencyRange свойство. Хороший способ задать это значение - построить график отсортированного WordFrequency значения.

    Сумка визуальных слов, заданная как bagOfFeatures объект, используемый в индексе.

    Процент одинаковых слов, требуемых между запросом и потенциальным изображением, задается в виде числового значения в области значений [0, 1]. Чтобы получить больше результатов поиска, уменьшите этот порог.

    Частотная область значений слов, заданный как двухэлементный вектор с более низким и верхним процентом [lower upper]. Используйте частотную область значений слов, чтобы игнорировать общие слова (верхняя процентная область значений) или редкие слова (нижняя процентная область значений) в индексе изображения. Эти слова часто происходят как повторные шаблоны или выбросы и могут снизить точность поиска. Можно управлять тем, насколько верхний и нижний конец визуального распределения слов влияет на результаты поиска, настраивая WordFrequencyRange свойство. Хороший способ задать это значение - построить график отсортированного WordFrequency значения.

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

    addImagesДобавьте новые изображения к индексу изображений
    removeImagesУдалите изображения из индекса изображения

    Примеры

    свернуть все

    Задайте набор изображений для поиска.

    imageFiles = ...
      {'elephant.jpg', 'cameraman.tif', ...
       'peppers.png',  'saturn.png',...
       'pears.png',    'stapleRemover.jpg', ...
       'football.jpg', 'mandi.tif',...
       'kids.tif',     'liftingbody.png', ...
       'office_5.jpg', 'gantrycrane.png',...
       'moon.tif',     'circuit.tif', ...
       'tape.png',     'coins.png'};
    
    imgSet = imageSet(imageFiles);

    Изучите визуальный словарь.

    bag = bagOfFeatures(imgSet,'PointSelection','Detector',...
      'VocabularySize',1000);
    Creating Bag-Of-Features.
    -------------------------
    * Image category 1: <undefined>
    * 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 16 images in image set 1...done. Extracted 3680 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: 2944.
    ** Using the strongest 2944 features from each of the other image categories.
    
    * Using K-Means clustering to create a 1000 word visual vocabulary.
    * Number of features          : 2944
    * Number of clusters (K)      : 1000
    
    * Initializing cluster centers...100.00%.
    * Clustering...completed 17/100 iterations (~0.06 seconds/iteration)...converged in 17 iterations.
    
    * Finished creating Bag-Of-Features
    

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

    imageIndex = invertedImageIndex(bag);
    
    addImages(imageIndex, imgSet);
    Encoding images using Bag-Of-Features.
    --------------------------------------
    * Image category 1: <undefined>
    * Encoding 16 images from image set 1...done.
    
    * Finished encoding images.
    

    Укажите изображение запроса и информация только для чтения для поиска целевого объекта, слона.

    queryImage = imread('clutteredDesk.jpg');
    queryROI = [130 175 330 365]; 
    
    figure
    imshow(queryImage)
    rectangle('Position',queryROI,'EdgeColor','yellow')

    Figure contains an axes. The axes contains 2 objects of type image, rectangle.

    Можно также использовать imrect функция для интерактивного выбора информация только для чтения. Для примера, queryROI = getPosition(imrect).

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

    imageIDs = retrieveImages(queryImage,imageIndex,'ROI',queryROI)
    imageIDs = 15×1
    
         1
        11
         2
         6
        12
         8
        16
         3
        13
        14
          ⋮
    
    
    bestMatch = imageIDs(1);
    
    figure
    imshow(imageIndex.ImageLocation{bestMatch})

    Figure contains an axes. The axes contains an object of type image.

    Ссылки

    [1] Сивич, Дж. И. Зиссерман. Видео Google: Подход поиска текста к соответствию объектов в видео. ICCV (2003) стр. 1470-1477.

    [2] Philbin, J., O. Chum, M. Isard, J. Sivic, and A. Zisserman. Поиск объектов с большими словарями и быстрым пространственным совпадением. CVPR (2007).

    Введенный в R2015a