title: Why does StereoSGBM give negative and above numberOfDisparities numbers
body: <p>I'm writing a function in OpenCV to compute v and u-disparities, so I need first the disparity image. I set sgbm.minDisparity = 0 and numberOfDisparities = 160. </p>
  
  <p>The disparity image is CV_16SC1, and I need Unsigned values to go on programming my function. </p>
  
  <p>I printed the whole Mat and there are negative values and values above 160. If I understood well the documentation, the disparity image represents the disparity values*16. Does that mean that the maximum value is 16*160 in my case?. If not, what could be wrong?. And anyway, why there are values less than zero when minDisparity is set to 0? Here's the code:</p>
  
  <pre><code>void Stereo_SGBM(){
      int numberOfDisparities;
      StereoSGBM sgbm;
      Mat img1, img2;
  
      img1=left_frame;   //left and right frames are global variables
      img2=right_frame;
  
      Size img_size = img1.size();
  
      //I make sure the number of disparities is divisible by 16
      numberOfDisparities = 160;  
  
      int cn=1;   //Grayscale
  
      sgbm.preFilterCap = 63;
      sgbm.SADWindowSize = 3;
      sgbm.P1 = 8*cn*sgbm.SADWindowSize*sgbm.SADWindowSize;
      sgbm.P2 = 32*cn*sgbm.SADWindowSize*sgbm.SADWindowSize;
      sgbm.minDisparity = 0;
      sgbm.numberOfDisparities = numberOfDisparities;
      sgbm.uniquenessRatio = 10;
      sgbm.speckleWindowSize = 100;
      sgbm.speckleRange = 2;
      sgbm.disp12MaxDiff = 1;
      sgbm.fullDP = false;  
  
      Mat disp;   // CV_16SC1
      Mat disp8;  //CV_8UC1 (used later in the code
  
  
      sgbm(img1, img2, disp); 
      //disp contains negative values and larger than 160!!!
  
      //img1 and img2 are left and right channels of size 1242x375 grayscale    
  }
  </code></pre>