Fixed extrapolation in pyrDown
This commit is contained in:
parent
2a0b39d30a
commit
44fbfb2cf6
@ -53,16 +53,16 @@
|
|||||||
|
|
||||||
#if defined BORDER_REPLICATE
|
#if defined BORDER_REPLICATE
|
||||||
// aaaaaa|abcdefgh|hhhhhhh
|
// aaaaaa|abcdefgh|hhhhhhh
|
||||||
#define EXTRAPOLATE(x, maxV) clamp(x, 0, maxV-1)
|
#define EXTRAPOLATE(x, maxV) clamp((x), 0, (maxV)-1)
|
||||||
#elif defined BORDER_WRAP
|
#elif defined BORDER_WRAP
|
||||||
// cdefgh|abcdefgh|abcdefg
|
// cdefgh|abcdefgh|abcdefg
|
||||||
#define EXTRAPOLATE(x, maxV) ( (x) + (maxV) ) % (maxV)
|
#define EXTRAPOLATE(x, maxV) ( (x) + (maxV) ) % (maxV)
|
||||||
#elif defined BORDER_REFLECT
|
#elif defined BORDER_REFLECT
|
||||||
// fedcba|abcdefgh|hgfedcb
|
// fedcba|abcdefgh|hgfedcb
|
||||||
#define EXTRAPOLATE(x, maxV) min(((maxV)-1)*2-(x)+1, max((x),-(x)-1) )
|
#define EXTRAPOLATE(x, maxV) 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) min(((maxV)-1)*2-(x), max((x),-(x)) )
|
#define EXTRAPOLATE(x, maxV) clamp(min(((maxV)-1)*2-(x), max((x),-(x)) ), 0, (maxV)-1)
|
||||||
#else
|
#else
|
||||||
#error No extrapolation method
|
#error No extrapolation method
|
||||||
#endif
|
#endif
|
||||||
|
@ -94,8 +94,7 @@ OCL_TEST_P(PyrDown, Mat)
|
|||||||
{
|
{
|
||||||
for (int j = 0; j < test_loop_times; j++)
|
for (int j = 0; j < test_loop_times; j++)
|
||||||
{
|
{
|
||||||
// minimal src size is set to 4 since size<4 doesn't make sense
|
Size src_roiSize = randomSize(1, MAX_VALUE);
|
||||||
Size src_roiSize = randomSize(4, MAX_VALUE);
|
|
||||||
Size dst_roiSize = Size(randomInt((src_roiSize.width - 1) / 2, (src_roiSize.width + 3) / 2),
|
Size dst_roiSize = Size(randomInt((src_roiSize.width - 1) / 2, (src_roiSize.width + 3) / 2),
|
||||||
randomInt((src_roiSize.height - 1) / 2, (src_roiSize.height + 3) / 2));
|
randomInt((src_roiSize.height - 1) / 2, (src_roiSize.height + 3) / 2));
|
||||||
dst_roiSize = dst_roiSize.area() == 0 ? Size((src_roiSize.width + 1) / 2, (src_roiSize.height + 1) / 2) : dst_roiSize;
|
dst_roiSize = dst_roiSize.area() == 0 ? Size((src_roiSize.width + 1) / 2, (src_roiSize.height + 1) / 2) : dst_roiSize;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user