diff --git a/src/common/image.cpp b/src/common/image.cpp index 8b1325b509..23019336d1 100644 --- a/src/common/image.cpp +++ b/src/common/image.cpp @@ -581,19 +581,18 @@ void ResampleBoxPrecalc(wxVector& boxes, int oldDim) { // We want to map pixels in the range [0..newDim-1] // to the range [0..oldDim-1] - const double scale_factor_1 = double(oldDim-1) / (newDim-1); - const int scale_factor_2 = (int)(scale_factor_1 / 2); + const double scale_factor = double(oldDim - 1) / ((newDim - 1) * 2.0); for ( int dst = 0; dst < newDim; ++dst ) { - // Source pixel in the Y direction - const int src_p = int(dst * scale_factor_1); + // Source pixel + const int src_p = int((double)dst * (oldDim - 1) / (newDim - 1)); BoxPrecalc& precalc = boxes[dst]; - precalc.boxStart = BoxBetween(int(src_p - scale_factor_1/2.0 + 1), + precalc.boxStart = BoxBetween(int((double)src_p - scale_factor + 1.0), 0, oldDim - 1); precalc.boxEnd = BoxBetween(wxMax(precalc.boxStart + 1, - int(src_p + scale_factor_2)), + (int)((double)src_p + scale_factor)), 0, oldDim - 1); } } diff --git a/tests/image/horse_box_average_100x100.png b/tests/image/horse_box_average_100x100.png index 63180cd979..7cf20fe46d 100644 Binary files a/tests/image/horse_box_average_100x100.png and b/tests/image/horse_box_average_100x100.png differ diff --git a/tests/image/horse_box_average_300x300.png b/tests/image/horse_box_average_300x300.png index a002e27287..cc409d627c 100644 Binary files a/tests/image/horse_box_average_300x300.png and b/tests/image/horse_box_average_300x300.png differ diff --git a/tests/image/horse_box_average_50x50.png b/tests/image/horse_box_average_50x50.png index 432e983e63..98f148c151 100644 Binary files a/tests/image/horse_box_average_50x50.png and b/tests/image/horse_box_average_50x50.png differ