我有一个关于人脸检测的最终项目。我决定使用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 :(得分:2)
不幸的是,没有保证消除所有错误检测的方法。但是,您可以调整一些参数以使面部检测在特定图像上更好地工作。
我要做的第一件事就是看看你的错误检测。如果它们往往比图像中的典型面更大或更小,那么您可以尝试调整MinSize和MaxSize参数来摆脱它们。
您也可以尝试使用其他型号,i。即'FrontalFaceLBP'代替'FrontalFaceCART'。
如果这不起作用,你可以尝试一个更聪明的技巧。首先使用“UpperBody”分类模型检测人的上半身。然后检测面部,并仅保留上半身内包含的面部。这可能会减少错误检测,但你也有可能错过真实的面孔。
最后,您可以使用trainCascadeObjectDetector
功能训练自己的面部检测器。但这绝对超出了您的项目范围。