Fix instability of Luv/Lab color conversions
This commit is contained in:
parent
7ee6040192
commit
df94591336
@ -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.
|
// 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)
|
template<typename _Tp> static inline _Tp splineInterpolate(_Tp x, const _Tp* tab, int n)
|
||||||
{
|
{
|
||||||
int ix = cvFloor(x);
|
// don't touch this function without urgent need - some versions of gcc fail to inline it correctly
|
||||||
ix = std::min(std::max(ix, 0), n-1);
|
int ix = std::min(std::max(int(x), 0), n-1);
|
||||||
x -= ix;
|
x -= ix;
|
||||||
tab += ix*4;
|
tab += ix*4;
|
||||||
return ((tab[3]*x + tab[2])*x + tab[1])*x + tab[0];
|
return ((tab[3]*x + tab[2])*x + tab[1])*x + tab[0];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user