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 37/100 iterations (~0.30 seconds/iteration)...converged in 37 iterations.

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

      CustomExtractor: @exampleBagOfFeaturesExtractor
       VocabularySize: 500
    StrongestFeatures: 0.8000

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

Введенный в R2014b