Fix instability of Luv/Lab color conversions
authorAndrey Kamaev <andrey.kamaev@itseez.com>
Thu, 11 Oct 2012 11:00:43 +0000 (15:00 +0400)
committerAndrey Kamaev <andrey.kamaev@itseez.com>
Thu, 11 Oct 2012 11:05:43 +0000 (15:05 +0400)
modules/imgproc/src/color.cpp

index 64aa9f0..5686204 100644 (file)
@@ -124,8 +124,8 @@ template<typename _Tp> static void splineBuild(const _Tp* f, int n, _Tp* tab)
 // interpolates value of a function at x, 0 <= x <= n using a cubic spline.
 template<typename _Tp> static inline _Tp splineInterpolate(_Tp x, const _Tp* tab, int n)
 {
-    int ix = cvFloor(x);
-    ix = std::min(std::max(ix, 0), n-1);
+    // don't touch this function without urgent need - some versions of gcc fail to inline it correctly
+    int ix = std::min(std::max(int(x), 0), n-1);
     x -= ix;
     tab += ix*4;
     return ((tab[3]*x + tab[2])*x + tab[1])*x + tab[0];