Признаки Хаара
Признаки Хаара — это числовые характеристики, используемые в компьютерном зрении для распознавания объектов на изображениях, основанные на разности яркости между соседними прямоугольными областями. Они представляют собой простые шаблоны, имитирующие работу фильтров, и применяются в каскадных классификаторах для быстрого обнаружения объектов, таких как лица, автомобили, пешеходы и другие элементы.
История
Признаки Хаара были впервые предложены в 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')\) — яркость пикселя в исходном изображении. После построения интегрального изображения сумма яркостей в любом прямоугольнике вычисляется за четыре операции сложения/вычитания, независимо от его размера. Это позволяет быстро вычислять сотни и тысячи признаков Хаара на каждом этапе анализа.
Каскадный классификатор
Признаки Хаара используются в составе каскадного классификатора — многоступенчатой структуры, где на каждой ступени применяется набор слабых классификаторов (обычно на основе одного признака). Этапы каскада:
- Обучение — на большом наборе положительных (содержащих объект) и отрицательных (без объекта) изображений с помощью алгоритма AdaBoost выбираются наиболее информативные признаки Хаара. Каждый слабый классификатор обучается на одном признаке и даёт бинарный ответ (объект/не объект).
- Формирование каскада — несколько слабых классификаторов объединяются в ступени. На первой ступени используются самые простые признаки, которые быстро отбрасывают большую часть фона. Если окно проходит первую ступень, оно переходит к следующей, где применяются более сложные признаки. Каскад может содержать от 10 до 40 ступеней.
- Применение — на изображении скользящим окном (обычно размером 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 →