2012-09-25 6 views
10

MATLABにCascadeObjectDetectorという質問があります。 MATLABでCascadeObjectDetectorのソースコードでは、私は以下を参照してください。MATLABはOpenCv CascadeClassifierを使用していますか?

pCascadeClassifier; % OpenCV pCascadeClassifier 

は、それから私は、次を参照してください。

%------------------------------------------------------------------ 
% Constructor 
%------------------------------------------------------------------ 
function obj = CascadeObjectDetector(varargin)    
    obj.pCascadeClassifier = vision.internal.CascadeClassifier; 
    ... 
end 

そしてstepImpl中:

bbox = double(obj.pCascadeClassifier.detectMultiScale(I, ... 
      double(obj.ScaleFactor), ... 
      uint32(obj.MergeThreshold), ...    
      uint32(obj.MinSize), ... 
      uint32(obj.MaxSize))); 

あなたは知っていますか、vision.internal.CascadeClassifierは何ですか?それは単にOpenCV CascadeClassifierですか?そして、detectMultiScaleのソースコードはどこで機能していますか?

+0

で入手できます。最新のOpenCVのdetectMultiscaleは、[ここ](http://code.opencv.org/projects/opencv/repository/revisions/master/entry/modules/objdetect/src/cascadedetect.cpp)です。 #L1089) –

答えて

0

事は、MATLABは、次のオブジェクト検出器

を提供することである
  1. ここ
  2. ブロブ解析
  3. ビオラジョーンズアルゴリズム 詳細情報テンプレートマッチング:今http://www.mathworks.ch/products/computer-vision/description4.html

についての話をするとopencv。顔検出(一般にオブジェクト検出)に使用されるopencv関数cv.HaarDetectObjects()は、inturnがharrのような機能を使用するviola jonesアルゴリズムを使用します。

私の個人的な意見は、実装がわずかに異なる可能性がありますが、基本的に同じアルゴリズムを持っていることです。

まだ確信が持たれていて、matlabからopencv関数を使用したい場合は、MEXを使用することができます。だからこの方法では、MATLABからcv.HaarDetectObjects()を使用することができます。詳細は、http://www.mathworks.ch/discovery/matlab-opencv.html

+0

主な問題は、MATLABのバージョンがOpenCVよりはるかに優れていることです。たとえば、MATLABはFaceCascadeDetectorによってサングラスの顔を見つけることは非常に多いですが、OpenCVは非常にまれなサングラスの顔を見つけます。これは、MATLABが3つのアルゴリズムを使用し、OpenCVが1つのアルゴリズムしか使用していないためだと思います。 – EgorD

+0

いいえ、私の信念の理由ではありません。私は、どのような種類のテンプレート(トレーニングデータ)が使用されているかについて考えています。 – mkuse

+0

MATLABとOpenCVは同じカスケードを使用します。問題はトレーニングデータではないので、コード内にあります。 – EgorD

関連する問題