OpenCV Haar Cascade Training Метод на Виола-Джоунс
Намирането на обект в цифрово изображение е една от приоритетните задачи в областта на разпознаването на изображения с помощта на библиотеката OpenCV.
Тази статия разглежда математическите основи на метода на Виола-Джоунс и процеса на намиране и разпознаване на буквите на регистрационните табели с помощта на OpenCV и детектора на Хаар.
Относно детектора на Haar и библиотеката OpenCV
Принцип на действие
Класификаторът се формира върху примитиви на Haar чрез изчисляване на стойностите на характеристиките. За обучение, набор от „правилни“ изображения с предварително избрана област върху изображението първо се подава към входа на класификатора, след това примитивите се сортират и се изчислява стойността на атрибута. Изчислените стойности се записват във файл в xml формат.
Малко математика
Принципи на метода на Виола-Джоунс
В момента методът на Виола-Джоунс е популярен метод за намиране на обект в изображение поради високата си скорост и ефективност. Методът на Виола-Джоунс се основава на: интегралното представяне на изображението чрез характеристиките на Хаар, изграждането на класификатор, базиран на алгоритъма за адаптивно усилване, и метод за комбиниране на класификатори в каскадна структура. Тези идеи позволяват търсене на обекти в реално време. Нека ги разгледаме по-подробно.
Интегралното представяне на изображението е матрица, която е със същия размер като оригиналното изображение. Всеки елемент от матрицата съхранява сумата от интензитети на всички пиксели, разположени вляво и над този елемент - долния десен ъгъл на правоъгълната област (0,0) до (x, y). Елементите на матрицата L могат да бъдат изчислени по формулата:
Изчисляването на стойностите на елементите на матрицата отнема време, пропорционално на броя на пикселите в оригиналното изображение, така че интегралното изображение се изчислява за един проход.
Матричните елементи се изчисляват по формулата:
L (x, y) = I (x, y) + L (x-1, y-1) + L (x, y-1) + L (x-1, y)
Използвайки интегралното представяне на изображението, можете бързо да изчислите общата яркост на произволна правоъгълна област в изображението. Пример за изчисление е даден в допълнение 1.
На етапа на откриване на обект в метода на Виола-Джоунс се използва прозорец с определен размер, който се движи върху изображението. За всяка област от изображението, през която преминава прозорецът, се изчислява характеристиката Haar, с помощта на която се извършва търсенето на желания обект.
Картографиране на характеристиките, където Df е набор от допустими стойности на характеристиката. Ако са дадени характеристики f1,…, fn, тогава векторът на характеристиките x = (f1 (x),…, fn (x)) се нарича описание на обекта x. Описанията на характеристиките могат да бъдат съпоставени със самите обекти. Множеството X = Df1 * ... * Dfn се нарича пространство на атрибутите [1].
Функциите са разделени на следните типове в зависимост от зададената Df:
- двоична характеристика, Df =;
- номинална характеристика: Df - краен набор;
- редови атрибут: Df - краен подреден набор;
- количествена характеристика: Df - набор от реални числа.
Haar се изчислява върху съседни правоъгълни области. Стандартният метод на Виола-Джоунс използва правоъгълни примитиви, показани на фигура 1.
Фигура 1 - Примитиви на Хаар

Изчислената стойност F на характеристиката на Haar ще бъде
където X е сумата от стойностите на яркостта на точките, обхванати от светлата част на примитива, Y е сумата от стойностите на яркостта на точките, обхванати от тъмната част. За изчислението се използва обсъдената по-горе концепция за интегрално изображение и характеристиките на Haar могат да бъдат изчислени бързо, в постоянно време. Използването на характеристиките на Haar дава точкова стойност на разликата в яркостта, съответно по осите X и Y.
Тъй като характеристиките на Haar не са много подходящи за обучение или класификация, се изискват повече характеристики, за да се опише обект с достатъчна точност. Следователно характеристиките на Haar влизат в каскадния класификатор, който служи за бързо изхвърляне на прозорци, където не е намерен необходимият обект, и връща резултата „true“ или „false“ относно местоположението на обекта.
Класификаторът е изграден въз основа на алгоритъма за усилване (от англ.тласък- подобрение, подобрение), за да изберете най-подходящите функции за желания обект в тази част на изображението. В общия случай усилването е набор от методи, които подобряват точността на аналитичните модели. Ефективен модел, който допуска няколко грешки в класификацията, се нарича „силен“. „Слаб“, от друга страна, не ви позволява надеждно да разделяте класове или да правите точни прогнози и прави голям брой грешки. Следователно, усилването означава „укрепване“ на „слаби“ модели и е процедура за последователно конструиране на композиция от алгоритми за машинно обучение, когато всеки следващ алгоритъм се стреми да компенсира недостатъците в състава на всички предишни алгоритми.
В резултат на ускоряващия алгоритъм при всяка итерация се формира прост класификатор на формата:
p_j е посоката на знака за неравенство, θ_j е праговата стойност, f_j (z) е изчислената стойност на характеристиката, z е прозорецът на изображението от 24 × 24 пиксела.
Полученият класификатор има минимална грешка по отношение на текущите стойности на тежестите, използвани в тренировъчната процедура за определяне на грешката.