主要内容

基于CAMShift的人脸检测与跟踪

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

简介

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

  1. 检测要跟踪的人脸

  2. 识别面部特征

  3. 追踪面部

第一步:检测要跟踪的人脸

在你开始追踪一张脸之前,你需要先检测它。使用愿景。CascadeObjectDetector在视频帧中检测人脸的位置。级联目标检测器使用Viola-Jones检测算法和训练好的分类模型进行检测。默认情况下,检测器被配置为检测人脸,但也可以配置为其他对象类型。

创建级联检测器对象。faceDetector = vision.CascadeObjectDetector();读取视频帧并运行检测器。videoFileReader = videereader (“visionface.avi”);videoFrame = readFrame(videoFileReader);bbox = step(faceDetector, videoFrame);在检测到的人脸周围绘制返回的包围框。videoOut = insertObjectAnnotation(视频帧,“矩形”bbox,“脸”);数字,imshow(videoOut),标题(“发现脸”);

您可以使用级联对象检测器在连续的视频帧中跟踪人脸。然而,当面部倾斜或转头时,你可能就无法追踪了。这种限制是由于用于检测的训练分类模型的类型。为了避免这个问题,并且由于对每个视频帧执行人脸检测是计算密集型的,本例使用一个简单的面部特征进行跟踪。

第二步:识别面部特征

一旦人脸在视频中被定位,下一步就是识别一个可以帮助你追踪人脸的特征。例如,您可以使用形状、纹理或颜色。选择一个对象唯一的特征,即使对象移动也保持不变。

在本例中,使用肤色作为跟踪的特征。肤色在面部和背景之间提供了很好的对比,并且不会随着面部旋转或移动而改变。

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

[hueChannel,~,~] = rgb2hsv(视频帧);显示Hue通道数据,并在面部周围绘制边框。figure, imshow(hueChannel), title(“Hue通道数据”);矩形(“位置”bbox (1:)“线宽”2,“EdgeColor”,[1 10 0])

第三步:跟踪脸部

选择肤色作为要跟踪的特性后,现在可以使用愿景。HistogramBasedTracker为跟踪。基于直方图的跟踪器使用CAMShift算法,该算法提供了使用像素值直方图跟踪对象的能力。在这个例子中,Hue通道像素是从被检测人脸的鼻子区域提取的。这些像素用于初始化跟踪器的直方图。这个例子使用这个直方图在连续的视频帧中跟踪对象。

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

noseDetector =视觉。CascadeObjectDetector (“鼻子”“UseROI”,真正的);noseBBox = step(noseDetector, videofframe, bbox(1,:));创建一个跟踪对象。tracker = vision.HistogramBasedTracker;中的Hue通道像素初始化跟踪器直方图%的鼻子。initializeObject(tracker, hueChannel, noseBBox(1,:));创建一个视频播放器对象用于显示视频帧。videoPlayer = vision.VideoPlayer;在连续的视频帧中跟踪面部,直到视频结束。。hasFrame (videoFileReader)提取下一个视频帧videoFrame = readFrame(videoFileReader);% RGB -> HSV[hueChannel,~,~] = rgb2hsv(视频帧);使用Hue通道数据跟踪bbox = step(跟踪器,hueChannel);在被跟踪的对象周围插入一个包围框videoOut = insertObjectAnnotation(视频帧,“矩形”bbox,“脸”);使用视频播放器对象显示带注释的视频帧步骤(放像机、videoOut);结束%释放资源释放(放像机);

总结

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

参考

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

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