extractHOGFeatures

Извлечение гистограммы ориентированных градиентов функции

Описание

пример

features = extractHOGFeatures(I) возвращает извлеченные функции HOG из truecolor или полутонового входного изображения, I. Функции возвращаются в векторе 1 байт- N, где N - длина функции HOG. Возвращённые функции кодируют информацию о локальной форме из областей внутри изображения. Можно использовать эту информацию для многих задач, включая классификацию, обнаружение и отслеживание.

пример

[features,validPoints] = extractHOGFeatures(I,points) возвращает функции, извлеченные вокруг заданных местоположений точек. Функция также возвращается validPoints, который содержит местоположения входных точек, окружающая область которых полностью содержится в I. Информация о шкале, связанная с точками, игнорируется.

пример

[___, visualization] = extractHOGFeatures(I,___) необязательно возвращает HOG функции визуализацию, используя любой из предыдущих синтаксисов. Отобразить эту визуализацию можно используя plot(visualization).

[___] = extractHOGFeatures(___,Name,Value) использует дополнительные опции, заданные одним или несколькими аргументами в виде пар Имя, Значение, используя любой из предыдущих синтаксисов.

Примеры

свернуть все

Прочитайте интересующее вас изображение.

img = imread('cameraman.tif');

Извлечение функций HOG.

[featureVector,hogVisualization] = extractHOGFeatures(img);

Постройте график функций HOG по оригинальному изображению.

figure;
imshow(img); 
hold on;
plot(hogVisualization);

Figure contains an axes. The axes contains 3 objects of type image, line.

Прочитайте интересующее вас изображение.

I1 = imread('gantrycrane.png');

Извлечение функций HOG.

[hog1,visualization] = extractHOGFeatures(I1,'CellSize',[32 32]);

Отобразите оригинальное изображение и функции HOG.

subplot(1,2,1);
imshow(I1);
subplot(1,2,2);
plot(visualization);

Figure contains 2 axes. Axes 1 contains 2 objects of type line. Axes 2 contains an object of type image.

Читайте в интересующем вас изображении.

I2 = imread('gantrycrane.png');

Обнаружите и выберите самые сильные углы на изображении.

corners   = detectFASTFeatures(im2gray(I2));
strongest = selectStrongest(corners,3);

Извлечение функций HOG.

[hog2,validPoints,ptVis] = extractHOGFeatures(I2,strongest);

Отобразите оригинальное изображение с наложением HOG функций вокруг самых сильных углов.

figure;
imshow(I2);
hold on;
plot(ptVis,'Color','green');

Figure contains an axes. The axes contains 6 objects of type image, line, rectangle.

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

свернуть все

Изображение входа, определенное или в M <reservedrangesplaceholder2>-by-3 truecolor или в M N 2-ми оттенками серого. Изображение входа должно быть вещественным, неразборчивым значением. Если у вас плотно обрезанные изображения, можно потерять информацию о форме, которую может закодировать функция HOG. Можно избежать потери этой информации, включив дополнительный запас пикселей вокруг закрашенной фигуры, который содержит фоновые пиксели.

Типы данных: single | double | int16 | uint8 | uint16 | logical

Центральная точка расположения квадратного района, заданная как BRISKPoints, SURFPoints, MSERRegions, ORBPoints или cornerPoints объект или M -by-2 матрица M количеством координат [x, y]. Функция извлекает дескрипторы из районов, которые полностью содержатся в контуре изображения. Вы можете задать размер окрестности с BlockSize параметр. Для определения допустимых выходных точек используются только полностью содержащиеся в изображении окрестности. Функция игнорирует информацию о шкале, связанную с этими точками.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'BlockSize', [2 2] устанавливает BlockSize чтобы быть квадратным блоком 2 на 2.

Размер камеры HOG, заданный в пикселях как вектор с 2 элементами. Чтобы захватить крупномасштабную пространственную информацию, увеличьте размер камеры. Когда вы увеличиваете размер камеры, вы можете потерять мелкие детали.

Количество камер в блоке, заданное как вектор с 2 элементами. Большое значение размера блока уменьшает способность подавлять локальные изменения освещения. Из-за количества пикселей в большом блоке эти изменения могут быть потеряны при усреднении. Уменьшение размера блока помогает захватить значимость локальных пикселей. Меньший размер блока может помочь подавить изменения освещения функций HOG.

