técnica de ventana deslizante para detección de múltiples personas

Estoy trabajando en una aplicación de video vigilancia para detectar personas. Actualmente estoy implementando el descriptor HOG como detector. Sin embargo, tengo un problema con respecto a la técnica de ventana deslizante. Mi código solo puede detectar a una sola persona. Estoy usando también Rectángulos grupales de MexOpen CV para crear múltiples cuadros delimitadores. ¿Alguien tiene idea de cómo escribir la técnica de ventana deslizante para detectar múltiples objetos? Gracias.

      % 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

Respuestas a la pregunta(2)

Su respuesta a la pregunta