bagOfFeatures

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

Описание

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

Создание

Описание

пример

bag = bagOfFeatures(imds) возвращает набор признаков. The 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 объект. The 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]. The 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 вектор [x y] 1 на 2. Это свойство применяется только при установке 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