exponenta event banner

bagOfFeatures

Сумка визуальных слов объект

Описание

Управляйте коллекциями изображений и разделяйте их на обучающие и проверочные наборы. Можно создать пакет визуальных слов для использования в классификации категорий изображений. Обучение и классификация включают поддержку Parallel Computing Toolbox™.

Создание

Описание

пример

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

bag = bagOfFeatures(imds,'CustomExtractor',extractorFcn) возвращает пакет элементов, который использует пользовательскую функцию извлечения элементов для извлечения элементов из изображений в imds. extractorFcn является дескриптором функции для пользовательской функции извлечения элементов.

bag = bagOfFeatures(imds,Name,Value) задает свойства, используя одну или несколько пар имя-значение. Заключите каждое имя свойства в кавычки. Например, bag = bagOfFeatures('Verbose',true)

Этот объект поддерживает параллельные вычисления с использованием нескольких работников MATLAB ®. Включите параллельные вычисления в диалоговом окне «Настройки панели инструментов Computer Vision». Чтобы открыть настройки Toolbox™ компьютерного зрения, на вкладке Главная в разделе Среда щелкните Настройки. Затем выберите Инструмент компьютерного зрения (Computer Vision Toolbox).

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

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

Изображения, указанные как ImageDatastore объект. bagOfFeatures извлекает равное количество самых сильных элементов из изображений, содержащихся в imds объект.

количество наиболее сильных признаков = min(количество элементов, найденных в каждом наборе) x StrongestFraction(1)
Объект получает StrongestFraction значение из 'StrongestFeatures' собственность.

Пользовательская функция извлечения элементов, задающая разделенную запятыми пару, состоящую из 'CustomExtractorи дескриптор функции. Эта пользовательская функция извлекает элементы из выходных данных bagOfFeatures объект для изучения визуального словаря объекта.

Функция, extractorFcn, должен быть указан как дескриптор функции для файла:

extractorFcn = @exampleBagOfFeaturesExtractor;
bag = bagOfFeatures(imds,'CustomExtractor',extractorFcn)
где exampleBagOfFeaturesExtractor является функцией MATLAB. Например:
function [features,featureMetrics] = exampleBagOfFeaturesExtractor(img)
...
Функция должна находиться в пути или в текущей рабочей папке.

Дополнительные сведения о пользовательской функции экстрактора и ее требованиях к вводу и выводу см. в разделе Создание пользовательского экстрактора элементов.

Можно открыть файл примера функции и использовать его в качестве шаблона, введя следующую команду в командной строке MATLAB:

edit('exampleBagOfFeaturesExtractor.m')

Свойства

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

Пользовательская функция извлечения элементов, заданная как дескриптор функции. Пользовательская функция извлечения элементов извлекает элементы, используемые для изучения визуального словаря для bagOfFeatures. Необходимо указать 'CustomExtractor'и дескриптор функции, extractorFcn, к пользовательской функции извлечения элементов.

Функция, extractorFcn, должен быть указан как дескриптор функции для файла:

extractorFcn = @exampleBagOfFeaturesExtractor;
bag = bagOfFeatures(imds,'CustomExtractor',extractorFcn)
где exampleBagOfFeaturesExtractor является функцией MATLAB, такой как:
function [features,featureMetrics] = exampleBagOfFeaturesExtractor(img)
...
Функция должна находиться в пути или в текущей рабочей папке.

Дополнительные сведения о пользовательской функции экстрактора и ее требованиях к вводу и выводу см. в разделе Создание пользовательского экстрактора элементов. Можно открыть файл примера функции и использовать его в качестве шаблона, введя следующую команду в командной строке MATLAB:

edit('exampleBagOfFeaturesExtractor.m')

Количество визуальных слов для включения в bagOfFeatures объект, указанный как разделенная запятыми пара, состоящая из 'VocabularySize'и целочисленный скаляр в диапазоне [2, inf]. VocabularySize значение соответствует K в алгоритме кластеризации K-средних (Statistics and Machine Learning Toolbox), используемом для квантования признаков в визуальный словарь.

