《OpenCV计算机视觉》——人脸检测__Haar特征、级联分类器

文章目录

  • Haar特征
    • 一、定义与原理
    • 二、分类
    • 三、计算方法
    • 四、应用
    • 五、优缺点
  • 级联分类器
    • 一、定义与原理
    • 二、结构与组成
    • 三、举例说明

Haar特征

Haar特征是一种在计算机视觉和图像处理中常用的特征描述方法,特别适用于物体识别,尤其是人脸检测。以下是对Haar特征的详细解释:

一、定义与原理

Haar特征是一种反映图像灰度变化的特征,通过计算图像中不同位置和大小的矩形框内像素值的差异来提取图像的特征。具体来说,它使用黑白两种矩形框组合成特征模板,在特征模板内计算黑色矩形像素和与白色矩形像素和的差值来表示这个模板的特征值。

二、分类

Haar特征可以分为多种类型,包括但不限于:

  1. 边缘特征:用于检测图像中的边缘信息。
  2. 线性特征:用于检测图像中的线性结构。
  3. 中心特征:通常用于检测图像中的中心区域或对称结构。
  4. 对角线特征:用于检测图像中的对角线结构。
  • 各特征的矩形框如下图所示:
    在这里插入图片描述

三、计算方法

  • 步骤如下:
      1. 选定一个矩形框。
      1. 将矩形框分成两个或四个相等的小矩形。
      1. 分别计算两个小矩形内像素值的和。
      1. 计算两个小矩形之间像素值的差异,得到一个Haar特征值。
      1. 通过在图像上移动矩形框,并对每个矩形框都计算Haar特征值,最终得到图像的Haar特征向量。
  • 注意
    • 矩形框要逐像素点地划过(遍历) 整个图像获取每个位置的特征值
    • 矩形的大小可以根据需要进行任意调整
  • 如下图理解:
    在这里插入图片描述

四、应用

Haar特征在人脸检测、物体识别等领域有着广泛的应用。例如,在人脸检测中,Haar特征可以用来提取人脸的局部特征,如眼睛、嘴巴、鼻子等部位的形状、大小、位置等信息。通过对这些特征进行组合和比较,可以实现对人脸的识别。

五、优缺点

优点

  1. 计算速度快,能够在实时性要求较高的场景中使用。
  2. 对于光照、旋转和尺度变化等影响较小,具有一定的鲁棒性。

缺点

  1. 对于图像的复杂度不够敏感,不能很好地描述图像的纹理和形状特征。
  2. 对于噪声和干扰较为敏感,需要采取一些方法进行降噪和去除干扰。
  3. 只能提取图像的局部特征,无法很好地捕捉全局特征。

级联分类器

一、定义与原理

  • 级联分类器通过将多个分类器级联起来,对输入的样本进行多次分类。每次分类器对样本分类的结果会影响到后续分类器对该样本的分类决策。
  • 具体来说,第一个分类器对输入的样本进行分类,如果认为是负样本,则直接返回结果并结束分类过程;如果认为是正样本,则将该样本传递给下一个分类器进行分类。以此类推,直到所有分类器都已经对该样本进行了分类决策。如果经过多次分类器的分类决策之后,该样本仍旧被判断为正样本,则最终的结果将该样本判定为正样本;如果被判断为负样本,则最终的结果将该样本判定为负样本。

二、结构与组成

  • 级联分类器通常由多个强分类器串联而成,每个强分类器又包含若干个弱分类器。
  • 这些弱分类器通过AdaBoost等算法进行训练,以提高其分类能力。在级联分类器中,靠前的强分类器相较于靠后的强分类器包含的特征相对较少。这是因为当非人脸与人脸差异过大时,分类器仅需要很少的特征就可以将其检测出来。

