2

顔検出に関する最終プロジェクトがあります。ご存知のように、このツールボックスはオブジェクト検出に Viola Jones アルゴリズムを使用しているため、Matlab と Computer Vision Toolbox を使用してこのプロジェクトを行うことにしました。

私は以下のコードを書きましたが、コードは顔を非顔オブジェクトと一致させます。

質問
顔のみに一致するようにコードを変更するにはどうすればよいですか?

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 パラメータを調整してそれらを取り除くことができます。

「FrontalFaceCART」の代わりに「FrontalFaceLBP」など、別のモデルを使用することもできます。

それがうまくいかない場合は、もっと巧妙なトリックを試すことができます。最初に、'UpperBody' 分類モデルを使用して人々の上半身を検出します。次に、顔を検出し、上半身に含まれる顔のみを保持します。これにより、誤検出が減る可能性がありますが、実際の顔を見逃すリスクもあります。

最後に、関数を使用して独自の顔検出器をトレーニングできますtrainCascadeObjectDetector。しかし、それは間違いなくあなたのプロジェクトの範囲を超えています。

于 2013-11-26T18:36:28.933 に答える