From 5898dcae4abb2ac4bb3018435fd90b48e4423e39 Mon Sep 17 00:00:00 2001 From: Alexander Karsakov Date: Tue, 12 Aug 2014 12:06:37 +0400 Subject: [PATCH] Added ROUNDING_EPS for identical rounding after dividing on different platforms --- modules/imgproc/src/opencl/calc_back_project.cl | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/imgproc/src/opencl/calc_back_project.cl b/modules/imgproc/src/opencl/calc_back_project.cl index ec92471541..0b45ae2103 100644 --- a/modules/imgproc/src/opencl/calc_back_project.cl +++ b/modules/imgproc/src/opencl/calc_back_project.cl @@ -39,6 +39,9 @@ #define OUT_OF_RANGE -1 +// for identical rounding after dividing on different platforms +#define ROUNDING_EPS 0.000001f + #if histdims == 1 __kernel void calcLUT(__global const uchar * histptr, int hist_step, int hist_offset, int hist_bins, @@ -53,7 +56,7 @@ __kernel void calcLUT(__global const uchar * histptr, int hist_step, int hist_of { float lb = ranges[0], ub = ranges[1], gap = (ub - lb) / hist_bins; value -= lb; - int bin = convert_int_sat_rtn(value / gap); + int bin = convert_int_sat_rtn(value / gap + ROUNDING_EPS); if (bin >= hist_bins) lut[x] = OUT_OF_RANGE; @@ -101,7 +104,7 @@ __kernel void calcLUT(int hist_bins, __global int * lut, int lut_offset, { float lb = ranges[0], ub = ranges[1], gap = (ub - lb) / hist_bins; value -= lb; - int bin = convert_int_sat_rtn(value / gap); + int bin = convert_int_sat_rtn(value / gap + ROUNDING_EPS); lut[x] = bin >= hist_bins ? OUT_OF_RANGE : bin; }