三、举例说明

  • 分类器需要对图像的多个特征进行识别
  • 例如:
    • 在识别一个动物是狗(正类)还是其他动物(负类)时,直接根据多个条件进行判断,流程是非常烦琐的。如果先判断该动物有几条腿。有四条腿的动物被判断为可能为狗,并对此范围内的对象继续进行分析和判断。没有四条腿的动物直接被否决,即不可能是狗。只通过比较腿的数目就能排除样本集中大量的负类(如鸡、鸭、鹅等不是狗的动物的实例)。
    • 级联分类器就是基于这种思路将多个简单的分类器按照一定的顺序级联而成的。
    • 如下图结构理解:
      在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/894438.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一次性入门三款分布式定时任务调度框架:Quartz、ElasticJob3.0、xxl-job

分布式定时任务调度框架(文末有源码) 前言1、Quartz1.1 数据库1.2 maven依赖1.3 代码实现1.3.1 创建一个job1.3.1 为job设置trigger 1.4 配置文件1.5 启动、测试1.1 单机1.2 集群 2、ElasticJob2.1 下载zk2.2 新建三个类型的作业2.3 配置文件2.4 启动项目…

基于Java微信小程序的水果销售系统详细设计和实现(源码+lw+部署文档+讲解等)

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不…

创客项目秀 | 基于使用 XIAO BLE Sense 和 Edge Impulse 的宠物活动跟踪器

今天为大家带来的是来自美国的创作者米顿-达斯的作品:宠物活动跟踪器.这个装置主要是为宠物主人提供关于宠物日常活动量的详尽数据,还能够根据宠物的独特需求,提供个性化的健康建议和活动指导。 项目背景 为了全面促进宠物的健康与活力,采用…

Python 数值计算与数值分析基础

Python 数值计算与数值分析基础 示例演示 当涉及到Python数值计算和数值分析时,下面是20个示例,涵盖了一些常见的用法: 1.数值积分: 在 Python 中,你可以使用 scipy.integrate 模块中的 quad 函数来进行数值积分 …

【Linux驱动开发】通过ioremap虚拟内存映射的寄存器操作驱动、C应用函数库开发 devmem命令测试(正点原子STM32MP135文档BUG)

【Linux驱动开发】通过ioremap虚拟内存映射的寄存器操作驱动、C应用函数库开发 devmem命令测试(正点原子STM32MP135文档BUG) 【Linux驱动开发】通过ioremap虚拟内存映射的寄存器操作驱动 devmem命令测试 gitee库: https://gitee.com/Mike_Zho…

记一次Netty模拟压测应用开发

背景 最近需要开发一个上游端模拟数据推送,测试高流量下下游的业务功能处理速度,大致架构如下 准备工作 构造消息体,由于是模拟大量数据推送并没有业务逻辑,所以我们使用池化的directBuffer增加推送消息以及减少创建和消费buf…

13.1 Linux_网络编程_TCP/UDP

字节序 1、概述 什么是字节序: 字节序就是字节的存储顺序,分为大端字节序和小端字节序。 大端字节序:低地址存高位(网络)小端字节序:低地址存低位(主机) 检验主机字节序模式&…

Java @RequestPart注解:同时实现文件上传与JSON对象传参

