--- CV/CV.xs 2006/02/17 08:48:06 1.33 +++ CV/CV.xs 2006/03/07 16:26:25 1.34 @@ -357,20 +357,21 @@ double diff = 0.; int peak = 0; - for (y = 0; y < h; y++) - { - guchar *pa_ = pa + y * sa; - guchar *pb_ = pb + y * sb; + if (x && y) + for (y = 0; y < h; y++) + { + guchar *pa_ = pa + y * sa; + guchar *pb_ = pb + y * sb; - for (x = 0; x < w; x ++) - { - int d; + for (x = 0; x < w; x++) + { + int d; - d = ((int)*pa_++) - ((int)*pb_++); diff += d*d; peak = MAX (peak, abs (d)); - d = ((int)*pa_++) - ((int)*pb_++); diff += d*d; peak = MAX (peak, abs (d)); - d = ((int)*pa_++) - ((int)*pb_++); diff += d*d; peak = MAX (peak, abs (d)); - } - } + d = ((int)*pa_++) - ((int)*pb_++); diff += d*d; peak = MAX (peak, abs (d)); + d = ((int)*pa_++) - ((int)*pb_++); diff += d*d; peak = MAX (peak, abs (d)); + d = ((int)*pa_++) - ((int)*pb_++); diff += d*d; peak = MAX (peak, abs (d)); + } + } EXTEND (SP, 2); PUSHs (sv_2mortal (newSVnv (sqrt (diff / (w * h * 3. * 255. * 255.)))));