title: sliding window technique for multiple people detection
body: <p>I am working on video surveillance application for detecting people. Currently I am implementing HOG descriptor as the detector. However, I have a problem regarding the sliding window technique. My code is only able to detect single person. I am using also Group Rectangles from MexOpen CV to creat multiple bounding boxes. Anybody has idea how to write sliding window technique to detect multiple object? Thank you.</p>
  
  <pre><code>      % 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&gt;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
  </code></pre>