主要内容

基于CAMShift的人脸检测与跟踪

这个例子展示了如何自动检测和跟踪人脸。

介绍

目标检测和跟踪在许多计算机视觉应用中都很重要,包括活动识别、汽车安全和监视。在本例中,您将开发一个简单的面部跟踪系统,将跟踪问题分为三个独立的问题:

  1. 检测要跟踪的人脸

  2. 识别跟踪的面部特征

  3. 追踪面部

第1步:检测朝踪的脸部

在开始跟踪脸之前,您需要先检测到它。使用Vision.cascadeObjectDetector在视频帧中检测人脸的位置。级联对象检测器使用Viola-Jones检测算法和训练过的分类模型进行检测。默认情况下,检测器被配置为检测人脸,但也可以配置为其他对象类型。

%创建级联检测器。FaceDetector = Vision.cascadeObjectDetector();%读取视频帧并运行检测器。videoFileReader = VideoReader ('Visionface.avi');videoFrame = readFrame (videoFileReader);bbox =步骤(FaceDetector,Videoframe);%在检测到的面周围绘制返回的边界框。Videoout = InsertObjectAnnotation(视频rame,'长方形'bbox,'脸');图,imshow(videoout),标题('检测到脸');

您可以使用级联对象检测器跟踪连续视频帧的脸部。然而,当面部倾斜或者人转动头部时,你可能会失去跟踪。这种限制是由于用于检测的训练分类模型的类型。为避免此问题,因为对每个视频帧的执行面部检测是计算密集的,因此该示例使用简单的面部特征进行跟踪。

第二步:识别面部特征

一旦在视频中找到了人脸,下一步就是识别一个可以帮助你跟踪人脸的特征。例如,您可以使用形状、纹理或颜色。选择一个对象独有的特性,即使在对象移动时也保持不变。

在此示例中,您可以使用肤色作为跟踪的功能。肤色在面部和背景之间提供了很多对比,并且由于面部旋转或移动而不会改变。

通过从转换到HSV颜色空间的视频帧中提取Hue来获取肤色信息。

[Huechannel,〜,〜] = RGB2HSV(视频rame);%显示Hue通道数据,并在脸部周围绘制边界框。图,imshow (hueChannel)、标题('色调频道数据');长方形('位置',bbox(1,:),'行宽'2,“EdgeColor”,[1 1 0])

第3步:追踪脸部

使用肤色选择作为跟踪的功能,您现在可以使用Vision.HistimographasedTracker.为跟踪。基于直方图的跟踪器使用CAMShift算法,该算法能够使用像素值的直方图跟踪对象。在本例中,Hue通道像素是从被检测人脸的鼻子区域提取出来的。这些像素用于初始化跟踪器的直方图。该示例使用此直方图在连续的视频帧中跟踪对象。

在脸部区域内检测鼻子。鼻子不包含任何背景像素,因此可以更准确地测量肤色。

noseDetector =愿景。CascadeObjectDetector ('鼻子'“UseROI”,真正的);noseBBox = step(noseDetector, videoFrame, bbox(1,:)); / /删除noseBBox创建一个跟踪器对象。追踪= vision.HistogramBasedTracker;的Hue通道像素初始化跟踪器直方图% 鼻子。InitializeObject(跟踪器,Huechannel,ForeBbox(1,:));%创建一个用于显示视频帧的视频播放器对象。VideoPlayer = Vision.videoplayer;%在连续的视频帧上追踪面部,直到视频完成。尽管hasFrame (videoFileReader)%提取下一帧视频videoFrame = readFrame (videoFileReader);%RGB  - > HSV[Huechannel,〜,〜] = RGB2HSV(视频rame);%使用Hue通道数据进行跟踪bbox = step(tracker, hueChannel);在被跟踪的对象周围插入一个边界框Videoout = InsertObjectAnnotation(视频rame,'长方形'bbox,'脸');使用视频播放器对象显示带注释的视频帧步骤(放像机、videoOut);结束%释放资源释放(Videoplayer);

概括

在本例中,您创建了一个简单的人脸跟踪系统,它可以自动检测和跟踪单个人脸。试着改变输入视频,看看你是否能追踪到人脸。如果你注意到跟踪效果不佳,检查Hue通道数据,看看面部区域和背景之间是否有足够的对比度。

参考

G.R. Bradski,“作为感知用户界面组件的实时人脸和目标跟踪”,第四届IEEE计算机视觉应用研讨会论文集,1998。

保罗·a·维奥拉和迈克尔·J·琼斯“基于简单特征的增强级联快速目标检测”,IEEE CVPR, 2001。