2

我有一个关于人脸检测的最终项目。我决定使用 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');
4

1 回答 1

2

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

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

您也可以尝试使用不同的模型,即“FrontalFaceLBP”而不是“FrontalFaceCART”。

如果这不起作用,您可以尝试更聪明的技巧。首先使用“UpperBody”分类模型检测人的上身。然后检测人脸,只保留包含在上半身中的人脸。这可能会减少错误检测,但您也面临丢失真实面孔的风险。

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

于 2013-11-26T18:36:28.933 回答