2

我有一个关于人脸检测的最终项目。我决定使用Matlab和计算机视觉工具箱来完成这个项目,因为如你所知,这个工具箱使用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'); 
+0

问题是什么?你能澄清一下吗? – kkuilla

+0

程序检测与另一个不同的对象正确的面部,我只想程序只检测正确的面部。 – yigitcannalci

+0

非常感谢kkuilla。 – yigitcannalci

回答

2

不幸的是,没有保证消除所有错误检测的方法。但是,您可能可以调整某些参数,以便在特定图像上更好地进行人脸检测。

我会做的第一件事是看你的错误检测。如果它们倾向于大于或小于图像中的典型人脸,那么您可以尝试调整MinSize和MaxSize参数以消除它们。

你也可以尝试使用不同的模型,即我。即'FrontalFaceLBP'而不是'FrontalFaceCART'。

如果这不起作用,您可以尝试更聪明的把戏。首先使用'UpperBody'分类模型检测上半身人群。然后检测脸部,只保留包含在上身内的脸部。这可能会减少错误的检测结果,但是你也面临着丢失真实面孔的风险。

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

+1

非常感谢Dima,我改变了分类模型并且工作。我现在很高兴,再次感谢^^ – yigitcannalci

+1

@yigitcannalci请你给你接受的答案和接受它。 – kkuilla