使用Matlab中的计算机视觉工具箱(Viola Jones)进行人脸检测

时间:2013-11-26 12:11:50

标签: matlab image-processing computer-vision matlab-cvst viola-jones

我有一个关于人脸检测的最终项目。我决定使用Matlab和计算机视觉工具箱来完成这个项目,因为如你所知,这个工具箱使用Viola Jones算法进行物体检测。

我编写了下面的代码,但代码将一个面与非面部对象匹配。

问题
如何更改代码以使其仅与面部匹配?

clear all
clc

% Read input image
I = imread('C:\imageprocessingwithMatlab\Image001.jpg');
figure,imshow(I);

%% Detect Faces in the image
% Create a detector object
faceDetector = vision.CascadeObjectDetector('FrontalFaceCART');   

% Detect faces
bbox = step(faceDetector, I); 

% Draw boxes around detected faces and display results
IFaces = insertObjectAnnotation(I, 'rectangle', bbox, 'Face');
figure, imshow(IFaces), title('Detected Faces');

1 个答案:

答案 0 :(得分:2)

不幸的是,没有保证消除所有错误检测的方法。但是,您可以调整一些参数以使面部检测在特定图像上更好地工作。

我要做的第一件事就是看看你的错误检测。如果它们往往比图像中的典型面更大或更小,那么您可以尝试调整MinSize和MaxSize参数来摆脱它们。

您也可以尝试使用其他型号,i。即'FrontalFaceLBP'代替'FrontalFaceCART'。

如果这不起作用,你可以尝试一个更聪明的技巧。首先使用“UpperBody”分类模型检测人的上半身。然后检测面部,并仅保留上半身内包含的面部。这可能会减少错误检测,但你也有可能错过真实的面孔。

最后,您可以使用trainCascadeObjectDetector功能训练自己的面部检测器。但这绝对超出了您的项目范围。