Доля наиболее сильных элементов, указанная как разделенная запятыми пара, состоящая из 'StrongestFeaturesи значение в диапазоне [0,1]. Значение представляет долю наиболее сильных элементов, используемых из каждой метки в imds вход.

Включить отображение хода выполнения на экране, указанное как разделенная запятыми пара, состоящая из 'Verbose«и логическое» true или false.

Метод выбора расположений точек комплектации для извлечения элемента SURF, указанный как разделенная запятыми пара, состоящая из 'PointSelection«и либо» 'Grid' или 'Detector'. Существует два этапа извлечения элементов. Сначала выбирается метод выбора местоположений точек (SURF). 'Detector' или 'Grid'), с PointSelection собственность. На втором этапе извлекаются элементы. Извлечение элемента использует экстрактор SURF для обоих методов выбора точек.

При установке PointSelection кому 'Detector', точки признаков выбираются с помощью ускоренного датчика надежности признаков (SURF). В противном случае точки выбираются на предопределенной сетке с интервалом, определяемым "GridStep'. Это свойство применяется только в том случае, если пользовательский экстрактор не указан с помощью CustomExtractor собственность.

Размер шага сетки в пикселях, указанный как разделенная запятыми пара, состоящая из 'GridStep"и вектор 1 на 2 [x y ]. Это свойство применяется только при установке PointSelection кому 'Grid' и вы не указываете пользовательский экстрактор с помощью CustomExtractor собственность. Шаги в направлениях x и y определяют интервал однородной сетки. Пересечения линий сетки определяют местоположения для извлечения элементов.

Размер исправления для извлечения вертикального дескриптора SURF, указанного как разделенная запятыми пара, состоящая из 'BlockWidthи вектор 1-by-N шириной N блоков. Это свойство применяется только в том случае, если пользовательский экстрактор не указан с помощью CustomExtractor собственность. Каждый элемент вектора соответствует размеру квадратного блока, из которого функция извлекает вертикальные дескрипторы SURF. Используйте несколько квадратных размеров для извлечения многомасштабных элементов. Все указанные квадраты используются для каждой точки извлечения на сетке. Это свойство применяется только при установке PointSelection кому 'Grid'. Ширина блока соответствует масштабу элемента. Минимум BlockWidth равен 32 пикселям.

Ориентация вектора элемента SURF, заданного как разделенная запятыми пара, состоящая из 'Uprightи логический скаляр. Это свойство применяется только в том случае, если пользовательский экстрактор не указан с помощью CustomExtractor собственность. Установить для этого свойства значение true если не требуется оценивать ориентацию векторов элементов SURF. Установить для него значение false при необходимости использования дескрипторов изображений для сбора информации о повороте.

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

encodeСоздание гистограммы вхождений визуальных слов

Примеры

свернуть все

Загрузите два набора изображений.

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

Выберите первые два изображения из каждого набора изображений для создания обучающих наборов.

trainingSets = partition(imgSets,2);

Создайте пакет элементов. Этот процесс может занять несколько минут.

bag = bagOfFeatures(trainingSets,'Verbose',false);

Вычислите гистограмму вхождений визуальных слов для одного из изображений. Сохраните гистограмму как вектор элемента.

img = read(imgSets(1),1);
featureVector = encode(bag,img);

Загрузите набор изображений.

setDir  = fullfile(toolboxdir('vision'),'visiondata','imageSets');
imds = imageDatastore(setDir,'IncludeSubfolders',true,'LabelSource',...
    'foldernames');

Укажите пользовательский экстрактор элементов.

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

* Extracting features from 12 images...done. Extracted 230400 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          : 184320
* Number of clusters (K)      : 500

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

* Finished creating Bag-Of-Features
bag = 
  bagOfFeatures with properties:

      CustomExtractor: @exampleBagOfFeaturesExtractor
       VocabularySize: 500
    StrongestFeatures: 0.8000

Расширенные возможности

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