2012-09-25 129 views
10

Tôi có câu hỏi về CascadeObjectDetector trong MATLAB. Trong mã nguồn của CascadeObjectDetector trong MATLAB tôi thấy:MATLAB có sử dụng OpenCv CascadeClassifier không?

pCascadeClassifier; % OpenCV pCascadeClassifier 

Sau đó, tôi nhìn thấy:

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

Và trong stepImpl:

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

Bạn có biết, là những gì vision.internal.CascadeClassifier? Chỉ đơn giản là OpenCV CascadeClassifier? Và mã nguồn của hàm detectMultiScale ở đâu?

+0

detectCultiscale mới nhất của OpenCV là [ở đây] (http://code.opencv.org/projects/opencv/repository/revisions/master/entry/modules/objdetect/src/cascadedetect.cpp # L1089) –

Trả lời

0

Cái này là MATLAB cung cấp các máy dò đối tượng sau đây

  1. mẫu phù hợp với
  2. phân tích blob
  3. viola-jones thuật toán Thông tin thêm ở đây: http://www.mathworks.ch/products/computer-vision/description4.html

Bây giờ để nói về opencv. Hàm opvv cv.HaarDetectObjects() được sử dụng để phát hiện khuôn mặt (và nói chung để phát hiện đối tượng) sử dụng thuật toán của viola jones mà inturn sử dụng các tính năng như harr.

Ý kiến ​​cá nhân của tôi là việc triển khai có thể khác đôi chút nhưng về cơ bản chúng có cùng một thuật toán.

Nếu bạn vẫn chưa thuyết phục và muốn sử dụng chức năng opencv từ MATLAB, bạn có thể sử dụng MEX. Vì vậy, theo cách này bạn có thể sử dụng cv.HaarDetectObjects() từ MATLAB. Các chi tiết khác có sẵn tại: http://www.mathworks.ch/discovery/matlab-opencv.html

+0

Vấn đề chính là phiên bản MATLAB hoạt động tốt hơn nhiều so với OpenCV. Ví dụ, MATLAB tìm thấy khuôn mặt trong kính mát của FaceCascadeDetector rất thường xuyên, nhưng OpenCV tìm thấy khuôn mặt trong kính mát rất hiếm. Bạn nghĩ rằng điều này là do MATLAB sử dụng ba thuật toán và OpenCV chỉ sử dụng một thuật toán, đúng không? – EgorD

+0

không, thtz không phải là lý do cho niềm tin của tôi. Tôi tin rằng, về loại mẫu (dữ liệu đào tạo) nào được sử dụng. – mkuse

+0

MATLAB và OpenCV sử dụng cùng một tầng. Vì vậy, vấn đề không có trong dữ liệu huấn luyện, nó nằm trong đoạn mã. – EgorD