主要内容

vision.CascadeObjectDetector

使用Viola-Jones算法检测对象

描述

级联对象探测器使用Viola-Jones算法来检测人的脸,鼻子,眼睛,嘴,或上半身。您还可以使用图片标志训练一个自定义分类器来使用这个系统对象。有关函数是如何工作的,看到的开始使用级联对象探测器

检测面部特征或上半身的图片:

  1. 创建vision.CascadeObjectDetector对象并设置其属性。

  2. 调用对象的参数,就好像它是一个函数。

了解更多关于系统对象是如何工作的,看到的系统对象是什么?

创建

描述

例子

探测器= vision.CascadeObjectDetector创建一个使用Viola-Jones算法检测器来检测对象。

探测器= vision.CascadeObjectDetector (模型)创建一个检测器配置为检测对象定义的输入特征向量,模型

探测器= vision.CascadeObjectDetector (XMLFILE)创建一个探测器,配置使用指定的自定义分类模型XMLFILE输入。

探测器= vision.CascadeObjectDetector (名称,值)设置使用一个或多个属性名称-值对。在报价附上每个属性的名字。例如,探测器= vision.CascadeObjectDetector (“ClassificationModel”、“UpperBody”)

属性

全部展开

属性,除非另有注明nontunable后,这意味着你不能改变它们的值调用对象。对象锁当你叫他们,释放函数打开它们。

如果一个属性可调在任何时候,你可以改变它的值。

改变属性值的更多信息,请参阅系统设计在MATLAB使用系统对象

训练有素的级联分类模型,指定为一个特征向量。的ClassificationModel属性控制类型的对象来检测。默认情况下,探测器被配置为检测的面孔。

你可以设置这个角色向量包含自定义XML文件分类模型,或一个有效的模型特征向量下面列出。你可以训练一个定制的分类模型使用trainCascadeObjectDetector函数。函数可以训练模型使用Haar-like特性,直方图的面向梯度(猪),或局部二进制模式(LBP)。如何使用这些功能的详细信息,请参见开始使用级联对象探测器

分类模型 图像大小用来训练模型 模型描述
“FrontalFaceCART”(默认) 20 [20] 检测面临着站起来,向前,面对。这个模型是由弱分类器,基于分类和回归树分析(车)。这些分类器使用哈雾特性对面部特征进行编码。CART-based分类器提供的能力模型高阶面部特征之间的依赖关系。[1]
“FrontalFaceLBP” 24 (24) 检测面临着站起来,向前,面对。这个模型是由弱分类器,基于一个树桩的决定。这些分类器使用局部二进制模式(LBP)编码的面部特征。枸杞多糖功能可以提供鲁棒性对照明的变化。[2]
“UpperBody” (18 22) 检测到上身地区,它被定义为头和肩膀。这个模型使用哈雾特性编码头部和肩部区域的细节。因为它使用更多的功能在头,这个模型是更健壮的姿势变化,例如头旋转/倾斜。[3]
“EyePairBig”
“EyePairSmall”
45 [11]
22 [5]
检测到一双眼睛。的“EyePairSmall”使用一个较小的图像模型训练。这使得模型检测的小眼睛“EyePairBig”可以检测模型。[4]
“LeftEye”
“RightEye”
18 [12] 分别检测左、右眼。这些模型是由弱分类器,基于一个树桩的决定。这些分类器使用哈雾特性编码细节。[4]
“LeftEyeCART”
“RightEyeCART”
20 [20] 分别检测左、右眼。弱分类器组成CART-trees这些模型。而决定树桩,CART-tree-based分类器能更好地高阶相关性模型。[5]
“ProfileFace” 20 [20] 检测到正直的脸概要文件。这个模型是由弱分类器,基于一个树桩的决定。这些分类器使用哈雾特性编码细节。
“口” 25 [15] 检测到嘴。这个模型是由弱分类器,基于决策树桩,使用编码的嘴哈雾特性的细节。[4]
“鼻子” (15 18) 这个模型是由弱分类器,基于决策树桩,使用编码的鼻子哈雾特性的细节。[4]

规模最小的检测对象,指定为一个双元素向量(高度宽度]。设置该属性的像素最小大小区域包含一个对象。的值必须大于或等于图像大小用来训练模型。使用这个属性来减少计算时间当你知道之前的最小物体大小处理图像。当你不为这个属性指定一个值,图像的检测器集的大小用来训练分类模型。

详情解释之间的关系设置的大小和可检测的对象ScaleFactor财产,看到算法部分。

可调:是的

规模最大的检测对象,指定为一个双元素向量(高度宽度]。指定最大的对象的大小(以像素为单位)。使用这个属性来减少计算时间当你知道之前的最大对象大小处理图像。当你不为这个属性指定一个值,检测器集大小()。

详情解释之间的关系设置的大小和可检测的对象ScaleFactor财产,看到算法部分。

扩展检测、多尺度对象指定为一个值大于1.0001。之间的比例因子逐步尺度检测分辨率MinSize最大尺寸。你可以设置一个理想值使用的比例因子:

大小()/ (大小()- - -0.5)

探测器尺度之间的增量搜索区域MinSize最大尺寸使用以下关系:

搜索区域=((培训规模)* (ScaleFactorN))

N是当前增量,整数大于零,然后呢培训规模是用来训练分类模型的图像大小。

可调:是的

