техника скользящего окна для обнаружения нескольких людей

Я работаю над приложением видеонаблюдения для обнаружения людей. В настоящее время я использую дескриптор HOG в качестве детектора. Тем не менее, у меня есть проблема, касающаяся техники скользящего окна. Мой код может обнаружить только одного человека. Я также использую Group Rectangles из MexOpen CV для создания нескольких ограничивающих рамок. У кого-нибудь есть идея, как написать технику скользящего окна для обнаружения нескольких объектов? Спасибо.

      % Reading the image
      im = strcat ('C:\Users\Documents\MATLAB\HOG\HOG\images\16.bmp');
      im = imread (im);

      win_size= [64, 128];

      [lastRightCol lastRightRow d] = size(im);

      counter = 1;
      %% Scan the window by using sliding window object detection

      % this for loop scan the entire image and extract features for each sliding window
      % Loop on scales (based on size of the window)
      for s=1:0.5:3
          disp(strcat('s is',num2str(s)));
          X=win_size(1)*s;
          Y=win_size(2)*s;
          for y = 1:X/4:lastRightCol-Y
              for x = 1:Y/4:lastRightRow-X
                  p1 = [x,y];
                  p2 = [x+(X-1), y+(Y-1)];
                  po = [p1; p2] ;

                  % Croped image and scan it.
                  crop_px = [po(1,1) po(2,1)];
                  crop_py  = [po(1,2) po(2,2)];

                  topLeftRow = ceil(min(crop_px));
                  topLeftCol = ceil(min(crop_py));

                  bottomRightRow = ceil(max(crop_px));
                  bottomRightCol = ceil(max(crop_py));

                  cropedImage = img(topLeftCol:bottomRightCol,topLeftRow:bottomRightRow,:);

                  % Get the feature vector from croped image using HOG descriptor
                  featureVector{counter} = getHOGDescriptor(img);
                  boxPoint{counter} = [x,y,X,Y];
                  count = counter+1;
                  x = x+2;
               end
            end
         end

         label = ones(length(featureVector),1);
         P = cell2mat(featureVector);

         % each row of P' correspond to a window
         % classifying each window
         [~, predictions] = svmclassify(P', label,model); 


         % set the threshold for getting multiple detection
         % the threshold value is 0.7
         get_detect = predictions.*[predictions>0.6];

         % the the value after sorted
         [r,c,v]= find(get_detect);


         %% Creating the bounding box for detection 
         for ix=1:length(r)
             rects{ix}= boxPoint{r(ix)};
         end

         if (isempty(rects))
             rects2=[];
         else
             rects2 = cv.groupRectangles(rects,3,'EPS',0.35);
         end



         for i = 1:numel(rects2)
             rectangle('Position',[rects2{i}(1),rects2{i}(2),64,128], 'LineWidth',2,'EdgeColor','y');
         end

     end

Ответы на вопрос(2)

Ваш ответ на вопрос