RequestPart注解:用于处理multipart/form-data请求的一部分,通常用于文件上传或者处理表单中的字段。 java后端举例: PostMapping("/fileTest")public AjaxResult fileTest(RequestPart("file") MultipartFile file,Req…

【时间之外】IT人求职和创业应知【10】

认知决定你的赚钱能力。以下是今天可能影响你求职和创业的热点新闻: 今日关键字:SFISF【互换便利】 1. 央行推出股票回购增持再贷款,科技股全线爆发 新闻概要: 2024年10月18日,央行等三部门联合发布《关于设立股票回购增持再贷款有关事宜的通知》,同时表示年底有进一步…

基于GeoScene Pro的开源数据治理与二维制图规范化处理智能工具箱

内容导读 本文描述的是一个基于GeoScene Pro4.0/ArcGIS3.1 Pro平台的开源数据治理与二维制图规范化处理智能工具箱(免费试用,文末有获取方式),旨在解决GIS应用中数据转换、检查、治理和制图数据规范化处理方面的问题。 工具箱结合了Geoscene/ArcGIS Pr…

Asp.net Core SignalR 跨域设置(Furion)

前端VUE2.0/3.0 后端NET8.0/NET6.0 框架Furion 前端安装SignalR通信库&#xff0c;下面任意一条安装指令都可以&#xff0c;根据项目自行选择 npm install microsoft/signalr yarn add microsoft/signalr前端使用 <script> import { HubConnectionBuilder } from micr…

[Halcon矩阵] 通过手眼标定矩阵计算相机旋转角度

&#x1f4e2;博客主页&#xff1a;https://loewen.blog.csdn.net&#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;本文由 丶布布原创&#xff0c;首发于 CSDN&#xff0c;转载注明出处&#x1f649;&#x1f4e2;现…

SpringBoot教程(三十二) | SpringBoot集成Skywalking链路跟踪

SpringBoot教程&#xff08;三十二&#xff09; | SpringBoot集成Skywalking链路跟踪 一、Skywalking是什么&#xff1f;二、Skywalking与JDK版本的对应关系三、Skywalking下载四、Skywalking 数据存储五、Skywalking 的启动六、部署探针前提&#xff1a; Agents 8.9.0 放入 项…

C#从零开始学习(用unity探索C#)(unity Lab1)

初次使用Unity 本章所有的代码都放在 https://github.com/hikinazimi/head-first-Csharp Unity的下载与安装 从 unity官网下载Unity Hub Unity的使用 安装后,注册账号,下载unity版本,然后创建3d项目 设置窗口界面布局 3D对象的创建 点击对象,然后点击Move Guzmo,就可以拖动…

云服务解决方案,针对小程序、网页、HTML5等轻量化视频解决方案

无论是社交媒体上的短视频分享&#xff0c;还是企业官网中的产品展示&#xff0c;亦或是教育平台上的互动课程&#xff0c;高质量、易制作的视频内容正以前所未有的速度改变着我们的生活方式和工作模式。然而&#xff0c;面对多样化的发布平台和日益增长的个性化需求&#xff0…

Python从0到100(六十五):Python OpenCV-图像运颜色转换及几何变换

前言&#xff1a; 零基础学Python&#xff1a;Python从0到100最新最全教程。 想做这件事情很久了&#xff0c;这次我更新了自己所写过的所有博客&#xff0c;汇集成了Python从0到100&#xff0c;共一百节课&#xff0c;帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

.net 根据html的input type=“week“控件的值获取星期一和星期日的日期

初始化 "week" 控件值&#xff1a; //MVC部分 public ActionResult WeeklyList() {int weekNo new GregorianCalendar().GetWeekOfYear(System.DateTime.Now, System.Globalization.CalendarWeekRule.FirstDay, DayOfWeek.Sunday);string DefaultWeek DateTime.No…

ssm医院交互系统+vue

系统包含&#xff1a;源码论文 所用技术&#xff1a;SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习&#xff0c;获取源码请私聊我 需要定制请私聊 目 录 摘要 I Abstract II 1绪论 1 1.1研究背景与意义 1 1.1.1研究背景 1 1.1.2研究意义 1 1.2国内外研究…

python+大数据+基于spark的短视频推荐系统【内含源码+文档+部署教程】

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ &#x1f345;由于篇幅限制&#xff0c;想要获取完整文章或者源码&#xff0c;或者代做&am…

Mybatis框架 day1018

ok了家人们书接上文&#xff0c;我们继续学习mybatis框架 五.数据输出 5.7 属性和字段的映射 5.7.1 别名映射 将数据库表的字段别名设置成和实体类属性一致。 <!-- 给每一个字段设置一个别名&#xff0c;让别名和Java实体类中 属性名一致 --> <select id"fi…