Haar特征

最简单的利用特征区分目标就是使用阈值判决。

那好,先解决什么是Haar特征

上面蓝色背景代表(目标)定义图片,黑白特征是harr特征;

将当前的黑白模板放到图像的任意位置上,假设模板大小为10x10矩阵,覆盖100个像素大小,黑色50个像素点,白色50个像素点;

则:将白色区域在目标图片上所得的50个像素和-黑色区域的像素和=特征;

或:整个区域的像素在目标图片上所得的100个像素和

整体像素权重为1;黑色像素权重为-2;

harr特征遍历图像过程:假设图像模板10x10大小,图片是100x100大小。模板沿着图片水平和垂直方向滑动,从上到下,从左到右遍历一次。

在遍历过程中还要考虑到步长问题,也就是说模板一次滑动几个像素,如每次滑动10个像素,则需要滑动9次,加上最开始位置的1次,则水平竖直方向共计100个这样的模板;

当然,有时候有的人脸可能小,有的可能很大,10x10的窗口可能检测不到,出现漏检的情况。这时就需要缩放;这时遍历子窗口进行了等比例的放大,那么矩形特征(a、b、c、d、e)也要进行一定比例的放大。然后计算Harr特征向量,再判别记录。

       如此循环计算,直到子窗口大小达到不超过原始图像的最大尺寸。然后,再将所有记录过的人脸的进行标记,由于人脸区域在不同尺度的窗口中可能会有重复检测到,所以需要将重叠检测到的人脸区域合并起来成为一个区域并标记。

举例计算过程:

如一个1080*720的图片;模板大小10*10;步长为2;缩放20级;

若想对图片进行实时处理的话,每秒钟不能低于15帧每秒;

一张图片需要1000亿次才能将Harr特征计算完毕;计算完成还需要判决等操作;因此计算量非常大;

国外大神提出基于积分图的计算方式,能减少这种运算量;

 积分图计算

A区域只包含自己,B区域包涵AB两部分,C区域包涵AC两部分;D包涵四个方框之和;

1代表A区域,2代表B-A区域;3代表C-A区域;4代表最右边小方框区域。

则计算4区域像素可以由原来的(10*10=100)变成下面原理;将10*10的运算变成3次加减运算得到;

但是在最先开始计算时,还是需要全部遍历一次像素,在后面再次计算时,才能采用相邻区域计算

Harr算法与AdaBoost级联分类器一般是一起使用:

原文地址:https://www.cnblogs.com/fcfc940503/p/11338529.html