title: Normalizing color channels of and image by intensity values, OpenCV
body: <p>I have split an image into 3 separate color channels - one blue, one green, and one red. I would like to normalize each of these channels by the image's intensity, where intensity = (red + blue + green)/3. To be clear, I am trying to make an image that is composed of one of the three color channels, divided by the image's intensity, where the intensity is described by the equation above.
  I am new to OpenCV and I do not think I am doing this correctly; when the images are displayed, all the pixels appear to be black. 
  I am new to OpenCV (I have worked through the tutorials that come with the documentation, but that is it) - any advice about how to go about this normalization would be extremely helpful. </p>
  
  <p>Thanks! </p>
  
  <p>Here is my attempt: </p>
  
  <pre><code>int main(int argc, char** argv){
  Mat sourceImage, I;
  const char* redWindow = "Red Color Channel";
  const char* greenWindow = "Green Color Channel";
  const char* blueWindow = "Blue Color Channel";
  
  
  if(argc != 2)
  {
    cout &lt;&lt; "Incorrect number of arguments" &lt;&lt; endl;
  }
  /* Load the image */
  sourceImage = imread(argv[1], 1);
  if(!sourceImage.data)
  {
    cout &lt;&lt; "Image failed to load" &lt;&lt; endl;
  }
  
  /* First, we have to allocate the new channels */
  Mat r(sourceImage.rows, sourceImage.cols, CV_8UC1);
  Mat b(sourceImage.rows, sourceImage.cols, CV_8UC1);
  Mat g(sourceImage.rows, sourceImage.cols, CV_8UC1);
  
  /* Now we put these into a matrix */
  Mat out[] = {b, g, r};
  
  /* Split the image into the three color channels */
  split(sourceImage, out);
  
  /* I = (r + b + g)/3  */
  add(b, g, I);
  add(I, r, I);
  I = I/3;
  
  Mat red = r/I;
  Mat blue = b/I;
  Mat green = g/I;
  
  /* Create the windows */
  namedWindow(blueWindow, 0);
  namedWindow(greenWindow, 0);
  namedWindow(redWindow, 0);
  
  /* Show the images */
  imshow(blueWindow, blue);
  imshow(greenWindow, green);
  imshow(redWindow, red);
  
  waitKey(0);
  return 0;
  }
  </code></pre>