目标检测的图像特征提取之(三)Haar特征

目标检测的图像特征提取之(三)Haar特征目标检测的图像特征提取之(三)Haar特征zouxy09@qq.com1、Haar-like特征      Haar-like特征最早是由Papageorgiou等应用于人脸表示,Viola和Jones在此基础上,使用3种类型4种形式的特征。Haar特征分为三类:边缘特征、线性特征、中心特征和对角线特征,组合成特征模板。特征模板内有白色和黑色两种矩形,并定义该模板的特征值为白色矩

大家好,又见面了,我是你们的朋友全栈君。

目标检测的图像特征提取之(三)Haar特征

zouxy09@qq.com

http://blog.csdn.net/zouxy09

 

1Haar-like特征

       Haar-like特征最早是由Papageorgiou等应用于人脸表示,ViolaJones在此基础上,使用3种类型4种形式的特征。

Haar特征分为三类:边缘特征、线性特征、中心特征和对角线特征,组合成特征模板。特征模板内有白色和黑色两种矩形,并定义该模板的特征值为白色矩形像素和减去黑色矩形像素和。Haar特征值反映了图像的灰度变化情况。例如:脸部的一些特征能由矩形特征简单的描述,如:眼睛要比脸颊颜色要深,鼻梁两侧比鼻梁颜色要深,嘴巴比周围颜色要深等。但矩形特征只对一些简单的图形结构,如边缘、线段较敏感,所以只能描述特定走向(水平、垂直、对角)的结构。

目标检测的图像特征提取之(三)Haar特征

     对于图中的A, BD这类特征,特征数值计算公式为:v=Sum-Sum黑,而对于C来说,计算公式如下:v=Sum-2*Sum黑;之所以将黑色区域像素和乘以2,是为了使两种矩形区域中像素数目一致。

     通过改变特征模板的大小和位置,可在图像子窗口中穷举出大量的特征。上图的特征模板称为“特征原型”;特征原型在图像子窗口中扩展(平移伸缩)得到的特征称为“矩形特征”;矩形特征的值称为“特征值”。

      矩形特征可位于图像任意位置,大小也可以任意改变,所以矩形特征值是矩形模版类别、矩形位置和矩形大小这三个因素的函数。故类别、大小和位置的变化,使得很小的检测窗口含有非常多的矩形特征,如:在24*24像素大小的检测窗口内矩形特征数量可以达到16万个。这样就有两个问题需要解决了:(1)如何快速计算那么多的特征?积分图大显神通;(2)哪些矩形特征才是对分类器分类最有效的?如通过AdaBoost算法来训练(这一块这里不讨论,具体见http://blog.csdn.net/zouxy09/article/details/7922923

 

2Haar-like特征的计算积分图

       积分图就是只遍历一次图像就可以求出图像中所有区域像素和的快速算法,大大的提高了图像特征值计算的效率。

       积分图主要的思想是将图像从起点开始到各个点所形成的矩形区域像素之和作为一个数组的元素保存在内存中,当要计算某个区域的像素和时可以直接索引数组的元素,不用重新计算这个区域的像素和,从而加快了计算(这有个相应的称呼,叫做动态规划算法)。积分图能够在多种尺度下,使用相同的时间(常数时间)来计算不同的特征,因此大大提高了检测速度。

       我们来看看它是怎么做到的。

       积分图是一种能够描述全局信息的矩阵表示方法。积分图的构造方式是位置(i,j)处的值ii(i,j)是原图像(i,j)左上角方向所有像素的和:

  目标检测的图像特征提取之(三)Haar特征

目标检测的图像特征提取之(三)Haar特征        

积分图构建算法:

1)用s(i,j)表示行方向的累加和,初始化s(i,-1)=0;

2)用ii(i,j)表示一个积分图像,初始化ii(-1,i)=0

3)逐行扫描图像,递归计算每个像素(i,j)行方向的累加和s(i,j)和积分图像ii(i,j)的值

s(i,j)=s(i,j-1)+f(i,j)

ii(i,j)=ii(i-1,j)+s(i,j)

4)扫描图像一遍,当到达图像右下角像素时,积分图像ii就构造好了。

积分图构造好之后,图像中任何矩阵区域的像素累加和都可以通过简单运算得到如图所示。

目标检测的图像特征提取之(三)Haar特征          

D的四个顶点分别为α、β、γ、δ,则D的像素和可以表示为

