HOG для "обнаружения объекта" opencv

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

Мне нужно только реализовать детектор HOG для объектов.... Как то, что он делает SIFT или SURF

Btw, я не интересен в этой работе.

Спасибо..

Ответ 1

вы можете взглянуть на http://szproxy.blogspot.com/2010/12/testtest.html

он также опубликовал "учебник" для HOG на исходной ковке: http://sourceforge.net/projects/hogtrainingtuto/?_test=beta

Я знаю это, потому что у меня такая же проблема, как и у вас. Учебник, хотя это не то, что я бы назвал учебником, его кучей исходников, никакой документации, но я предполагаю, что он работает и может по крайней мере получить вас где-нибудь.

Ответ 2

В SystemView System Tool для MATLAB есть функция extractHOGFeatures.

Ответ 3

В конце и упрощая бит, все, что вам нужно для обнаружения определенных объектов на изображении, это:

  • Локализовать "точки интереса" для извлечения патчей:

Чтобы получить интересующие вас точки, вы можете использовать некоторые алгоритмы, такие как угловой детектор Harris, случайно или что-то вроде скользящих окон.

  • Из этих точек получают патчи:

Вам потребуется принять решение о размере исправления.

  • Из этих патчей вычисляет дескриптор функции. (например, HOG).

Вместо HOG вы можете использовать другой дескриптор функции, такой как SIFT, SURF...
Реализация HOG не слишком сложна. Вы должны вычислить градиенты извлеченного патча, применяя ядра Sobel X и Y, после чего вам нужно разделить патч в ячейках NxM, например 8x8, и вычислить гистограмму градиентов, угол и величину. В следующей ссылке вы можете увидеть более подробное объяснение:  Учебник HOG Person Detector

  • Проверьте свой вектор функции в ранее обученном классификаторе

Как только вы получили этот вектор, проверьте, является ли он желаемым объектом или нет, с ранее подготовленным классификатором, таким как SMV. Вместо SVM вы могли бы использовать NeuralNetworks, например.

Реализация SVM более сложна, но есть некоторые библиотеки, такие как opencv, которые вы можете использовать.