Количество перекрывающихся камер между соседними блоками, заданное как вектор с 2 элементами. Чтобы гарантировать адекватную нормализацию контраста, выберите перекрытие размером не менее половины блока. Большие значения перекрытия могут захватывать больше информации, но они дают больший размер вектора функции. Это свойство применяется только при извлечении функций HOG из областей, а не из местоположений точек. При извлечении функций HOG вокруг местоположения точки используется только один блок, и, таким образом, перекрытия не происходит.

Количество интервалов гистограммы ориентации, заданное как положительная скалярная величина. Чтобы закодировать более мелкие детали ориентации, увеличьте количество интервалов. Увеличение этого значения увеличивает размер вектора функции, что требует большего времени для обработки.

Выбор значений ориентации, заданный как логический скаляр. Когда вы устанавливаете это свойство на trueзначения ориентации равномерно расположены в интервалах между -180 и 180 степенями. Когда вы устанавливаете это свойство на false, они равномерно расположены между 0 и 180. В этом случае значения theta, которые меньше 0, помещаются в интервал значений theta + 180. Используя подписанную ориентацию может помочь дифференцировать свет-к-темному против темных к свету переходов в области изображения.

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

свернуть все

Извлеченные признаки HOG, возвращенные как вектор 1-бай- N или P матрица -by- Q. Эти функции кодируют информацию о локальной форме из областей или из точек в изображении. Можно использовать эту информацию для многих задач, включая классификацию, обнаружение и отслеживание.

features выходОписание
1-by- N векторДлина признака HOG, N, основана на размере изображения и значениях параметров функции.
N = prod([BlocksPerImage, BlockSize, NumBins])
BlocksPerImage = floor((size(I). / CellSizeBlockSize). / (BlockSizeBlockOverlap) + 1)
P -by - Q матрицаP - это количество допустимых точек, окружающая область которых полностью содержится в входе изображении. Вы предоставляете points входное значение для извлечения местоположений точек.
Окружающая область вычисляется как:
CellSize.* BlockSize.
Длина вектора функции, Q, вычисляется как:
prod([NumBins, BlockSize]).

Пример 1. Расположение гистограмм в векторах функций HOG

Рисунок ниже показывает изображение с шестью камерами.

Если вы задаете BlockSize по [2 2], это сделает размер каждого блока HOG, 2 на 2 камеры. Размер камер указан в пикселях. Можно задать его с помощью CellSize свойство.

Вектор функции HOG организован блоками HOG. Гистограмма камеры, H (Cyx), является 1-бай- NumBins.

Рисунок ниже показывает вектор функции HOG с перекрытием камеры 1 на 1 между блоками.

Допустимые точки, сопоставленные с каждым features вывод вектора дескриптора. Этот выход может быть возвращен как cornerPoints объект, BRISKPoints, SURFPoints объект, MSERRegions объект, ORBPoints объект или M -by-2 матрица с координатами [x, y]. Функция извлекает M количество дескрипторов из допустимых процентных точек в области размера, равной [CellSize.* BlockSize]. Извлеченные дескрипторы возвращаются как тот же тип объекта или матрицы, что и вход. Область должна быть полностью размещена в изображении.

Функция HOG, возвращенная как объект. Функция выводит этот необязательный аргумент, чтобы визуализировать извлеченные функции HOG. Можно использовать plot метод с visualization выход. См. пример извлечения и построения графика функций HOG.

Функции HOG визуализируются с помощью сетки с равномерными интервалами rose графики. Размер камеры и размер изображения определяют размерности сетки. Каждый график розы показывает распределение градиентных ориентаций в камере HOG. Длина каждого лепестка графика розы масштабируется, чтобы указать вклад, который каждая ориентация вносит в гистограмму камеры. На графике отображаются направления ребер, перпендикулярные направлениям градиента. Просмотр графика с направлениями ребра позволяет лучше изучить форму и контуры, закодированные HOG. Каждый график розы отображается два раза NumBins лепестки.

Для построения графика функций HOG можно использовать следующий синтаксис:

plot(visualization) строит графики функций HOG как массив розовых графиков.
plot(visualization,AX) строит графики функций HOG в осях AX.
график (___, 'Color',Colorspec) Задает цвет, используемый для построения графика функций HOG, где Colorspec представляет цвет.

Ссылки

[1] Dalal, N. and B. Triggs. «Гистограммы ориентированных градиентов для обнаружения человека», IEEE Computer Society Conference on Компьютерное Зрение and Pattern Recognition, Vol. 1 (June 2005), pp. 886-893.

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

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.
Введенный в R2013b