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