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

在Matlab中使用计算机视觉工具箱(Viola-Jones)进行人脸检测,matlab,image-processing,computer-vision,matlab-cvst,viola-jones,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

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

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

我要做的第一件事就是看看你的错误发现。如果它们往往比图像中的典型人脸大或小,则可以尝试调整MinSize和MaxSize参数以消除它们

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

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


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

问题是什么?你能澄清一下吗?程序用另一个不同的物体检测正确的脸,我只想程序只检测正确的脸。非常感谢kkuilla。非常感谢Dima,我改变了分类模型,它成功了。我现在很高兴,再次感谢^^@yigitcannalci您能投票支持您接受的答案并接受它吗。