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

2023-05-16

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

zouxy09@qq.com

http://blog.csdn.net/zouxy09

 

1Haar-like特征

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

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)左上角方向所有像素的和:

  

        

积分图构建算法:

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就构造好了。

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

          

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

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

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

 

3Haar-like矩形特征拓展

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

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

竖直矩阵特征值计算:

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

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

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

       

用公式可以表示为:

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

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

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • linux系统之根文件系统树制作

    前言 xff1a 很早就在linux下做过了uboot移植 xff0c linux内核移植以及文件系统的制作 xff0c 一直没有来得及总结 xff0c 现在好好把之前做过的东西整理一下 xff0c 主要是为了备忘 现在总结一下根文件系统树
  • 二级必会词汇

    形容词 xff08 xff11 xff09 xff11 惜 xff12 xff1a 怪 xff13 xff1a 嬉 xff14 xff1a 悲 xff15 xff1a 厳 xff16 xff1a 悔 xff17 xff1a 苦 xff18
  • python学习-isinstance()

    isinstance 是一个内置的函数 xff08 BIF xff09 它允许某个特定标识符是否包含某个特定类型的数据 如判断某个对象是不是列表 字典 整型等 gt gt gt a 61 1 2 3 gt gt gt b 61 123 gt
  • Ubuntu上安装PX4

    文字教程 视频教程 在Win10上安装虚拟机 VMware Workstation 16 Pro xff0c 在虚拟机安装18 04版ubuntu xff0c 其他版本可能安装不成功 xff0c 之前我20版本就安装失败 下列步骤开始前 x
  • stm32 红外遥控实现

    一 概述 红外遥控采用NEC协议 定时中断 预分频器采用72 xff0c 72M 72 61 1M xff0c 每秒1千次 xff0c 一次1us xff0c 即第1us计数器加1 溢出值设为10000 xff0c 即10ms xff0c
  • 关于simulink中的函数function模块

    前言 xff1a 我们前面提到过当遇到库中没有我们需要的模块时 xff0c 我们可以自己书写s函数 xff0c 其实s函数是一个比较高端的工具 xff0c 是用来书写一些比较复杂的模块 xff0c 而遇到一些简单的模块 xff0c 我们可以
  • px4飞行数据.ulg文件的分析

    参考 xff1a https blog csdn net walk2011 article details 83757139 以及 xff1a https blog csdn net qq 42570955 article details
  • offboard代码超详细注释

    这一部分主要对服务做了特别详细的讲解 span class token macro property span class token directive keyword include span span class token stri
  • offboard模式的全球位置发布

    例子中的代码控制的是飞机的本地位置 xff0c 也就是相对起飞位置的位置 xff0c 而如果我们采用全球位置 xff0c 也就是经纬海拔坐标 xff0c 如何去书写呢 xff1f 发布全球位置 xff08 经纬海拔坐标 xff09 头文件
  • mavros的常用服务介绍

    在mavros中 xff0c 最常用的服务就两个 xff0c 一个是解锁 xff0c 还有一个就是模式切换 当然还有其他的服务 xff0c 比如通过mavros修改航点信息 xff0c 但是不常用 xff0c 所以下面只介绍解锁和模式切换
  • offboard模式实现简单四边航线并自动降落

    前言 xff1a 这一部分不想在重复写了 xff0c 已放在作者的github上 xff0c 偷个懒0 0
  • 测试offboard模式的安全代码

    这段代码用于检验offboard模式的安全启动 xff0c 执行后飞机只会轻微的旋转 xff0c 不会起飞 span class token comment span span class token comment Created by
  • offboard里的期望姿态

    消息体头文件 xff1a mavros msgs AttitudeTarget h 里面的内容 xff1a span class token macro property Message for SET ATTITUDE TARGET sp
  • shell脚本自学笔记

    一 什么是Shell脚本 shell脚本并不能作为正式的编程语言 xff0c 因为它是在linux的shell中运行的 xff0c 所以称为shell脚本 事实上 xff0c shell脚本就是一些命令的集合 假如完成某个需求需要一口气输入
  • matlab2020安装

    前言 xff1a 这里之所以要安装最新的2020版本 xff0c 是因为matlab中的硬件支持工具是随着版本变化而变化的 xff0c 所以要升级matlab版本 MATLAB R2020a v9 8 0 最新中文版 64位 百度网盘链接后
  • px4的电调校准

    我们之前校准电调的步骤为 xff1a 第一 xff0c 先打开遥控器 xff0c 油门推到最大 第二 xff0c 给飞控供电 xff0c 此时电调会捕捉到油门最大量程 第三 xff0c 保持遥控不变 xff0c 飞控断电 xff0c 然后再
  • px4源码备份

    这几天在用1 8 0版本的源码时发现了玄学的事情 xff0c 在终端下完美运行和仿真 xff0c 但是拿到simulink下运行仿真就会出现飞机一进去就乱飞 xff0c 并且你关了simulink之后再回终端 xff0c 发现原本在终端下可
  • 数据结构有关树的知识总结(一)

    前段时间准备考研 xff0c 对数据结构做了一个简略的知识点总结 xff0c 知识针对考研所用到的数据结构 xff0c 下面是树的章节由于篇幅太多 xff0c 将有关树的知识点分开发表 xff0c 对B树和B 43 树没有深入了解 xff0
  • simulink中的state place模块的使用

    我们知道 xff0c state place模块输入的为u xff0c 输出的y xff0c 并且我们需要在模块参数中设置ABCD以及初始状态x的值 xff08 初始状态x的值一般为0 xff09 xff1a 但我们经常使用状态空间不太在意
  • 反馈线性化

    这里转载一篇介绍反馈线性化很好的文章 xff1a https max book118 com html 2018 1014 8135037141001126 shtm

