Открыть сервис

Признаки Хаара

Признаки Хаара — это числовые характеристики, используемые в компьютерном зрении для распознавания объектов на изображениях, основанные на разности яркости между соседними прямоугольными областями. Они представляют собой простые шаблоны, имитирующие работу фильтров, и применяются в каскадных классификаторах для быстрого обнаружения объектов, таких как лица, автомобили, пешеходы и другие элементы.

История

Признаки Хаара были впервые предложены в 2001 году учёными Полом Виолой и Майклом Джонсом в их работе «Rapid Object Detection using a Boosted Cascade of Simple Features». До этого в компьютерном зрении для распознавания объектов использовались более сложные методы, например, на основе пиксельных сравнений или преобразований, которые требовали значительных вычислительных ресурсов. Виола и Джонс предложили использовать набор простых прямоугольных признаков, которые можно быстро вычислить с помощью интегрального представления изображения. Этот подход позволил достичь высокой скорости обработки (до 15 кадров в секунду) при приемлемой точности, что сделало возможным применение технологии в реальном времени, например, в системах видеонаблюдения и цифровых камерах.

Название «признаки Хаара» происходит от сходства с вейвлетами Хаара — математическими функциями, предложенными венгерским математиком Альфредом Хааром в 1909 году. Однако в работе Виолы и Джонса эти признаки не являются вейвлетами в строгом смысле, а представляют собой упрощённые шаблоны, вдохновлённые идеей разности яркостей.

Определение и виды

Признак Хаара вычисляется как разность суммы яркостей пикселей в тёмных и светлых прямоугольных областях шаблона. Формально для шаблона, состоящего из двух прямоугольников, значение признака равно:

\[ F = S_{\text{светлый}} - S_{\text{тёмный}} \]

где \(S\) — сумма яркостей пикселей в соответствующей области. Для трёх- и четырёхпрямоугольных шаблонов используются взвешенные суммы, нормированные так, чтобы общий вес признака был равен нулю.

Основные типы признаков

Виола и Джонс выделили три основных типа прямоугольных признаков, которые стали стандартом:

  • Двухпрямоугольные признаки — состоят из двух смежных прямоугольников одинакового размера. Различают горизонтальные (слева светлый, справа тёмный или наоборот) и вертикальные (сверху светлый, снизу тёмный) варианты. Они реагируют на перепады яркости вдоль границы.
  • Трёхпрямоугольные признаки — состоят из трёх прямоугольников, например, центральный светлый, а боковые тёмные (или наоборот). Такие признаки чувствительны к полосам или линиям (например, границам носа или глаз).
  • Четырёхпрямоугольные признаки — состоят из четырёх прямоугольников, расположенных в шахматном порядке. Они реагируют на перепады яркости по диагонали или на угловые структуры.

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

Вычисление и интегральное представление

Ключевое преимущество признаков Хаара — возможность быстрого вычисления с помощью интегрального представления изображения. Интегральное изображение — это матрица, каждый элемент которой равен сумме яркостей всех пикселей выше и левее данного. Для изображения размером \(W \times H\) интегральное изображение строится за один проход:

\[ I(x, y) = \sum_{x' \leq x, y' \leq y} p(x', y') \]

где \(p(x', y')\) — яркость пикселя в исходном изображении. После построения интегрального изображения сумма яркостей в любом прямоугольнике вычисляется за четыре операции сложения/вычитания, независимо от его размера. Это позволяет быстро вычислять сотни и тысячи признаков Хаара на каждом этапе анализа.

Каскадный классификатор

Признаки Хаара используются в составе каскадного классификатора — многоступенчатой структуры, где на каждой ступени применяется набор слабых классификаторов (обычно на основе одного признака). Этапы каскада:

  1. Обучение — на большом наборе положительных (содержащих объект) и отрицательных (без объекта) изображений с помощью алгоритма AdaBoost выбираются наиболее информативные признаки Хаара. Каждый слабый классификатор обучается на одном признаке и даёт бинарный ответ (объект/не объект).
  2. Формирование каскада — несколько слабых классификаторов объединяются в ступени. На первой ступени используются самые простые признаки, которые быстро отбрасывают большую часть фона. Если окно проходит первую ступень, оно переходит к следующей, где применяются более сложные признаки. Каскад может содержать от 10 до 40 ступеней.
  3. Применение — на изображении скользящим окном (обычно размером 24×24 пикселя) последовательно проверяются все возможные положения и масштабы. Для каждого окна вычисляются признаки Хаара, и если оно проходит все ступени каскада, то считается содержащим объект.

