Python-OpenCV学习(十二)Haar联级-阿里云开发者社区

开发者社区> 大数据> 正文

Python-OpenCV学习(十二)Haar联级

简介:

haar特征:
Haar特征是一种反映图像的灰度变化的,像素分模块求差值的一种特征。它分为三类:边缘特征、线性特征、中心特征和对角线特征。用黑白两种矩形框组合成特征模板,在特征模板内用 黑色矩形像素和 减去 白色矩形像素和来表示这个模版的特征值。例如:脸部的一些特征能由矩形模块差值特征简单的描述,如:眼睛要比脸颊颜色要深,鼻梁两侧比鼻梁颜色要深,嘴巴比周围颜色要深等。但矩形特征只对一些简单的图形结构,如边缘、线段较敏感,所以只能描述在特定方向(水平、垂直、对角)上有明显像素模块梯度变化的图像结构。
1
如上图A、B、D模块的图像Haar特征为:v=Sum白-Sum黑
C 模块的图像Haar特征为:v=Sum白(左)+Sum白(右)-2*Sum黑
这里要保证白色矩形模块中的像素与黑色矩形的模块的像素数相同,所以乘2
对于一幅图像来说,可以通过通过改变特征模板的大小和位置,可穷举出大量的特征来表示一幅图像。上图的特征模板称为“特征原型”;特征原型在图像子窗口中扩展(平移伸缩)得到的特征称为“矩形特征”;矩形特征的值称为“特征值”。例如在24*24大小的图像中可以以坐标(0,0)开始宽为20高为20矩形模版计算上图A特征,也可以以坐标(0,2)开始宽为20高为20矩形模版计算上图A特征,也可以以坐标(0,0)开始宽为22高为22矩形模版计算上图A特征,这样矩形特征值随着类别、大小和位置的变化,使得很小的一幅很小的图像含有非常多的矩形特征。矩形特征值是矩形模版类别、矩形位置和矩形大小这三个因素的函数。
(来自博客http://blog.csdn.net/lanxuecc/article/details/52222369)
每个类haar特征都描述了相邻图片区域的对比模式。例如,边、顶点和细线都能生成具有判断性的特征。
对给定的图像、特征可能会因区域大小而有所不同,区域大小也被称为窗口大小。即使窗口大小不一样,仅在尺度上不同的两幅图像也有相似的特征。因此,能为不同大小的窗口生成特征方程有用。这些特征的集合称为级联。harr级联具有尺度不变性,换句话说,它在尺度变化上具有鲁棒性。OpeCV提供了尺度不变Haar级联的分类器和追踪器,并将其保持成指定的文件格式。
Opencv的haar级联不具有选择不变性。即对于人脸检测来说,人脸倾斜或者侧脸都会导致无法检测,当然也有方法来卸载,如在训练的时候加入人脸倾斜或者侧脸的训练集。
Haar级联数据的获取:
在Opencv源码中会有一个data/haarcascades。该文件包含了所有OpenCV的人脸检测XML文件,这些文件可用于检测静止图像,视频图像中的人脸。
在工程下面创建一个名为cascades的文件夹,往其中复制:
harrcascade_profileface.xml
harrcascade_righteye_2splits.xaml
haarcascade_russian_plate_number.xml
haarcascade_smile.xml
haarcascade_upperbody.xml
从文件名中可以知道这些级联用于检测人脸,眼睛,鼻子和嘴,这些文件需要真面直立的人脸图像,在创建人脸检测器时会使用这些文件

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
大数据
使用钉钉扫一扫加入圈子
+ 订阅

大数据计算实践乐园,近距离学习前沿技术

其他文章