2012-09-25 12 views
10

Mam pytanie dotyczące CascadeObjectDetector w MATLAB. W kodzie źródłowym CascadeObjectDetector w MATLAB widzę:Czy program MATLAB używa OpenCv CascadeClassifier?

pCascadeClassifier; % OpenCV pCascadeClassifier 

Wtedy widzę:

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

I stepImpl:

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

Czy wiesz, co jest vision.internal.CascadeClassifier? Czy to po prostu OpenCV CascadeClassifier? A gdzie jest kod źródłowy funkcji detectMultiScale?

+0

Najnowszy wykrywacz OpenMV jest [tutaj] (http://code.opencv.org/projects/opencv/repository/revisions/master/entry/modules/objdetect/src/cascadedetect.cpp # L1089) –

Odpowiedz

0

Chodzi o to, że Matlab udostępnia następujące detektory obiektów

  1. szablon dopasowania
  2. analizy blob
  3. altówki-Jones algorytm Więcej informacji: http://www.mathworks.ch/products/computer-vision/description4.html

teraz do omówienia opencv. Funkcja openvv cv.HaarDetectObjects() używana do wykrywania twarzy (i ogólnie do wykrywania obiektów) wykorzystuje algorytm viola jones, który wykorzystuje funkcje przypominające harr.

Moja osobista opinia jest taka, że ​​implementacje mogą się nieznacznie różnić, ale zasadniczo mają ten sam algorytm.

Jeśli nadal nie jesteś przekonany i chciałbyś użyć funkcji opencv z MATLAB, możesz użyć MEX. W ten sposób możesz użyć cv.HaarDetectObjects() z MATLAB. Więcej szczegółów można znaleźć pod adresem: http://www.mathworks.ch/discovery/matlab-opencv.html

+0

Głównym problemem jest to, że wersja MATLAB działa znacznie lepiej niż OpenCV. Na przykład MATLAB często natrafia na twarze w okularach przeciwsłonecznych FaceCascadeDetector, ale OpenCV bardzo rzadko spotyka twarze w okularach przeciwsłonecznych. Myślisz, że to dlatego, że MATLAB używa trzech algorytmów, a OpenCV używa tylko jednego algorytmu, prawda? – EgorD

+0

nie, thtz nie jest powodem do mojej wiary. Wierzę, że chodzi o to, jakie szablony (dane treningowe) są używane. – mkuse

+0

MATLAB i OpenCV używają tej samej kaskady. Problem tkwi nie w danych treningowych, ale w kodzie. – EgorD

Powiązane problemy