Каскадная структура обеспечивает высокую скорость: большинство окон отбрасываются на первых ступенях, и только потенциально содержащие объект проходят полную проверку.

Применение

Признаки Хаара нашли широкое применение в различных областях компьютерного зрения, особенно в задачах обнаружения объектов в реальном времени:

  • Обнаружение лиц — классическая задача, для которой изначально разрабатывался метод. Каскадные классификаторы на признаках Хаара используются в цифровых камерах, веб-камерах, системах видеонаблюдения и фоторедакторах (например, в OpenCV) для автоматической фокусировки на лицах, распознавания эмоций или подсчёта людей.
  • Обнаружение других объектов — метод адаптирован для распознавания автомобилей, пешеходов, дорожных знаков, номерных знаков, животных (например, кошек или собак) и даже жестов рук. Для каждого типа объектов обучается свой каскад на соответствующем наборе изображений.
  • Медицинская диагностика — в анализе медицинских изображений (рентгеновских снимков, МРТ) признаки Хаара используются для обнаружения аномалий, таких как опухоли или переломы, хотя в этой области чаще применяются более современные методы глубокого обучения.
  • Робототехника — в системах навигации и взаимодействия с окружающей средой для обнаружения препятствий или целей.

Преимущества и недостатки

Преимущества

  • Высокая скорость — благодаря интегральному представлению и каскадной структуре, классификатор может обрабатывать изображения в реальном времени (до 15–30 кадров в секунду на процессорах начала 2000-х годов).
  • Простота реализацииалгоритм не требует сложных математических вычислений и может быть реализован на недорогих аппаратных платформах.
  • Робастность к небольшим изменениям освещения — признаки Хаара основаны на разности яркостей, что делает их устойчивыми к равномерным изменениям освещённости после нормализации.

Недостатки

  • Чувствительность к повороту и масштабу — классификатор обучен на изображениях с определённым положением объекта. При значительном повороте (более 10–20 градусов) или изменении масштаба точность резко падает. Для решения этой проблемы используют многомасштабный анализ или вращение изображения.
  • Высокая ложноположительная частота — на сложных фонах (например, с текстурами или тенями) каскад может ошибочно обнаруживать объекты. Для снижения ложных срабатываний требуется тщательное обучение на разнообразных отрицательных примерах.
  • Ограниченная точность — по сравнению с методами глубокого обучения (например, свёрточными нейронными сетями), признаки Хаара уступают в точности распознавания, особенно на зашумлённых или низкоконтрастных изображениях.
  • Необходимость большого набора обучающих данных — для обучения каскада требуется тысячи положительных и десятки тысяч отрицательных изображений, что может быть трудоёмко.

Современное состояние

С развитием глубокого обучения и свёрточных нейронных сетей (CNN) в 2010-х годах признаки Хаара стали реже использоваться в качестве основного метода распознавания. Однако они остаются востребованными в задачах, где критичны низкие вычислительные затраты и простота реализации, например, во встраиваемых системах, на мобильных устройствах и в старых цифровых камерах. Библиотека OpenCV продолжает поддерживать каскадные классификаторы на признаках Хаара, и они по-прежнему применяются в образовательных проектах и прототипировании.

Источники

  • Viola, P., & Jones, M. (2001). Rapid Object Detection using a Boosted Cascade of Simple Features. Proceedings of the IEEE Computer Society Conference on Computer Vision and Pattern Recognition.
  • Viola, P., & Jones, M. (2004). Robust Real-Time Face Detection. International Journal of Computer Vision, 57(2), 137–154.
  • OpenCV documentation: Cascade Classifier Training.
  • Bradski, G., & Kaehler, A. (2008). Learning OpenCV: Computer Vision with the OpenCV Library. O'Reilly Media.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →