OpenCV特征提取与检测(二)

1 积分图

1.1 绪论

Paul Viola提出一种利用积分图快速计算Haar特征的方法(《Rapid object detection using a boosted cascade of simple features》)。Haar特征是什么就不多做介绍,总之Haar特征的计算需要重复计算目标区域的像素值,使用积分图能大大减少计算量,达到实时计算Haar特征的目的。简单来说,就是先构造一张“积分图”(integral image),也叫Summed Area Table,之后任何一个Haar矩形特征都可以通过查表的方法(Look Up Table)和有限次简单运算得到,大大减少了运算次数。所以但凡需要重复计算目标区域内像素值和的场合,积分图都能派上用场。下面开始介绍积分图原理,并给出其的几个应用。
积分图像是一种在图像中快速计算矩形区域和的方法,这种算法的主要优点是一旦积分图像首先被计算出来,我们就可以在常量时间内计算图像中任意大小矩形区域的和。这样在图像模糊、边缘提取、对象检测的时候极大降低计算量、提高计算速度。

1.2 积分图算法原理

坐标A(x,y)的积分图是其左上角的所有像素与当前点像素所围成的矩形之和(图中的阴影部分)。定义为:
在这里插入图片描述
其中ii(x,y)表示积分图,i(x,y)表示原始图像,对于彩色图像,是此点的颜色值;对于灰度图像,是其灰度值,范围为0~255。
在这里插入图片描述

例子如下图所示:比如中心元素1的积分图为:其左上角的所有像素与当前点像素所围成的矩形([1 1 1 1]),和为1+1+1+1=4。
在这里插入图片描述
定义了积分图的概念,就可以很方便的计算任意区域内的像素和,如下图所示:
在这里插入图片描述
积分图数组初始化之后, 我们就得到了一张积分图:

点1的积分 SAT1=Sum(Ra),
点2的积分 SAT2=Sum(Ra)+Sum(Rb),
点3的积分 SAT3=Sum(Ra)+Sum(Rc),
点4的积分 SAT4=Sum(Ra)+Sum(Rb)+Sum(Rc)+Sum(Rd)。
那么为了计算某个矩形像素和,比如区域 Rd 内所有点的像素值之和(积分)可以表示为:
Sum(Rd)=SAT1+SAT4−SAT2−SAT3
所以无论矩形的尺寸大小,只需查找积分图像 4 次就可以快速计算任意矩形内像素值的和, 即算法复杂度为 O(4)。

1.2 相应的API

void integral( InputArray src, OutputArray sum,OutputArray sqsum, int sdepth = -1, int sqdepth = -1 );

参数说明:
第1个参数 src:输入图像。
第2个参数 sum:和表。
第3个参数 sqsum:平方和表。
第4个参数 tilted:瓦块和表。
第5个参数 sdepth : 默认值-1。和表数据深度常见CV_32S。
第6个参数 sqdepth: 默认值 -1。平方和表数据深度常见 CV_32F。
在这里插入图片描述
综合示例:

#include <opencv2/opencv.hpp>
#include <iostream>
 
using namespace cv;
using namespace std;
 
void blur_demo(Mat &image, Mat &sum);
void edge_demo(Mat &image, Mat &sum);
int getblockSum(Mat &sum, int x1, int y1, int x2, int y2, int i);
 
int main(int argc, char* argv[]) {
   
	Mat src = imread("../images/test.jpg");
	if (src.empty()) {
   
		printf("不能打开图像!\n");
		return -1;
	}
 
	namedWindow("input"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值