Почему DLIB вычисляет квадратный корень универсального дескриптора LBP?

Я использую библиотеку dlib для извлечения униформы LBP из данного изображения. Я использую следующую функцию (http://dlib.net/dlib/image_transforms/lbp_abstract.h.html#extract_uniform_lbp_descriptors), но я не совсем понимаю, какова функция третьего параметра (cell_size). В документации сказано следующее:

Мы возьмем квадратный корень из всех элементов гистограммы. То есть #feats[i] — это квадратный корень из числа LBP, появившихся в соответствующем окне.

Я не знаю, когда говорится, что «#feats[i] — это квадратный корень из числа LBP». Что ссылаетесь? Если кто-нибудь может мне помочь, я был бы признателен... Спасибо!


person Jaime Menendez Llana    schedule 23.05.2016    source источник


Ответы (2)


См. описание LBP на странице https://en.wikipedia.org/wiki/Local_binary_patterns.

На самом деле вы делите изображение на квадратные ячейки и строите 59-битную гистограмму для каждой ячейки, сравнивая каждую точку в ячейке с ее соседями. Третий параметр (cell_size) определяет размер этих ячеек. Затем гистограммы всех ячеек объединяются в длинный 59*(количество ячеек) результирующий вектор std::vector& feats.

person Ilya Ovodov    schedule 23.05.2016

Широко признано, что использование ядра квадратного корня (Хеллингера) вместо стандартного евклидова расстояния для измерения сходства между распределениями признаков повышает точность классификации.

Для двух гистограмм LBP

х

а также

у

их расстояние по Хеллингеру определяется как:

Н(х,у)

Классификатор ядра Хеллингера может быть реализован простым способом, используя квадратный корень из гистограмм LBP в качестве векторов признаков и евклидово расстояние в качестве меры несходства. Вот почему количество LBP в эталонном коде имеет квадратный корень.

person Tonechas    schedule 26.05.2017