OpenCV中的Haar+Adaboost(二):积分图和45°旋转积分图
来源:互联网 发布:qq三国js点智力 编辑:程序博客网 时间:2024/06/06 03:14
缩进前一篇文章分析了Haar特征,即通过“平移+放大”能够产生一系列数量巨大的Haar子特征,同时给出了Haar特征值计算公式。那么这就有一个问题:如何快速的计算出图像任意位置的某个Haar特征值?这就需要用到本节介绍的积分图。
缩进以OpenCV自带的人脸分类器haarcascade_frontalface_alt2.xml为例,其中存储了超过1000个大小和位置都不相同的Haar特征(XML文件解释见下节)。在运算中,伴随着检测窗口的移动,如何快速计算Haar特征值就成了一个很重要的问题。试想一下,如果采用最笨的办法,每次移动检测窗口时都进行一系列的求和运算,机器彻底要卡死。为了解决这个问题,在设计Haar+AdaBoost算法时,Paul Viola等人就提出积分图。
图1 积分图计算Haar矩形框示意图
缩进与上面理论不同的是,为了方便计算,在opencv中width*height的灰度图计算出的积分图大小为(width+1)*(height+1)。OpenCV中的积分图定义为:
缩进这种方式实际上对原积分图进行了“扩边”,积分图中第0行和第0列的值都为0。采用这种“扩边”方式计算积分图主要是为了方便计算。为了便于说明,设计算灰度图是w*h大小的二维数组image(w,h),积分图是一个(w+1)*(h+1)大小的二维数组sum(w+1,h+1),那么用伪代码表示OpenCV中的“扩边”积分图计算方式:
缩进以图2为例说明此段伪代码。积分图sum矩阵被初始化为全0,这就保证了积分图第0列和第0行的值都为0;之后从第1行和第1列开始遍历积分图矩阵,计算方式如下为:
sum(r,c) = sum(r-1,c) + sum(r,c-1) - sum(r-1,c-1) + image(r-1,c-1)
其中(r-1,c-1)左上点积分图值对应的深蓝区域被加了2次,所以要减去1次。这样就能够很快的求出积分图。
图2
2 45°旋转积分图
缩进为了提高检测精度,Rainer Lienhart等人首先提出了45°旋转积分图,如图3。旋转积分图用于快速计算上一篇文中介绍的titled_x2和titled_y2等共6种旋转Haar特征。
图3
缩进与一般积分图类似,OpenCV中45°旋转积分图同样采用了“扩边”方式(即旋转积分图比原灰度图多1行和1列,其中第1行和第1列元素为0),对应的计算公式为:
缩进有了旋转积分图如何计算任意位置和大小的45°倾斜长方形区域的灰度和呢?设有如图4红色方框大小的灰度图image,其计算出来的45°旋转灰度图为titled(第1行和第1列为0),虚线代表image中cv::Rect为<3 1 2 3>区域。显然虚线区域的灰度和为:titled(2,6) - titled(1,4) - titled(6,3) + titled(1,4),应该不难理解。
图4
-------------------------------------------
参考文献:
[2]http://www.opencv.org.cn/opencvdoc/2.3.2/html/modules/imgproc/doc/miscellaneous_transformations.html?highlight=integral#cv.Integral
关于积分图的分析就结束了。
下一篇,我会结合OpenCV中的XML,文件分析Adaboost级联分类器的结构,同时分析XML里面的internalNodes和leafValues等标签的具体含义。
- OpenCV中的Haar+Adaboost(二):积分图和45°旋转积分图
- OpenCV中的Haar+Adaboost(二):积分图和45°旋转积分图
- 【人脸检测】OpenCV中的Haar+Adaboost级联分类器分解(二):积分图和45°旋转积分图
- Haar+Adaboost级联分类器分解(一):Haar特征和积分图
- Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- 积分图和Haar特征
- Haar特征和积分图
- Haar特征、积分图、Adaboost算法、分类器训练
- Adaboost-积分图计算
- Haar特征与积分图(Adaboost方法原理介绍,非常经典)
- Haar特征与积分图(Adaboost方法原理介绍,非常经典)
- python 计算积分图和haar特征
- 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- Node Express获取参数的几种方法
- Android图片处理总结五:Bitmap方法总结
- OpenCV中的Haar+Adaboost(一):Haar特征详细介绍
- puppet
- 打工的第一个半天
- OpenCV中的Haar+Adaboost(二):积分图和45°旋转积分图
- 浅谈Android中的Handler机制
- eclipse查看文件所在硬盘的路径
- Python 并行任务技巧
- PE文件学习笔记(二):Section Table解析
- python爬虫学习第十八天
- OpenCV中的Haar+Adaboost(三):级联分类器结构与XML文件含义
- 跳转到AppStroe
- Team them up! UVA