- //calculate back projection of hue and saturation planes of input image
- IplImage* backproject = cvCreateImage(cvGetSize(test_image), 8, 1);
- IplImage* binary_backproject = cvCreateImage(cvGetSize(test_image), 8, 1);
- cvCalcBackProject(planes, backproject, hist);
+ // Calculate the back projection of hue and saturation planes of the INPUT image
+ // by mean of the histogram of the SAMPLE image.
+ //
+ // The pixels which (h,s) coordinates correspond to high values in the histogram
+ // will have high values in the grey image result. It means that a pixel of the INPUT image
+ // which is more probably in the zone represented by the SAMPLE image, will be whiter
+ // in the back projection.
+ IplImage* backproject = cvCreateImage(cvGetSize(input_image), 8, 1);
+ IplImage* binary_backproject = cvCreateImage(cvGetSize(input_image), 8, 1);
+ IplImage* input_hsv = cvCreateImage(cvGetSize(input_image),8,3);
+ IplImage* input_hplane = cvCreateImage(cvGetSize(input_image),8,1);
+ IplImage* input_splane = cvCreateImage(cvGetSize(input_image),8,1);
+
+ // Get hue and saturation planes of the INPUT image
+ cvCvtColor(input_image, input_hsv, CV_BGR2HSV);
+ cvCvtPixToPlane(input_hsv, input_hplane, input_splane, 0, 0);
+ IplImage* input_planes[] = { input_hplane, input_splane };
+
+ // Compute the back projection
+ cvCalcBackProject(input_planes, backproject, sample_hist);