Dsum = ii( α )+ii( β)-(ii( γ)+ii( δ ));

        而Haar-like特征值无非就是两个矩阵像素和的差,同样可以在常数时间内完成。所以矩形特征的特征值计算,只与此特征矩形的端点的积分图有关,所以不管此特征矩形的尺度变换如何,特征值的计算所消耗的时间都是常量。这样只要遍历图像一次,就可以求得所有子窗口的特征值。

 

3Haar-like矩形特征拓展

         Lienhart R.等对Haar-like矩形特征库作了进一步扩展,加入了旋转45角的矩形特征。扩展后的特征大致分为4种类型:边缘特征、线特征环、中心环绕特征和对角线特征:

目标检测的图像特征提取之(三)Haar特征

       在特征值的计算过程中,黑色区域的权值为负值,白色区域的权值为正值。而且权值与矩形面积成反比(使两种矩形区域中像素数目一致);

竖直矩阵特征值计算:

     对于竖直矩阵,与上面2处说的一样。

45°旋角的矩形特征计算:

      对于45°旋角的矩形,我们定义RSAT(x,y)为点(x,y)左上角45°区域和左下角45°区域的像素和。

 目标检测的图像特征提取之(三)Haar特征      

用公式可以表示为:

目标检测的图像特征提取之(三)Haar特征

为了节约时间,减少重复计算,可按如下递推公式计算:

目标检测的图像特征提取之(三)Haar特征

而计算矩阵特征的特征值,是位于十字行矩形RSAT(x,y)之差。可参考下图:

目标检测的图像特征提取之(三)Haar特征

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/124817.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月20日 上午6:40
下一篇 2022年4月20日 上午6:40


相关推荐

  • GloVe模型_nerlove模型

    GloVe模型_nerlove模型系列目录(系列更新中)第二讲cs224n系列之word2vec&词向量word2vec进阶之skim-gram和CBOW模型(HierarchicalSoftmax、NegativeSampling)第三讲cs224n系列之skip-pram优化&GlobalVectorbyManning&

    2025年11月24日
    4
  • MATLAB切比雪夫带通滤波器

    MATLAB切比雪夫带通滤波器原始信号由5Hz,50Hz,110Hz三种频率的正弦信号构成,并含有直流分量。原始信号为:y=sin(5*2*pi*x)+sin(50*2*pi*x)+sin(110*2*pi*x)+0.5;​图1 原始信号 ​使用通带为[10,100]Hz的切比雪夫滤波器,滤波后的信号时域曲线为:图2 滤波信号​对原始信号和滤波信号作傅里叶变换,观察频谱的变化(左图为原始信号…

    2022年5月4日
    156
  • 设置eclipse代码自动补全功能

    设置eclipse代码自动补全功能1.选择Eclipse菜单条中的Windows菜单下的Preferences项2.在左侧找到“Java”->“Editor”->“ContentAssist”3.在右侧“AutoActivation”项目下找到“AutoactivationtriggersforJava:”(可以看到设置框中默认的只有“.”,这就是为什么默认只有点“.”可以触发自动补全…

    2022年5月31日
    55
  • 【git系列】切换分支相关命令

    【git系列】切换分支相关命令背景为什么小编突然整理出这样一份命令呢?起因还是目前的工作项目的微服务太多,使用idea切换分支时,很容易点错或者合并错分支代码,于是小编下定决心,放弃使用工具切换分支,使用命令操作,使用之后发现爽的一批,操作起来666的,同时也希望帮助小伙伴们快速入门Git操作分支;命令命令的含义和介绍这些八股文,小编不再累赘,直接上命令创建并切换到本地分支gitcheckout-b分支名切换分支gitcheckout分支名两者的区别是否带-b提交分支到远程仓库(本地分支与

    2022年6月20日
    37
  • 20222.5idea激活码-激活码分享

    (20222.5idea激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html40…

    2022年3月13日
    55
  • 常用黑盒测试方法_黑盒测试各种方法

    常用黑盒测试方法_黑盒测试各种方法定义:黑盒测试又称功能测试。黑盒测试就是把测试对象看成一个不能打开的黑盒子,在完全不考虑程序的内部结构和处理过程的情况下,只依据程序的需求规格说明书,检查程序的功能是否符合他的功能说明。黑盒测试主要发现的缺陷类型:1、功能错误或遗漏;2、界面错误;3、数据库错误;4、性能错误;5、初始化和终止错误。黑盒测试的基本思路:黑盒测试是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的,又称为数据驱动测试。黑盒测试是在程序外部接口进行的测试。黑盒测试选择…

    2022年10月4日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号