Я реализую функции гистограммы ориентированного градиента из «Гистограммы ориентированных градиентов для обнаружения человека» и хочу визуализировать результат. Во всех документах об этих функциях используется стандартная визуализация, но я не могу найти описания того, как они генерируются. Буду признателен за пояснение или полезную ссылку.
Как функции HoG представлены графически?
Ответы (5)
Визуализации, которые вы видите в документах, можно интерпретировать следующим образом:
Дескриптор состоит из M*N ячеек, покрывающих окно изображения в сетке. Каждая ячейка представлена гистограммой ориентаций ребер, где число дискретизированных ориентаций ребер является параметром (обычно 9). Гистограмма ячеек визуализируется «звездой», показывающей силу ориентации ребер на гистограмме: чем сильнее определенная ориентация, тем длиннее она относительно других.
Обратите внимание, что существуют различные схемы нормализации: локальные схемы, в которых ячейка нормируется только по отношению к соседним ячейкам (как в оригинальной статье Далала-Триггса), или глобальные схемы, в которых длина ориентации нормируется по всем ячейкам. . Также обратите внимание, что некоторые авторы используют несколько локальных нормализации на ячейку (например, та, о которой я говорю ниже), но визуализация показывает только одну (или среднюю из них).
Код Matlab для оригинальной работы Felzenszwalb et al. визуализирует клетки, рисуя их поверх изображения, где сила визуализируется интенсивностью края, а не длиной. Вы можете найти его в пакете, который они дают здесь (DPM). Найдите функцию с именем HOGpicture.m.
В приведенном ниже примере показана модель велосипеда (из Felzenszwalb et al.) с HoG, состоящим из 7 * 11 ячеек, каждая из которых имеет 8 ориентаций.
Блог под названием Jurgenwiki есть пример кода (называемый get_hogdescriptor_visu()
) для визуализации дескрипторов HOG в OpenCV. В прошлом я копировал/вставлял код Jurgenwiki в файл C++, передал свои функции HOG в get_hogdescriptor_visu()
, и визуализация выглядела довольно хорошо. Вот пример:
Одно из предостережений кода Jurgenwiki заключается в том, что он предполагает, что вы будете использовать параметры HOGDescriptor()
по умолчанию (например, блоки 16x16, ячейки 8x8, 9 ячеек ориентации). Однако, если вы используете пользовательские параметры в своем HOGDescriptor
, вы можете настроить код Jurgenwiki, чтобы он соответствовал вашим параметрам HOG.
Этот пост StackOverflow тоже очень полезен.
Недавно в iccv 2013 была опубликована статья (HOGles) о визуализации функций HOG, которая может оказаться весьма полезной, код доступен здесь http://web.mit.edu/vondrick/ihog/#code
scikit-image также обеспечивает визуализацию HOG: http://scikit-image.org/docs/dev/auto_examples/plot_hog.html
Здесь я хочу задать один вопрос, что два кадра последовательности идущего человека, и мы извлекаем HOG из каждого изображения, а затем берем разницу обоих HOG. Я хочу знать, какую информацию мы получаем в окончательной (разнице) визуализации HOG.
Спасибо