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

Здравствуйте, уважаемые хабралюди!

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

Оператор 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
Ads
AdBlock has stolen the banner, but banners are not teeth — they will be back

More

Comments 15

    0
    а расскажите как вы применяете это дело? какие результаты?
      0
      Ну пока что никак почти. В данный момент в моем модуле только распознавание лиц на видео с использованием Adaboost на слабых классификаторах этого метода (собственно то, что реализовано в OpenCV). Метод понравился, решил чуть лучше изучить вопрос и поделиться здесь. Сейчас нахожусь в процессе понимания способа построения слабых классификаторов и сильного классификатора на их базе. Об этом с примерами и результатами я обязательно расскажу позже.
      0
      Очень интересно. Спасибо. Интересный способ.
      Думаю не хватает картинки и результата рядом. Придется самому смотреть — проверять что получится.
      Для визуального отображения результата можно попробовать использовать полученный 8-битный результат переведя его в ч/б цвет. Что получится?
        0
        Такие картинки есть, когда буду рассматривать классификаторы — добавлю их, спасибо за замечание. Но по моему скромному мнению эти картинки не очень содержательны.
        0
        А как этот оператор дружит с масштабированием и поворотом изображения? что-то мне кажется, что поворот уже на 5 градусов кардинально изменит гистограмму
          +1
          Для инвариантности к вращению используются uniform patterns. При этом, к рассмотрению берутся только паттерны вида:
          10000000
          11000000
          11100000
          11110000
          11111000
          11111100
          11111110
          11111111
          И все их циклические сдвиги (всего 58 кодов).
          Поскольку каждый uniform patterns является сдвигом одной из перечисленных комбинаций, то каждому из этих паттернов можно присвоить номер комбинации (8 штук). И этот номер уже будет инвариантным к вращению.
            0
            Для инвариантности к масштабированию используют одновременно несколько операторов разных масштабов. Например lbp(8,1), lbp(16,2), lbp(24,3). После чего точно так же проводят классификацию. Но чаще просто производят масштабирование текущего региона поиска (или классифицируемого изображения) к фиксированному размеру.
            0
            Через некоторое время было выяснено, что больше всего информации несут так называемые uniform patterns (к сожалению я так и не смог это перевести на русский язык, чтобы не резало слух).


            Однородные паттерны (шаблоны)?
              0
              Быть может «однообразные» тут подойдет лучше? Однородность — довольно сложное понятие как по мне.
              0
              Автор, тема интересная, но не раскрытая. Нужны примеры гистограмм, картинки, примеры классификации. Ведь этот метод на самом деле очень мощный (особенно вместе с HOG). Например, было бы интересно увидеть программу для автоматической классификации изображений. Это как раз та задача, с которой LBP хорошо справляется.
                0
                В этой статье я попытался не касаться вопроса классификации, потому что не до конца разобрался со всеми основными методами классификации, использующими этот оператор. А рассказывать только о поиске по гистограммам было бы не очень хорошо с точки зрения разбиения темы на логические части.
                  0
                  круто, жду статьи про классификаторы, которые используют этот метод!
                0
                Интересно было бы посмотреть как метод работает на стереопарах. Может попробуете.
                  0
                  Что бы Вы хотели от этого метода в приминении к стереопарам? Быть может это будет интересно.
                    0
                    Стандартная задача нахождения соответствия. Хорошо расписано здесь. Нужно искать одинаковые фрагменты на двух фотографиях, снятых с различных ракурсов.

                Only users with full accounts can post comments. Log in, please.