文章目录
一、积分图简介
第一个提出 Haar 特征快速计算方法的是 CVPR2001上 的那篇经典论文 《Rapid object detection using a boosted cascade of simple features》, Viola 提出了一种利用积分图(integral image)快速计算 Haar 特征的方法, 这个方法使得图像的局部矩形求和 运算的复杂度从 O(MN) 下降到了 O(4) 。
Haar 特征的计算需要重复计算目标区域的像素值,使用积分图能大大减少计算量,达到实时计算 Haar 特征的目的。简单来说,就是先构造一张“积分图”(integral image),也叫 Summed Area Table,之后任何一个 Haar 矩形特征都可以通过查表的方法(Look Up Table)和有限次简单运算得到,大大减少了运算次数。所以但凡需要重复计算目标区域内像素值和的场合,积分图都能派上用场。下面开始介绍积分图原理,并给出其的几个应用。
积分图原理
图像是由一系列的离散像素点组成, 因此图像的积分其实就是求和. 图像积分图中每个点的值是原图像中该点左上角的所有像素值之和。
详情理论见
其中矩形大小为:,
示例如下图:设原图(左图)像素值为1,则有积分图(右图):
计算:(泥土色区域)9 =( 整块有区域)25 + (紫色区域)4 - (黄色区域)10 - (蓝色区域)10 =
,8 位或浮点数(32f 或 64f)。
OutputArray sum, 整数图像 ,i32 或 f32 或 f64
OutputArray sqsum, 平方像素值的积分图像。(大小同上) f64
OutputArray tilted, 图像旋转 45 度的积分(大小同上) i32 或 f32 或 f64
int sdepth = -1,
int sqdepth = -1
)
二、代码演示
头文件 image_feature_all.h
:声明类与公共函数
主函数main.cpp
调用该类的公共成员函数
源文件 feature_extract.cpp
:实现类与公共函数