Pull to refresh

Оператор Local Binary Patterns в задаче классификации текстур

Reading time 3 min
Views 10K
Здравствуйте, уважаемые хабралюди!

В данной статье хотелось бы рассказать о сравнительно новом операторе, применяемом в задаче классификации текстур. Данная задача очень близка к задаче поиска, распознавания и классификации образов.

Оператор LBP может быть использован для поиска объекта на изображении (например лица), а также проверки этого объекта на принадлежность некоторому классу (верификация, распознавание эмоций, пола по лицу). Заинтересовавшихся милости прошу под кат.

Оператор LBP впервые был предложен T.Ojala в 1996 году. Он представляет собой эффективный оператор, который представляет каждый пиксель изображения в виде бинарного числа, зависящего от интенсивностей соседних пикселей изображения.

Этот оператор является эффективным в вычислительном плане, так как работает только с целочисленной арифметикой (это позволяет достигать real-time производительности в некоторых задачах), а также он инвариантен к изменениям яркости на изображении, вызванным съемкой в различных условиях освещения.

Что же представляет из себя LBP? Классический LBP, который применяется к пикселю изображения, использует восемь пикселей окрестности.



Он принимает центральный пиксель в качестве порога и сравнивает значение яркости в каждом пикселе окрестности с ним. Если это значение больше порога(или равное значение), то пиксель принимает значение 1. Если же меньше — 0. Полученное восьмибитное число характеризует окрестность пикселя. Всего вариантов таких чисел 2^8=256. Таким образом мы присвоили каждому пикселю изображения одну из 256 меток, характеризующих его. Далее из этих данных не составляет труда построить гистограмму и сравнивать текстуры по гистограммам LBP.

Однако хотелось бы использовать окрестности произвольного радиуса с произвольным числом значащих пикселей. В 2002 году был предложен метод eLBP (extended LBP), который удовлетворяет этим условиям. Теперь окрестность выглядит следующим образом:



Для нахождения значения яркости в точках произвольной окрестности пикселя используется билинейная интерполяция. То есть точке присваивается среднее взвешенное значение соседних пикселей. В остальном метод работает таким же образом, как классический LBP.

Однако видно, что с увеличением окрестности, увеличивается количество разрядов в числах, с которыми требуется вести работу. То есть для окрестности радиуса 2 из 16 точек требуется работать уже с числами, состоящими из 16 бит. И количество бинов гистограммы становится огромным. Через некоторое время было выяснено, что больше всего информации несут так называемые uniform patterns (к сожалению я так и не смог это перевести на русский язык, чтобы не резало слух). Суть заключается в том, что эти паттерны содержат не более определенного числа переходов от 0 к 1 в записи и наоборот. То есть числа 00011000 или 00000000 будут являться uniform patterns, а 00100100 — нет, если заданное число переходов — два (000переход11переход000 — uniform (2 перехода), 00переход1переход00переход1переход00 — нет(4 перехода).

Оператор LBP применяется как составная часть многих классификаторов. Самое простое применение — это составление гистограмм и сравнение их (я кратко затронул этот метод). Также он используется с такими алгоритмами машинного обучения, как SVM и AdaBoost. И если публика заинтересуется этими методами — это будет неплохой мотивацией к написанию новой статьи.

Огромное спасибо за внимание, надеюсь, что мой стиль изложения был достаточно прост для понимания.

— Литература:
Zhiguang Yang and Haizhou Ai — Demographic Classification with Local Binary Patterns
Tags:
Hubs:
+5
Comments 15
Comments Comments 15

Articles