Advertisement
Guest User

Untitled

a guest
Jul 17th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.13 KB | None | 0 0
  1. void matchTemplateZNCC8x8_CV(cv::Mat result, cv::Mat image, cv::Mat patch/*, int* variance, int minVariance*/)
  2.     {
  3.         int resultWidth = image.cols - patch.cols + 1;
  4.         int resultHeight = image.rows - patch.rows + 1;
  5.  
  6.         const int patchWidth = 8;
  7.         const int patchHeight = 8;
  8.  
  9.         cv::Scalar mean, stddev;
  10.         cv::meanStdDev(patch, mean, stddev);
  11.         unsigned int templateMean = mean[0];
  12.         unsigned int templateStddev = stddev[0];
  13.  
  14.         for (int x = 0; x < resultWidth; x++) {
  15.             for (int y = 0; y < resultHeight; y++) {
  16.                 int sum = 0;
  17.  
  18.                 // mean of image under inspection.
  19.                 cv::meanStdDev(image(cv::Rect(x, y, 8, 8)), mean, stddev);
  20.                 unsigned int imageMean = mean[0];
  21.                 unsigned int imageStddev = stddev[0];
  22.  
  23.                 for (int u = 0; u < patchHeight; u++) {
  24.                     for (int v = 0; v < patchWidth; v++) {
  25.                         int templatePixel = patch.at<unsigned char>(v, u) - (int)templateMean;
  26.                         int imagePixel = image.at<unsigned char>(y + v, x + u) - (int)imageMean;
  27.                         sum += templatePixel * imagePixel;
  28.                     }
  29.                 }
  30.  
  31.                 sum /= 64;
  32.  
  33.                 result.at<float>(y, x) = (float)sum / ((float)templateStddev * (float)imageStddev);
  34.             }
  35.         }
  36.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement