03Haar概念及其原理
1、什么是图像的特征(本质:像素的运算结果):像素通过运算之后得到的某一个结果(这个结果可以是个具体的值,也可以是向量,矩阵,多维向量等等)
2、如何利用特征来区分目标(分类):阈值判决(如果特征大于某一个阈值,则可认为值目标,相反则为非目标),判决往往比特征计算要难
3、如何得到判决:通过机器学习来得到判决门限,再根据计算得到的特征来进行判决
haar特征主要分为以下三大类:

基础模板中的第一种:

以上蓝色背景表面我们定义的图片,黑白就是特征模板
公式:
特征 = 白色-黑色
特征 = 整个区域权重+黑色权重
特征 = (p1 - p2 - p3 + p4) * w
其中:特征 = 整个区域 * 权重 + 黑色 * 权重(此时整个区域(黑白合起来)权重为:1,黑色权重为:-2,代入公式就符合第一公式)
第三的公式的介绍在后面
’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘

1、从上到下,从左到右依次遍历,要考虑步长,也就是图示黑白模板一次滑动几个像素
2、假设是100100图片,模板大小为1010,步长为10,那个上下,左右各滑动9次,加上原来所占的位置,也就是10,次,那么一共就需要计算100次
3、对于一个模板,需要进行几级缩放才能计算完,比如1010的模板,进行缩放可能就是1111,得到新的模板仍然需要从上到下,从左到右依次遍历,如果是20级,那就需要缩放20次
4、例子:图片大小1080720;haar模板滑动2个像素,即步长2;原始模板大小1010 ;缩放20级;haar特征共有14个模板
那么其计算量:14个模板20级缩放(1080/2 * 720/2) * (100个点的加减运算) = 50到100亿次
如果视频是15帧每秒,那么就大概需要计算(50到100亿次)*15 = 1000亿次
由于存在计算量大的问题,那么积分图可以很好解决这个问题,减小计算量,但是对于高清图片,这个计算量还是非常大的
’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘
积分图的概念:

注意:图中区域C包括A,区域B包括A,区域D包括A、B、C
特征 = (p1 - p2 - p3 + p4) * w 也就是
特征 = (A - B- C + D) * w 得到方框1-2-3-4
每个方块都可以是其相邻的方块计算得到,这样只需要进行3次加减得到,大大减少计算量。