invertedImageIndex

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

    Описание

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

    Создание

    Описание

    пример

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

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

    Свойства

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

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

    Визуальные слова в виде M - вектор элемента из visualWords объекты. M является количеством индексируемых изображений в invertedImageIndex объект. Каждый visualWords объект содержит WordIndexместоположение , VocabularySize, и Count свойства для соответствующего индексируемого изображения.

    Вхождение Word в виде N - столбец элемента. Столбец содержит процент изображений, в которых происходит каждое визуальное слово. Эти проценты походят на частоту документа в текстовых приложениях извлечения.

    Чтобы уменьшать поисковый набор, при поиске самых соответствующих изображений, можно подавить наиболее распространенные слова. Можно также подавить редкие слова, которые вы подозреваете, прибывают из выбросов в наборе изображений.

    Можно управлять, насколько верхний и нижний конец визуального распределения слова влияет на результаты поиска путем настройки WordFrequencyRange свойство.

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

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

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

    Индексируемые идентификаторы изображений в виде вектора из целых чисел, которые однозначно определяют индексируемые изображения. Для визуальных рабочих процессов SLAM можно установить значение ImageID равняйтесь значению ViewID из imageviewset при добавлении изображений. Используя тот же идентификатор для invertedImageIndex и imageviewset избавляет от необходимости индексировать то же изображение по-другому в каждом объекте.

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

    addImagesДобавьте новые изображения, чтобы отобразить индекс
    removeImagesУдалите изображения из индекса изображений
    addImageFeaturesДобавьте опции изображения, чтобы отобразить индекс

    Примеры

    свернуть все

    Задайте набор изображений, чтобы искать.

    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.
    
    * Creating a 1000 word visual vocabulary.
    * Number of levels: 1
    * Branching factor: 1000
    * Number of clustering steps: 1
    
    * [Step 1/1] Clustering vocabulary level 1.
    * Number of features          : 2944
    * Number of clusters          : 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, в котором можно искать целевой объект, слона. Можно также использовать imrect функция, чтобы выбрать ROI в интерактивном режиме. Например, queryROI = getPosition(imrect).

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

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

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

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

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

    Ссылки

    [1] Сивич, J. и А. Зиссермен. Видео Google: текстовое извлечение приближается, чтобы возразить соответствию в видео. ICCV (2003) пг 1470-1477.

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

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