随机推荐

  • simulink中使用memory模块实现变量的累加和

    在离散系统中 xff0c 我们经常会遇到需要存储上一时刻的变量 比如y xff08 k 1 xff09 xff0c 然后用在当前时刻的运算里 xff0c 这个时候我们就需要一个模块能够存储上一时刻的y xff08 k 1 xff09 xff
  • 关于使用gazebo启动很慢、很卡、很热的解决办法

    1 参照之前的博客进行离线下载模型 2 不要将系统装在移动硬盘上 3 断网 xff0c 因为联网的话他会一直搜索网上资源 xff0c 虽然此是可能会提示 xff1a Couldn span class token string 39 t f
  • sci中的插图操作和说明(超详细)

    http www 360doc com content 17 1219 23 50538487 714649321 shtml
  • latex中某一页出现图片与上下文间距过大,利用\vspace等强制修改间距的命令依然无法解决的问题

    问题描述 xff1a 当我利用下面的命令进行插入图片时 xff1a begin span class token punctuation span figure span class token punctuation span span
  • 魅族18解bl锁+刷boot+刷面具+刷lsp+刷hmspush教程

    一 解锁教程 这里就不多说了 xff0c 直接看教程 xff1a https www coolapk com feed 38216557 shareKey 61 MjUxODI2OGMzNGRlNjM1ZTQxYWY amp shareUi
  • 关于px4中uorb以及px4_simple_app的终极理解

    先允许我卖个萌 xff1a 看了一下午关于px4中的uorb的分析 xff0c 终于有所感悟了 信息量有点大 xff0c 先让我缓缓 xff0c 理理思绪 先说说我之前的疑惑吧 xff1a 疑惑1 在一开始学习px4的时候 xff0c 就在
  • 关于无人机升力的产生

    前言 xff1a 之前学过飞控 xff0c 但是现在回顾了一下发现最基本分析升力的产生的原因都忘了 xff0c 于是记录下来 先问一个问题 xff1a 到底是上表面的路程长还是下表面的路程长 xff1f 之前一直记错了以为是上表面的路径长
  • stm32之定时器运用———呼吸灯

    呼吸灯原理 1 在模拟电路中 xff0c 呼吸灯的实现可以通过一个呈现正弦的电压控制 xff0c 这个电压是连续变化的 xff0c 所以肉眼看上去就是逐渐变暗 xff0c 逐渐变亮 2 而在数字电路中如何实现这种效果呢 xff1f 就需要通
  • 数据结构有关树的知识总结(二)

    这一篇文章主要介绍三个知识点 xff1a 哈夫曼树 堆排序以及最佳归并树和败者树 xff08 四 xff09 哈夫曼树 1 构造哈夫曼树 xff1a 哈夫曼树的特点 xff1a 权值越大 xff0c 离根节点越近 xff1b 树中没有度为1
  • 关于磁力计的新的理解

    前言 xff1a 我发现真的是验证了一句话 xff0c 每次重看一遍书 xff0c 都能发现新的东西 xff0c 我发现看程序也是这样 xff0c 没重看一边都会发现新的东西 不想打字了 xff0c 就直接贴我的ppt
  • px4源码学习(local position estimator)

    前言 xff1a 之前学习的是px4源码中的attitude estimator q xff0c 可以说是学习的相当仔细和深入 于是借着这股劲继续学习位置估计中的local position estimator 另外需要说明的是 xff0c
  • px4在环仿真实践操作

    前言 xff1a 在这之前先确保你已经配置好了jMAVSim 一 在环仿真 有两种 xff0c 一种是软件在环仿真SITL xff0c 还有一种是硬件在环仿真HITL 先介绍HITL 二 软件在环仿真 步骤 xff1a 1 打开终端 xff
  • 关于px4源码中固定翼姿态控制

    在看完px4固定翼的姿态控制代码后 xff0c 我有几点思考 1 我们知道程序中姿态控制的方法是将控制角度转化为控制角速度 那pitch来说 xff0c 先求出设定的pitch和当前的pitch的差值 xff08 delta pitch x
  • 关于垂直起降固定翼VTOL

    参考网址 xff1a https www ncnynl com archives 201709 2068 html 截图 xff1a 尾座式演示视频 xff1a http 7xw24i com1 z0 glb clouddn com PX4
  • 相关的飞控官网网址

    3DR官网 xff1a http 3drobotics com 这个网站简单来说就是3dr卖飞控的官方旗舰店 xff0c 我还以为开发者的一些东西也在上面 xff0c xff0c 好浪费感情 apm飞控的官网 xff1a http copt
  • c++中数组作为参数传入函数

    前言 xff1a 最近再看一个用c 43 43 写数组求逆矩阵的程序 xff0c 那是相当的繁琐 xff0c 但是很有趣 其中涉及了大量的数组运算 xff0c 所以数组作为参数传入函数很重要 xff0c 这里记录一下 一维数组作为参数 1
  • px4如何读取串口信息

    前言 xff1a 网上有一大堆 xff0c 比如minicom xff0c mavproxy等等 xff0c 其实qgc就自带nutshell工具 在下面输入help就可以看到所有命令 xff01 xff01 xff01
  • 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联

    浅析人脸检测之Haar 分类器方法 一 Haar 分类器的前世今生 人脸检测属于计算机视觉的范畴 xff0c 早期人们的主要研究方向是人脸识别 xff0c 即根据人脸来识别人物的身份 xff0c 后来在复杂背景下的人脸检测需求越来越大 xf
  • Windows 10 64bit系统下,使用pip安装Pygame、Matplotlib的过程和一些问题的解决

    最近在学习python xff0c 开始做第一个项目 xff1a 数据可视化 xff0c 在做项目之前 xff0c 需要安装一些软件 xff0c 本文记录安装项目所需的软件过程以及遇到的一些问题 一 安装Pygame 使用pip安装pyth
  • 目标检测的图像特征提取之(三)Haar特征

    目标检测的图像特征提取之 xff08 三 xff09 Haar特征 zouxy09 64 qq com http blog csdn net zouxy09 1 Haar like 特征 Haar like 特征最早是由Papageorgi