`
bcyy
  • 浏览: 1823516 次
文章分类
社区版块
存档分类
最新评论

【图像处理】计算Haar特征个数

 
阅读更多

最早的Haar特征由Papageorgiou C.等提出(《A general framework for object detection》),后来Paul Viola和Michal Jones提出利用积分图像法快速计算Haar特征的方法(《Rapid object detection using a boosted cascade of simple features》)。之后,Rainer Lienhart 和 Jochen Maydt用对角特征对Haar特征库进行了扩展(《An extended set of Haar-like features for rapid object detection》)。OpenCV的Haar分类器就是基于扩展后的特征库实现的。


Haar特征/矩形特征

Haar特征本身并不复杂,就是用图中黑色矩形所有像素值的和减去白色矩形所有像素值的和。


看过Rainer Lienhart文章的人知道,Rainer Lienhart在文章中给出了计算特定图像面积内Haar特征个数公式。小女才拙,到最后也没推出那个公式来,还望看明白的大牛留言指教~


Haar特征个数计算

Rainer Lienhart计算Haar特征个数的公式:


其中,为图片大小,为矩形特征大小,表示矩形特征在水平和垂直方向的能放大的最大比例系数。

对于45°的rotated特征(如1(c)和1(d)),w,h表示如下图所示:


其计算公式为:


*论文中没有说明,个人认为此处除了Z,XY值也有变化:


下面是我理解的计算过程~

首先有两点要清楚:

1、对于某特定大小的特征,在窗口内滑动计算。
也就是如图1(a)特征大小为2*1,对于24*24的图像。水平可滑动23步,垂直滑动24步,所以共有23*24个特征。

2、对于一个特征,特征本身沿水平、竖直方向分别缩放。
还看特征1(a),特征大小为2*1,则延水平方向可放大为:4*1,6*1,8*1,…,24*1;竖直方向可放大为:2*1,2*2,2*3,…,2*24。即每个特征有XY种放大方式。(!放大的矩形特征并限制保持2:1的比例!)


清楚这两点,就很容易写出计算特征个数的代码:

int getHaarCount(int W,int H,int w,int h){
	int X=W/w;
	int Y=H/h;
	int count=0;

	//放大Haar特征到 iw*jh
	for (int i=1;i<=X;i++)
		for(int j=1;j<=Y;j++)
			//滑动iw*jh矩形,遍历图像计算每个位置Haar特征
			for(int x=1;x<=W-i*w+1;x++)
				for(int y=1;y<=H-j*h+1;y++)
					count++;

	return count;
}


对于45°特征,由于Rainer Lienhart定义的w,h与原矩阵含义不同(参见第一幅图),即实际滑动的矩阵框为(h+w)*(w+h)。

所以只要用如下方式调用原函数:

getHaarCount(W,H,h+w,w+h);

当然如果你喜欢写代码,也可以写个新的函数:

int getRotatedHaarCount(int W,int H,int w,int h){
	int X=W/(w+h);//计算新的X
	int Y=H/(w+h);//计算新的Y
	int count=0;
	for (int i=1;i<=X;i++)
		for(int j=1;j<=Y;j++)
			//注意这里滑动窗口边界变化
			for(int x=1;x<=W-i*(w+h)+1;x++)
				for(int y=1;y<=H-j*(w+h)+1;y++)
					count++;

	return count;
}


计算在24*24的图片中,几种特征的个数为:



可以看到和论文用公式计算得到的值是一致的~



另一种递推计算方法:

特征个数虽然很大,但很有规律,不用程序用笔也很容易推出递推公式。

如1(a)和1(b)特征递推为:(12^2)*(1+2+...+24)=43,200

具体参见此贴:Re: [OpenCV] Re: Number of haar features


(转载请注明作者和出处:http://blog.csdn.net/xiaowei_cqu未经允许请勿用于商业用途)





分享到:
评论

相关推荐

    python 计算积分图和haar特征的实例代码

    下面的代码通过积分图计算一张图片的一种haar特征的所有可能的值。初步学习图像处理并尝试写代码,如有错误,欢迎指出。 import cv2 import numpy as np import matplotlib.pyplot as plt # #计算积分图 # def ...

    本科毕业设计 matlab实现的基于Haar特征与AdaBoost算法的人脸检测的实现

    目标检测模型、智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、智能控制、路径规划、无人机等多种领域的算法仿真实验,更多源码,请上博主主页搜索。 ---------------------------------------------...

    基于Haar小波和Log_Gabor变换的虹膜识别方法_姚立平.pdf

    使用Haar小波变换进行了特征提取,通过采用K-means方法对小波特征数据进行聚类,实现了粗分类得到了小样本集虹膜图像;结合虹膜的纹理特点,通过使用Log-Gabor滤波器提取虹膜局部纹理特征,量化编码后形成了虹膜特征模板;...

    opencv 数字图像处理.zip

    丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像处理(滤波、形态学操作、色彩空间转换等)、特征检测与描述(如SIFT、SURF、ORB等)、物体识别与检测(如Haar级联分类器、HOG...

    图像处理案例三之(2)SIFT特征点检测.docx

    所以基于这个问题,尺度不变特征变换(SIFT)出现了,这个算法可以帮助我们提取图像中的关键点并计算它们的描述符。 • 尺度空间极值检测 • 关键点精准定位与过滤 • 关键点方向指派 • 描述子生成 1. ...

    基于PyQt+OpenCV的图像处理软件.zip

    丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像处理(滤波、形态学操作、色彩空间转换等)、特征检测与描述(如SIFT、SURF、ORB等)、物体识别与检测(如Haar级联分类器、HOG...

    基于opencv和MFC的图像处理软件.zip

    丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像处理(滤波、形态学操作、色彩空间转换等)、特征检测与描述(如SIFT、SURF、ORB等)、物体识别与检测(如Haar级联分类器、HOG...

    图像处理课程设计 基于Haar分类和五官验证的人脸识别.zip

    1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合...

    Haar小波和形状模板的图像快速匹配算法.pdf

    针对传统的模板匹配方法在低对比度的图像中匹配不到目标物体和匹配计算量大等问题,提 出一种基于离散 Haar 小波变换和形状模板的图像快速匹配算法。首先,使用 Haar 小波对图像进行 分解操作,将分解的低频信号重构...

    opencv基础课件-计算机视觉

    OpenCV(Open Source Computer Vision Library)是一个广泛应用于计算机视觉和图像处理领域的开源库。它提供了丰富的功能和算法,用于处理图像、视频、深度图像等视觉数据。 以下是一些关于OpenCV的常见知识描述: ...

    OpenCVForUnity

    该插件能够帮助开发者在Unity中轻松地添加图像处理和计算机视觉功能,例如图像识别、人脸识别、目标跟踪、物体检测等。 OpenCVForUnity的主要功能包括以下几个方面: 图像处理和计算机视觉算法 OpenCVForUnity提供...

    基于改进Haar-like特征的压缩跟踪算法 (2014年)

    进行重采样以更新分类器为下一帧做准备,对出现的问题,使用了一种新的图像特征来表示目标特性,同时加入一系列策略处理样本,去除那些与目标差异较大的样本,并进行仿真。仿真结果表明:该算法不仅提高了分类器对于...

    基于OpenCV的疲劳驾驶预警系统设计与实现

    系统设计思路是采用 OpenCV开源的视频图像处理库,使用摄像头采集视频 图像,对输入图像做预处理(图像灰度化、中值滤波等);通过学习训练的方法构 造基于类 Haar 特征的层叠式分类器,利用基于类 Haar 特征的层叠式...

    下载Xmind软件查看opencv复习大纲

    OpenCV(Open Source Computer Vision Library)是一个广泛应用于计算机视觉和图像处理领域的开源库。它提供了丰富的功能和算法,用于处理图像、视频、深度图像等视觉数据。 以下是一些关于OpenCV的常见知识描述: ...

    基于pyqt5和opencv的多线程图像(视频)处理.zip

    丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像处理(滤波、形态学操作、色彩空间转换等)、特征检测与描述(如SIFT、SURF、ORB等)、物体识别与检测(如Haar级联分类器、HOG...

    利用 python2.7 + OpenCV2.4 + django 1.9 + xamdin完成的一个基于图像搜索的系统.zip

    丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像处理(滤波、形态学操作、色彩空间转换等)、特征检测与描述(如SIFT、SURF、ORB等)、物体识别与检测(如Haar级联分类器、HOG...

    计算机毕业设计源码:基于Python车牌识别系统 深度学习 建议收藏 PyQt5+opencv

    尽管该技术随处可见了,但其实在精度和识别速度上还需要进一步提升,自己动手实现一个车牌识别系统有利于学习和理解图像处理的先进技术。 车牌识别的算法经过了多次版本迭代,检测的效率和准确率有所提升,从最初的...

    基于计算机视觉的餐厅自助结算系统 SpringBoot+Vue+MySql+Redis+OpenCV+YOLOv3.zip

    丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像处理(滤波、形态学操作、色彩空间转换等)、特征检测与描述(如SIFT、SURF、ORB等)、物体识别与检测(如Haar级联分类器、HOG...

    基于热成像的智能体温检测系统,使用opencv进行人脸检测,通过热成像计算人脸温度。.zip

    丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像处理(滤波、形态学操作、色彩空间转换等)、特征检测与描述(如SIFT、SURF、ORB等)、物体识别与检测(如Haar级联分类器、HOG...

    基于tensorflow框架的手写数字识别+基于pyqt5的GUI界面+opencv图片数字切割.zip

    丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像处理(滤波、形态学操作、色彩空间转换等)、特征检测与描述(如SIFT、SURF、ORB等)、物体识别与检测(如Haar级联分类器、HOG...

Global site tag (gtag.js) - Google Analytics