HOG Трилинейная интерполяция бинов гистограммы - PullRequest
8 голосов
/ 04 июля 2011

Я работаю над функциями гистограммы ориентированного градиента (HOG) и пытаюсь реализовать трилинейную интерполяцию бинов гистограммы, как описано в диссертации доктора Далала.И он объясняет процесс интерполяции, как указано ниже:

РЕДАКТИРОВАТЬ: Грубо говоря, функции HOG извлекаются из окна 64x128 пикселей, которое разделено на блоки.Каждый блок состоит из 2х2 ячеек, а ячейка имеет площадь 8х8 пикселей.Извлечение начинается с вычисления производных первого порядка изображения, затем вычисляются ориентация и величина каждого пикселя.Гистограмма ориентации в блоке для каждой ячейки пикселя 8x8 рассчитывается, когда пиксели вносят вклад в гистограмму со значением величины, основываясь на ориентации пикселя, а величина интерполируется между соседними центрами бина по ориентации и положению.Гистограмма содержит 9 бинов и представляет 0-180 градусов с шагом 20 градусов.Общее описание алгоритма можно увидеть здесь: http://4.bp.blogspot.com/_7NBDeKCsVHg/TKBbldI8GmI/AAAAAAAAAG0/G-OXUz1ouPQ/s1600/a1.bmp

Сначала мы опишем линейную интерполяцию в одномерном пространстве, а затем расширим ее до 3-D.Пусть h будет гистограммой с расстоянием между бинами (полосой пропускания) b.h (x) обозначает значение гистограммы для бина с центром в точке x.Предположим, что мы хотим интерполировать вес w в точке x в гистограмму.Пусть x1 и x2 - два ближайших соседних бина точки x, такие что x1 ≤ x

Пусть w в трехмерной точке x = [x, y, z] - вес, который необходимо интерполировать.Пусть x1 и x2 - два угловых вектора куба гистограммы, содержащего x, где в каждом компоненте x1 ≤ x

.

Мы вычисляем гистограмму для ячеек, и каждый пиксель вносит свой вклад в гистограмму со своим значением.,Из формулировки я понимаю, что x и y представляют расположение ячеек в окне обнаружения, а z - номер ячейки.В окне обнаружения 64x128 есть 8x16 ячеек и 9 ячеек ориентации, поэтому наша гистограмма представлена ​​как h (8,16,9).Если приведенные выше утверждения верны, представляют ли (x1, y1) и (x2, y2) предыдущую и буквенную ячейки соответственно?Z1 и z2 означают предыдущие и буквенные ячейки ориентации?Как насчет пропускной способности b = [bx, by, bz]?

Буду очень признателен, если кто-нибудь сможет прояснить эти вопросы.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 04 июля 2011

Думайте о (x1, y1, z1) и (x2, y2, z2) как о двух точках, охватывающих куб, который окружает точку (x, y, z), для которой вы хотите интерполировать значение h. Набор из восьми точек (x1, y1, z1), (x2, y1, z1), (x1, y2, z1), (x1, y1, z2), (x2, y2, z1), (x2, y1, z2), (x1, y2, z2), (x2, y2, z2) образуют полный куб. Таким образом, трилинейная интерполяция между (x1, y1, z1) и (x2, y2, z2) фактически означает интерполяцию между 8 точками в пространстве трехмерной гистограммы, окружающим интересующую вас точку! Теперь на ваши вопросы:

(x1, y1), (x2, y2) (и (x1, y2) и (x2, y1) представляют центры бинов в плоскости (x, y). В вашем случае это были бы векторы ориентации .

z1 и z2 представляют два уровня бина в направлении ориентации, как вы говорите. В сочетании с четырьмя точками на плоскости изображения это дает в общей сложности 8 ячеек.

Ширина полосы b = [bx, by, bz] - это, в основном, расстояние между центрами соседних элементов разрешения в направлении x, y и z. В вашем случае с 8 ячейками в направлении x и 64 пикселями в этом направлении, 16 ячейками в направлении y и 128 пикселями в направлении y:

bx = 8 pixels
by = 8 pixels

Это оставляет bz, для которого мне действительно нужно больше данных, потому что я не знаю полного диапазона вашего градиента (то есть от минимального до максимального возможного значения), но если этот диапазон равен rg, то:

bz = rg/9

Как правило, ширина полосы в любом направлении равна полному доступному диапазону в этом направлении, деленному на количество элементов разрешения в этом направлении.

Для хорошего объяснения трилинейной интерполяции с изображениями посмотрите ссылку в ответ whoplisp .

3 голосов
/ 04 июля 2011

Давайте сначала посмотрим на прямоугольный HOG.Изображение разделено на несколько фрагментов, как показано на стр. 32. На стр. 46 показан дескриптор R-HOG в (f).Страница 49 объясняет, как данные объединяются.

Я узнал, как выполнить 3D-интерполяцию, прочитав статью Пола Бёрка: http://paulbourke.net/miscellaneous/interpolation/

Извините, мне пришлось бы создавать свои собственные изображения,для того, чтобы понять, что происходит.Это, безусловно, интересная техника.

...