上一篇讨论了Haar变换,并且引出了一个问题,当模板大小、形状不同时,Haar特征数量将会非常庞大。利用haar特征进行目标物体识别时,通常是取一个一定大小的滑动检测窗口,然后计算该滑窗内的Haar特征,得到特征后与训练数据进行比较后得到分类结果。滑窗的大小将决定Haar特征的数量,根据Paul Viola《Rapid Object Detection Using a Boosted Cascade of Simple Features》所述,当滑窗大小为24×24时,其矩形特征将超过180000个,从而引入了积分图加速计算。
1.积分图(Intergral Image)
积分图的定义:位于坐标(x,y)出的积分为该坐标左上方所以像素之和,
即,
积分图递归式子:
其中 表示行累积和,初始条件
且
,如图1所示:
![](https://i-blog.csdnimg.cn/blog_migrate/c3d8ccad0109cccaa0d7eae103fad3ea.jpeg)
积分图的作用使得任何矩形区域求和都可以由四个积分值计算得到,如图2所示,
![](https://i-blog.csdnimg.cn/blog_migrate/1f06e35276c0c5c98d671ea2b51862e4.jpeg)
图2中,坐标1的积分图为矩形区域A的所有像素和, 坐标2对应A+B, 坐标3对应A+C, 坐标4对应 A+B+C+D,要计算D区域的累加和则可以由 得到。
在使用Haar特征进行图像目标检测中,计算滑窗内的中一个haar特征如图3所示。
![](https://i-blog.csdnimg.cn/blog_migrate/27dba5833561f8df460cc9e6d62e6ef9.jpeg)
图3(a)为我们需要计算的Haar模板,图3(b)表示滑窗,假定计算m×n的区域内的haar特征。不采用积分图计算,则需要首先计算区域A所以像素和,再计算区域B的像素和,然后用, 及计算复杂度为
, 而采用积分图,计算复杂对仅为
,