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 Preferences. Чтобы открыть настройки Computer Vision Toolbox™, на вкладке Home, в разделе Environment, нажимают Preferences. Затем выберите Computer Vision Toolbox.

Входные параметры

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

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

number of strongest features = 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 N вектором ширин блока N. Это свойство применяется только, когда вы не задаете пользовательский экстрактор с CustomExtractor свойство. Каждый элемент вектора соответствует размеру квадратного блока, из которого функция извлекает вертикальные дескрипторы SURF. Используйте несколько размеров квадратов, чтобы извлечь многошкальные функции. Весь заданный квадрат используется в каждой экстракции точки на сетке. Это свойство только применяется, когда вы устанавливаете PointSelection к 'Grid'. Блок width соответствует шкале функции. Минимальный 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 18/100 iterations (~0.43 seconds/iteration)...converged in 18 iterations.

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

      CustomExtractor: @exampleBagOfFeaturesExtractor
       VocabularySize: 500
    StrongestFeatures: 0.8000

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

Введенный в R2014b