31 const FloatImage& image_and_gradient2_sampled) {
32 assert(image_and_gradient1_sampled.
Width() ==
33 image_and_gradient2_sampled.
Width());
34 assert(image_and_gradient1_sampled.
Height() ==
35 image_and_gradient2_sampled.
Height());
37 const int width = image_and_gradient1_sampled.
Width(),
38 height = image_and_gradient1_sampled.
Height();
39 double sX = 0, sY = 0, sXX = 0, sYY = 0, sXY = 0;
41 for (
int r = 0; r < height; ++r) {
42 for (
int c = 0; c < width; ++c) {
43 double x = image_and_gradient1_sampled(r, c, 0);
44 double y = image_and_gradient2_sampled(r, c, 0);
54 double N = width * height;
61 double var_x = sXX - sX * sX;
62 double var_y = sYY - sY * sY;
63 double covariance_xy = sXY - sX * sY;
65 double correlation = covariance_xy /
sqrt(var_x * var_y);
66 LG <<
"Covariance xy: " << covariance_xy <<
", var 1: " << var_x
67 <<
", var 2: " << var_y <<
", correlation: " << correlation;