exponenta event banner

invertedImageIndex

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

    Описание

    Один invertedImageIndex объект - это поисковый индекс, хранящий визуальное сопоставление «слово-изображение». Этот объект можно использовать с помощью retrieveImages для поиска изображения.

    Создание

    Описание

    пример

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

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

    Свойства

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

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

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

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

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

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

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

    Диапазон частот слов, определяемый как двухэлементный вектор нижнего и верхнего процента, [нижний верхний]. Используйте диапазон частот слов, чтобы игнорировать общие слова (верхний процентный диапазон) или редкие слова (нижний процентный диапазон) в индексе изображения. Эти слова часто встречаются в виде повторяющихся шаблонов или отклонений и могут снизить точность поиска. Можно управлять тем, насколько верхний и нижний конец распространения визуальных слов влияет на результаты поиска, настроив 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 для поиска целевого объекта elephant.

    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] Сивич, Дж. и А. Зиссерман. Видео Google: Поиск текста подход к совпадению объектов в видео. ICCV (2003) pg 1470-1477.

    [2] Филбин, Дж., О. Чум, М. Изард, Дж. Сивич и А. Зиссерман. Извлечение объектов с большими словарями и быстрым пространственным согласованием. CVPR (2007).

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