Fixed BORDER_REFLECT and BORDER_REFLECT_101 extrapolation for case x > 2*maxV
This commit is contained in:
parent
a125cd6c6d
commit
214dab39f6
@ -16,7 +16,7 @@
|
|||||||
//aaaaaa|abcdefgh|hhhhhhh
|
//aaaaaa|abcdefgh|hhhhhhh
|
||||||
#define EXTRAPOLATE(x, maxV) \
|
#define EXTRAPOLATE(x, maxV) \
|
||||||
{ \
|
{ \
|
||||||
(x) = max(min((x), (maxV) - 1), 0); \
|
(x) = clamp((x), 0, (maxV)-1); \
|
||||||
}
|
}
|
||||||
#elif defined BORDER_WRAP
|
#elif defined BORDER_WRAP
|
||||||
//cdefgh|abcdefgh|abcdefg
|
//cdefgh|abcdefgh|abcdefg
|
||||||
@ -28,13 +28,13 @@
|
|||||||
//fedcba|abcdefgh|hgfedcb
|
//fedcba|abcdefgh|hgfedcb
|
||||||
#define EXTRAPOLATE(x, maxV) \
|
#define EXTRAPOLATE(x, maxV) \
|
||||||
{ \
|
{ \
|
||||||
(x) = min( mad24((maxV)-1,2,-(x))+1 , max((x),-(x)-1) ); \
|
(x) = clamp(min( mad24((maxV)-1,2,-(x))+1 , max((x),-(x)-1) ), 0, (maxV)-1); \
|
||||||
}
|
}
|
||||||
#elif defined BORDER_REFLECT_101 || defined BORDER_REFLECT101
|
#elif defined BORDER_REFLECT_101 || defined BORDER_REFLECT101
|
||||||
//gfedcb|abcdefgh|gfedcba
|
//gfedcb|abcdefgh|gfedcba
|
||||||
#define EXTRAPOLATE(x, maxV) \
|
#define EXTRAPOLATE(x, maxV) \
|
||||||
{ \
|
{ \
|
||||||
(x) = min( mad24((maxV)-1,2,-(x)), max((x),-(x)) ); \
|
(x) = clamp(min( mad24((maxV)-1,2,-(x)), max((x),-(x)) ), 0, (maxV)-1); \
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#error No extrapolation method
|
#error No extrapolation method
|
||||||
|
@ -50,7 +50,7 @@
|
|||||||
// aaaaaa|abcdefgh|hhhhhhh
|
// aaaaaa|abcdefgh|hhhhhhh
|
||||||
#define EXTRAPOLATE(x, maxV) \
|
#define EXTRAPOLATE(x, maxV) \
|
||||||
{ \
|
{ \
|
||||||
(x) = max(min((x), (maxV) - 1), 0); \
|
(x) = clamp((x), 0, (maxV)-1); \
|
||||||
}
|
}
|
||||||
#elif defined BORDER_WRAP
|
#elif defined BORDER_WRAP
|
||||||
// cdefgh|abcdefgh|abcdefg
|
// cdefgh|abcdefgh|abcdefg
|
||||||
@ -62,13 +62,13 @@
|
|||||||
// fedcba|abcdefgh|hgfedcb
|
// fedcba|abcdefgh|hgfedcb
|
||||||
#define EXTRAPOLATE(x, maxV) \
|
#define EXTRAPOLATE(x, maxV) \
|
||||||
{ \
|
{ \
|
||||||
(x) = min(((maxV)-1)*2-(x)+1, max((x),-(x)-1) ); \
|
(x) = clamp(min(((maxV)-1)*2-(x)+1, max((x),-(x)-1) ), 0, (maxV)-1); \
|
||||||
}
|
}
|
||||||
#elif defined BORDER_REFLECT_101 || defined BORDER_REFLECT101
|
#elif defined BORDER_REFLECT_101 || defined BORDER_REFLECT101
|
||||||
// gfedcb|abcdefgh|gfedcba
|
// gfedcb|abcdefgh|gfedcba
|
||||||
#define EXTRAPOLATE(x, maxV) \
|
#define EXTRAPOLATE(x, maxV) \
|
||||||
{ \
|
{ \
|
||||||
(x) = min(((maxV)-1)*2-(x), max((x),-(x)) ); \
|
(x) = clamp(min(((maxV)-1)*2-(x), max((x),-(x)) ), 0, (maxV)-1); \
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#error No extrapolation method
|
#error No extrapolation method
|
||||||
|
@ -49,7 +49,7 @@ __kernel void sumConvert(__global const uchar * src1ptr, int src1_step, int src1
|
|||||||
// aaaaaa|abcdefgh|hhhhhhh
|
// aaaaaa|abcdefgh|hhhhhhh
|
||||||
#define EXTRAPOLATE(x, maxV) \
|
#define EXTRAPOLATE(x, maxV) \
|
||||||
{ \
|
{ \
|
||||||
(x) = max(min((x), (maxV) - 1), 0); \
|
(x) = clamp((x), 0, (maxV)-1); \
|
||||||
}
|
}
|
||||||
#elif defined BORDER_WRAP
|
#elif defined BORDER_WRAP
|
||||||
// cdefgh|abcdefgh|abcdefg
|
// cdefgh|abcdefgh|abcdefg
|
||||||
@ -61,13 +61,13 @@ __kernel void sumConvert(__global const uchar * src1ptr, int src1_step, int src1
|
|||||||
// fedcba|abcdefgh|hgfedcb
|
// fedcba|abcdefgh|hgfedcb
|
||||||
#define EXTRAPOLATE(x, maxV) \
|
#define EXTRAPOLATE(x, maxV) \
|
||||||
{ \
|
{ \
|
||||||
(x) = min(((maxV)-1)*2-(x)+1, max((x),-(x)-1) ); \
|
(x) = clamp(min(((maxV)-1)*2-(x)+1, max((x),-(x)-1) ), 0, (maxV)-1); \
|
||||||
}
|
}
|
||||||
#elif defined BORDER_REFLECT_101
|
#elif defined BORDER_REFLECT_101
|
||||||
// gfedcb|abcdefgh|gfedcba
|
// gfedcb|abcdefgh|gfedcba
|
||||||
#define EXTRAPOLATE(x, maxV) \
|
#define EXTRAPOLATE(x, maxV) \
|
||||||
{ \
|
{ \
|
||||||
(x) = min(((maxV)-1)*2-(x), max((x),-(x)) ); \
|
(x) = clamp(min(((maxV)-1)*2-(x), max((x),-(x)) ), 0, (maxV)-1); \
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#error No extrapolation method
|
#error No extrapolation method
|
||||||
|
Loading…
x
Reference in New Issue
Block a user