Использует ли MATLAB OpenCv CascadeClassifier?

У меня вопрос о CascadeObjectDetector в MATLAB. В исходном коде CascadeObjectDetector в MATLAB я вижу:

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?

Ответ 1

Дело в том, что в Matlab предусмотрены следующие детекторы объектов

Теперь поговорим о opencv. Функция opencv cv.HaarDetectObjects(), которая используется для обнаружения лиц (и вообще для обнаружения объекта), использует алгоритм альтов-джонсов, который inturn использует характерные для Harr функции.

Мое личное мнение состоит в том, что реализации могут немного отличаться, но они по существу имеют один и тот же алгоритм.

Если вы все еще не уверены и хотите использовать opencv-функцию из matlab, вы можете использовать MEX. Таким образом, вы можете использовать cv.HaarDetectObjects() из matlab. Более подробную информацию можно найти по адресу: http://www.mathworks.ch/discovery/matlab-opencv.html