invertedImageIndex

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

    Описание

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

    Создание

    Описание

    пример

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

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

    Свойства

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

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

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

    Вхождение Word в виде M-by-1 вектор. Вектор содержит процент изображений, в которых происходит каждое визуальное слово. Эти проценты походят на частоту документа в текстовых приложениях извлечения. 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.
    

    Задайте изображение запроса и ROI, чтобы искать целевой объект, слона.

    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 функция, чтобы выбрать ROI в интерактивном режиме. Например, 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] Сивич, J. и А. Зиссермен. Видео Google: текстовое извлечение приближается, чтобы возразить соответствию в видео. ICCV (2003) пг 1470-1477.

    [2] Philbin, J. O. Приятель, М. Исард, Й. Сивич и А. Зиссермен. Объектное извлечение с большими словарями и быстро пространственное соответствие. CVPR (2007).

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