检测阈值,指定为一个整数。阈值定义了标准需要声明一个最终的检测在一个有多个检测物体周围的地方。托管组检测,满足阈值合并产生一个目标对象周围的边界框。增加这个阈值可以帮助抑制虚假检测通过要求目标对象多次被发现在多尺度检测阶段。当你设定这个属性0返回,所有的检测都没有执行阈值或合并操作。这个属性是可调的。

使用感兴趣的区域,指定为真正的。将此属性设置为真正的检测对象在输入图像中感兴趣的一个矩形区域。

使用

描述

bbox=探测器()返回一个4矩阵,bbox,定义了包含检测对象的边界框。探测器进行多尺度对象检测输入图像,

bbox=探测器(,roi)检测对象在指定的矩形的搜索区域roi。设置“UseROI”财产真正的使用这种语法。是一个灰度或真彩图像(RGB)。

detectionResults=探测器(ds)在所有返回的图像检测对象输入数据存储的功能。

输入参数

全部展开

指定输入图像,灰度或真彩(RGB)。

数据存储,指定为一个数据存储对象包含图片的集合。每个必须灰度或RGB图像。函数过程只有第一列的数据存储,它必须包含图片和必须细胞数组或包含多个列的表。因此,数据存储函数必须返回图像数据在第一列中。

分类模型,指定为一个特征向量。的模型输入描述了检测的对象的类型。有几种有效的模型特征向量,如“FrontalFaceCART”、“UpperBody”和“ProfileFace”。看到ClassificationModel属性描述可用模型的完整列表。

自定义分类模型,指定为一个XML文件。的XMLFILE可以创建使用吗trainCascadeObjectDetector函数或OpenCV(开源计算机视觉)培训功能。您必须指定一个完整或相对路径XMLFILE,如果它不是在MATLAB®路径。

感兴趣的矩形区域内的图像,指定为一个研制出向量,xy宽度高度]。

输出参数

全部展开

检测,作为一个返回4元素的矩阵。输出矩阵的每一行包含一个研制出向量,(xy宽度高度),指定像素,边界框的左上角和大小。

检测结果,作为三栏返回表变量名,盒子,分数,标签。的盒子4矩阵,发现在图像边界框的对象。每一行包含一个边界框的第4单元矢量格式(x,y,宽度,高度]。格式指定左上角位置和大小的像素边界框在相应的形象。

对象的功能

使用一个目标函数,指定系统对象™作为第一个输入参数。例如,释放系统资源的系统对象命名obj使用这个语法:

发行版(obj)

全部展开

一步 运行系统对象算法
释放 释放资源,并允许修改系统对象属性值和输入特征
重置 重置的内部状态系统对象

例子

全部折叠

创建一个人脸检测器对象。

faceDetector = vision.CascadeObjectDetector;

读取输入图像。

我= imread (“visionteam.jpg”);

检测的面孔。

bboxes = faceDetector(我);

注释发现脸。

ifac = insertObjectAnnotation(我“矩形”bboxes,“脸”);图imshow (ifac)标题(检测到人脸的);

图包含一个坐标轴对象。坐标轴对象与标题检测到人脸包含一个类型的对象的形象。

创建一个身体探测器对象并设置属性。

bodyDetector = vision.CascadeObjectDetector (“UpperBody”);bodyDetector。MinSize=[60 60]; bodyDetector.MergeThreshold = 10;

读取输入图像和检测的上半身。

I2 = imread (“visionteam.jpg”);bboxBody = bodyDetector (I2);

注释上发现尸体。

IBody = insertObjectAnnotation (I2,“矩形”bboxBody,“上身”);图imshow (IBody)标题(检测到上半身的);

图包含一个坐标轴对象。坐标轴对象标题上检测到的身体包含一个类型的对象的形象。

算法

全部展开

引用

[1]Lienhart R。,Kuranov A。,V. Pisarevsky "Empirical Analysis of Detection Cascades of Boosted Classifiers for Rapid Object Detection."美国25日DAGM研讨会模式识别。德国马格德堡,2003年。

[2]Ojala Timo, Pietikainen马蒂·,Maenpaa遮阳帽,“多分辨率灰度和旋转不变的纹理分类与局部二进制模式”。在IEEE模式分析与机器智能,2002。问题7卷24日,页。971 - 987。

[3]Kruppa H。,Castrillon-Santana M., and B. Schiele. "Fast and Robust Face Finding via Local Context" .美国联合IEEE国际研讨会视觉追踪和监测的监测和绩效评估,2003年,页157 - 164。

[4]Castrillon马可,Deniz奥斯卡,Guerra公爵卡耶塔诺,埃尔南德斯马里奥,“ENCARA2:实时检测多个视频流在不同的决议”。金宝搏官方网站在杂志的视觉传达和图像表示2007(18):130 - 140页。

[5]于石漆“眼睛检测。”Shiqi Yu’s Homepage. http://yushiqi.cn/research/eyedetection.

[6]Viola,保罗和迈克尔·j·琼斯,“快速目标检测使用了简单的级联功能”,2001年IEEE计算机学会学报计算机视觉与模式识别会议,2001年。数量:1、pp.511 - 518。

[7]中间人,N。,B. Triggs, " Histograms of Oriented Gradients for Human Detection" .国际工程师协会下属的计算机协会的会议上计算机视觉和模式识别。卷1,(2005),页886 - 893。

[8]Ojala, T。,米。Pietikainen, and T. Maenpaa, " Multiresolution Gray-scale and Rotation Invariant Texture Classification With Local Binary Patterns" .IEEE模式分析与机器智能。卷24,2002年7月7号,第971 - 987页。

扩展功能

版本历史

介绍了R2012a