OpenCV14:Haar特征
首先,我们需要了解特征是什么?所谓特征,就是某个区域的像素点经过某种运算后得到的结果。
其中,结果可能是 具体值、向量、矩阵
那么如何利用特征区分目标(即如何判断特征)?方法之一是,类似于阈值判决的方式区分。
所以问题又来了,如何得到这个判断条件呢?这时就要用到机器学习部分的内容。
总的来讲,分为三个问题:
1、弄清特征是什么。
2、如何判决特征。
3、如何得到这个判决(即如何得到判断条件)。
同样的,我们在学习haar特征的时候也是围绕这三个问题去探讨。
首先什么是haar特征?
haar特征有以下15种:
那么我们以第一种haar特征为例来讲述。
蓝色背景表示我们定义的图片,黑白矩形框表示haar特征模板,
假设模板范围为10*10,则该模板覆盖了100个像素点,黑色区域占50,白色区域占50
将当前的黑白两色模板放到图片任意位置,然后白色区域覆盖的50个像素点值之和 减去 黑色区域覆盖的50个像素点值之和,就得到了haar特征
即 haar特征 = sum(白)- sum(黑)
此外,还有其他计算方式: haar特征 = 整个区域像素点值 * 权重 + 黑色区域像素点值 * 权重。 这里的区域指10*10的区域。
接下来,我们考虑如何利用特征进行阈值判决?
Haar特征一般与Adaboost分类器结合在一起使用,因此简略介绍一下Adaboost。
Adaboost分类器的优点是:前一个基本分类器分出来的样本会在下一个分类器中得到加强。加强后的全体样本再次被用来训练下一个分类器。
比如 我们有三个苹果,一个香蕉
苹果 苹果 苹果 香蕉
0.1 0.1 0.1 0.5
由于香蕉不是我们期望的,因此在第一次训练后香蕉的系数比较大为0.5,我们将这个结果再次训练,那么苹果的系数会越来越小,香蕉的系数会越来越大。直到迭代的最大次数终止,或者,迭代到 训练出来的正确率大于等于设置好的最低值 终止。
1)Adaboost分类器的结构
一般的目标要通过15-20个强分类器,若一个目标能通过规定数量的强分类器,则视为预期结果。列如,有三个强分类器,给他们一个输入,如果由Haar特征计算出来的结果满足 X1 > ST1 and X2 > ST2 and X3 > ST3,(其中X1、X2、X3为Haar特征的代表值;ST1、ST2、ST3为三个强分类器的阈值),则被视为苹果。
强分类器的作用是判断当前阈值与当前特征是否吻合,来达到目标判决的效果。
弱分类器的作用是计算Haar特征的X1、 X2、 X3。例如(如上图所示) X2 = sum(y1,y2,y3),其中 指弱分类器的计算结果。
那么 如何得到呢?如上图所示,它是由Node节点计算得来。在OpenCV中一个弱分类器最高支持三个Haar特征,每一个Haar特征构成一个Node节点,因此每个特征都看成一个节点。
以Node1为例,其对应特征Haar1,
若 Haar1 > Node1的阈值(NodeT1),则 特征Haar1对应特征节点Node1的值 z1 = alpha1;
相反,若 Haar1 < Node1的阈值(NodeT1),则 特征Haar1 对应特征节点Node1的值 z1 = alpha2;
类似的,可以计算另外两个Haar特征对应的特征节点(Node2、Node3)的值z2、z3。
那么我们就可以得到Node节点之和 Z = sum(z1,z2,z3)
若 Z > 弱分类器的阈值( WT ),则 y1 = AA(某个值)
相反,若 Z < 弱分类器的阈值( WT ),则 y1 = BB(某个值)
上面的解释是从最上层的强分类器逆着推,那么,我们将其总结一下,从最底层的Node节点向上叙述。
首先,每一个Node节点对应一个Haar特征,这是最底层,OpenCV中一个弱分类器规定最多三个Haar特征。
然后,Node节点本身存在阈值,经Node节点计算出来的Haar特征与其做比较,会得到新的值小 z ,这个值就是Node节点的值。
这时,将三个小z求和,得到大Z。作为输入,送至弱分类器,与弱分类器阈值WT比较,得到y值。
将三个y值求和,得到 X 。作为输入,送至强分类器,与强分类器阈值ST比较,可判断特征与目标是否吻合。
若可以连续通过三个强分类器,则说明判断的目标和原目标一致。
2)Adaboost分类器计算过程
见上面黑体所述
3) Adaboost分类器文件结构:xml类型
OpenCV14:Haar特征相关推荐
- 物体识别算法——SIFT/SURF、haar特征、广义hough变换的对比分析
著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:cvvision 链接:http://www.cvvision.cn/7780.html 来源:CV视觉网 识别算法概述: ...
- 利用OpenCV的级联分类器类CascadeClassifier和Haar特征实现人脸区域的检测
级联分类器是将若干个分类器进行连接,从而构成一种多项式级的强分类器.级联分类器使用前要先进行训练,怎么训练呢?用目标的特征值去训练,对于人脸来说,通常使用Haar特征进行训练. Haar特征是由M.O ...
- 分类器是如何做检测的?(2)——【续】检测中的LBP和HAAR特征计算过程
前面介绍分类器检测过程的示例中是以HOG特征为例,那LBP和HAAR特征在xml中是如何表达和测试的呢? 2.3 LBP与HAAR特征 HAAR特征的计算和表达方式与HOG很类似,在OpenCV ...
- OpenCV学习笔记(三十一)——让demo在他人电脑跑起来 OpenCV学习笔记(三十二)——制作静态库的demo,没有dll也能hold住 OpenCV学习笔记(三十三)——用haar特征训练自己
OpenCV学习笔记(三十一)--让demo在他人电脑跑起来 这一节的内容感觉比较土鳖.这从来就是一个老生常谈的问题.学MFC的时候就知道这个事情了,那时候记得老师强调多次,如果写的demo想在人家那 ...
- 目标检测的图像特征提取—Haar特征
1.Haar-like特征 Haar-like特征最早是由Papageorgiou等应用于人脸表示,Viola和Jones在此基础上,使用3种类型4种形式的特征. Haar特征分为三类:边缘特征.线性 ...
- 人脸识别案例:【实战】opencv人脸检测+Haar特征分类器
1 基础 我们使用机器学习的方法完成人脸检测,首先需要大量的正样本图像(面部图像)和负样本图像(不含面部的图像)来训练分类器.我们需要从其中提取特征.下图中的 Haar 特征会被使用,就像我们的卷积核 ...
- Haar特征原理与icvCreateIntHaarFeatures方法的具体实现附详细注释—— 人脸识别的尝试系列(二)
带着强烈的兴趣,上周开始人脸识别的尝试与学习,并且将具体的操作过程记录了下来 链接如下:http://blog.csdn.net/u011583927/article/details/44627493 ...
- Haar特征与积分图—概念解析
1. Adaboost方法的引入 1.1 Boosting方法的提出和发展 在了解Adaboost方法之前,先了解一下Boosting方法. 回答一个是与否的问题,随机猜测可以获得50%的正确率.如果 ...
- opencv实战3: CascadeClassifier+Haar特征进行人脸检测
1.级联分类器CascadeClassifier OpenCV官方文档:https://docs.opencv.org/3.4.3/d5/d54/group__objdetect.html 分类器: ...
最新文章
- module ‘tensorrt‘ has no attribute ‘BuilderFlag‘
- GSM Hacking Part① :使用SDR扫描嗅探GSM网络
- 解决spring的xml文件cannot be open ( class path resource cannot be opened)
- python软件设置代码字体的大小_PyCharm中代码字体大小调整方法
- 速读训练软件_记忆宫殿记忆力训练教程-第八天
- python的datetime模块用法_Python3.5内置模块之time与datetime模块用法实例分析
- LitePal 数据库使用方法(最新2.0LitePal数据库适用)
- JavaScript中Switch语句支持字符串类型数据
- UltraISO(制作U盘ISO启动镜像)制作U盘启动盘
- 医学图像分类 神经网络,神经网络图像识别技术
- 手机号码归属地查询,手机号码归属地批量查询
- 基于网络安全相关的开源项目技术预研分析报告
- java 策略模式会员_设计模式——策略模式:会员价格体系的简单实现
- 【软路由安装(PVE+ikuai)】
- Qt编写物联网管理平台13-短信告警
- 接口测试 Pytest断言处理_告警断言
- 携程到底有没有大数据杀熟?!
- 小程序分包加载不同项目字体图标引用问题
- tf SavedModel 转换为 可使用 tfjs 加载 的形式
- 未来软件工作室2019年年会总结
热门文章
- ST-LINK/V2 + STM8 + STVP 下载程序+Error on Option Bytes
- 4. Python--Scipy库(下/13-17)
- 12月最新仿知音漫画网站源码+手机端,小说漫画生成静态文件,超强负载量安全可靠
- Java图形化界面---进度条
- 【python句柄获取】——简单明了的获取窗口句柄,并使用句柄操作获取相应内容(全网最详细)
- 无人货架APP开发(软件源码)
- RK3568平台开发系列讲解(安卓篇)理解Android系统的编译
- Android OpenGL 仿自如 APP 裸眼 3D 效果
- 编译原理--词法分析器(python语言实现)
- android8.1.0官方下载,官方Xposed框架For Android8.0/8.1(Oreo)发布v90-beta3版本