Это старая версия (1.16) КаскадХаара.

Содержание

Каскад Хаара

Формально говоря, каскад Хаара выполняет задачу классификации ‒ разделения множества объектов на классы. В нашем случае объекты - это входные изображения. А класса всего два: искомый объект и все остальное. Говоря проще, каскад Хаара принимает на вход изображение и выдает один из двух ответов: "да" и "нет".

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

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

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

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



Чтобы вычислить значение конкретного признака Хаара для какого-либо изображения, надо сложить яркости пикселей изображения в первой и второй группах прямоугольных областей по отдельности, а затем вычесть из первой полученной суммы вторую. Полученная разность и есть значение конкретного признака Хаара для данного изображения. В математической форме это будет выглядеть так: a sub i = sum from {i={y sub a sub i}} to {{y sub a sub i}+{h sub a sub i}-1}
~~
sum from {j^=^{x sub a sub i}} to {{x sub a sub i}+{w sub a sub i}-1} x sub {i j}
~~~~~~~~
b sub i = sum from {i={y sub b sub i}} to {{y sub b sub i}+{h sub b sub i}-1}
~~
sum from {j^=^{x sub b sub i}} to {{x sub b sub i}+{w sub b sub i}-1} x sub {i j}
~~~~~~~~ h = sum from {i ^ = ^ 1} to {{N sub a}} {a sub i}
- sum from {i ^ = ^ 1} to {{N sub b}} {b sub i}
~,

где x sub ij \*- яркость пискеля изображения с координатами \[i, j\], a sub i \*- сумма яркостей пикселей в i-й области первой группы, b sub i \*- сумма яркостей пикселей в i-й области второй группы, h \*- значение признака Хаара для этого изображения, h sub a sub i \*- высота i-й области первой группы, w sub a sub i \*- ширина i-й области первой группы, h sub b sub i \*- высота i-й области второй группы, w sub b sub i \*- ширина i-й области второй группы, N sub a \*- количество областей первой группы, N sub b \*- количество областей второй группы, а h \*- значение признака Хаара для этого изображения.