Детектор Виолы-Джонса - сильный, двоичный классификатор , состоящий из нескольких слабых детекторов
Each weak detector is an extremely simple binary classifier
На этапе обучения, каскад слабых детекторовобучается так, чтобы получить желаемую частоту попаданий / промах (или точность / отзыв) с использованием Adaboost. Для обнаружения объектов исходное изображение разбивается на несколько прямоугольных участков, каждый из которых передается в каскад
Еслипрямоугольный участок изображения проходит через все каскадные стадии, затем он классифицируется как «положительный». Процесс повторяется в разных масштабах
![enter image description here](https://i.stack.imgur.com/K1TpT.png)
На самом деле, при низкойУровень, основной компонент детектора объекта - это просто то, что нужно сказать, если определенная подобласть исходного изображения содержит историю интересующего объекта или нет.Это то, что делает двоичный классификатор.
Базовый, слабый классификатор основан на очень простой визуальной функции (такие функции часто называют «хаар-подобными функциями»)
![enter image description here](https://i.stack.imgur.com/ssXnC.png)
Хаар-подобные объекты состоят из класса локальных объектов, которые рассчитываются путем вычитания суммы субрегиона объекта из суммы оставшейся области объекта .
![enter image description here](https://i.stack.imgur.com/dIaGt.png)
Эти особенности характеризуются тем, что их легко рассчитать и с помощью интегрального изображения очень эффективно рассчитать.
Lienhart представил расширенный наборскрученной хаароподобной функции (см. изображение)
![enter image description here](https://i.stack.imgur.com/r4K9G.png)
Это стандартная хаароподобная функция, которая была повернута на 45 градусов.Изначально Lienhart не использовал функцию Haar-подобной скрученной шахматной доски (x2y2), поскольку представляемые ими диагональные элементы могут быть просто представлены с использованием скрученных функций, однако очевидно, что витая версия этой функции также может быть реализована и использована,
Эти скрученные функции, подобные Хаару, также можно быстро и эффективно рассчитать с использованием интегрального изображения, повернутого на 45 градусов.Единственная проблема реализации заключается в том, что скрученные объекты должны быть округлены до целых значений, чтобы они были выровнены по границам пикселей.Этот процесс аналогичен округлению, используемому при масштабировании объекта типа Хаара для больших или меньших окон, однако одно отличие состоит в том, что для искривленного объекта под углом 45 градусов целое число пикселей, используемых для высоты и ширины объекта, означает, чтодиагональные координаты пикселя всегда будут на одном и том же диагональном наборе пикселей
![enter image description here](https://i.stack.imgur.com/HBTY8.png)
Это означает, что количество доступных изогнутых объектов различного размера под углом 45 градусов значительно уменьшено по сравнению со стандартными вертикалями игоризонтально выровненные объекты.
Итак, у нас есть что-то вроде: ![enter image description here](https://i.stack.imgur.com/nPGmL.png)
Что касается формулы, быстрое вычисление объектов типа Хаара с использованием интегральных изображений выглядит следующим образом:
![enter image description here](https://i.stack.imgur.com/V7x9c.png)
Наконец, - это реализация на C ++ , которая использует ViolaJones.h от Ivan Kusalic
, чтобы увидеть полный проект c ++ иди сюда