title: Mapping bounding box to the original image in Matlab
body: <p>i have a real time skin detection algorithm where it gives me a bounding box around the skin region with rectangle('Position',bb,'EdgeColor','r','LineWidth',2) from an original image. I wish to use the code to first detect the skin region from the original image before i use Viola Jones to detect the face region from the cropped skin region. I wish to know after i crop the skin region then use the face detection algorithm to detect the face, how can i map the bounding box of the face to the original image.</p>
  
  <pre><code>function cameraon_Callback(hObject, eventdata, handles)
  % hObject    handle to cameraon (see GCBO)
  % eventdata  reserved - to be defined in a future version of MATLAB
  % handles    structure with handles and user data (see GUIDATA)
  global video;
  global videoFrame;
  axes(handles.axes1);
  video = videoinput('winvideo',1,'YUY2_320x240');
  set(video,'ReturnedColorSpace','rgb');
  handles.video=video;
  triggerconfig(video,'manual');
  video.FramesPerTrigger = 1;
  guidata(hObject,handles);
  faceDetector=vision.CascadeObjectDetector('FrontalFaceCART');
  faceDetector.MinSize=[20 20];
  faceDetector.MergeThreshold = 20;
  videoFrame=getsnapshot(video);
  bbox=step(faceDetector,videoFrame);
   if numel(bbox) == 0
      errordlg('Face not detected. Please try again.');
      set(handles.cameraon,'String','Start Camera')
      stop(video);
      delete(video);
      clear;
  else
       axes(handles.axes1);
       start(video);
  end
  while(true)
      frame=getsnapshot(video);
  %Detect faces.
  data = frame;% this is to read a image from data base. just put any image name u want to give make sure its placed in bin
  diff_im = imsubtract(data(:,:,1), rgb2gray(data)); % deleting gray scale pixels from image
  diff_im = medfilt2(diff_im, [3 3]); %applying filter one 
  diff_im = imadjust(diff_im); % adjust image function to fill small holes (check all the function's functionality to have idea of whats going on)
  level = graythresh(diff_im);% extract level value
  bw = im2bw(diff_im,level);
  BW5 = imfill(bw,'holes');
  bw6 = bwlabel(BW5, 8);
  stats = regionprops(bw6,['basic']);%basic mohem nist
  measurements = regionprops(bw6, 'boundingbox');
  BB1=struct2cell(measurements);
  BB2=cell2mat(BB1);
  a = BB2(1);
  b = BB2(2);
  c = BB2(3);
  d = BB2(4);
  [N,M]=size(stats);
  if (bw==0)% check if there is no skin color then exit
          break;
  else
       tmp = stats(1);
  for i = 2 : N % checking for biggest hole to mark it as face 
        if stats(i).Area &gt; tmp.Area
          tmp = stats(i);
        end
   end
  bb = tmp.BoundingBox; % applying identification square to mark skin color region
  bc = tmp.Centroid;
     videoFrame=getsnapshot(video);
  </code></pre>
  
  <p>This is the place where i cannot put the bounding box back to the original image.</p>
  
  <pre><code>   skinImage    = imcrop(videoFrame,bb(1,:));
      bbox = step(faceDetector,skinImage);
    bbox(1,1:2) = bbox(1,1:2) + bb(1,1:2);
        videoOut = insertObjectAnnotation(videoFrame,'rectangle',bbox,'Face'); 
      cla;
      imshow(videoOut,[]);
      drawnow;
      pause(0.0001);
    end
    end
    guidata(hObject,handles);
  </code></pre>
  
  <p>I want to put the rectangle i got from the face detector onto the full size image at the original location in the image where the cropped image come from. </p>