added cv::cartToPolar to T-API
This commit is contained in:
@@ -63,12 +63,15 @@
|
||||
#elif defined (cl_amd_fp64)
|
||||
#pragma OPENCL EXTENSION cl_amd_fp64:enable
|
||||
#endif
|
||||
#define CV_EPSILON DBL_EPSILON
|
||||
#define CV_PI M_PI
|
||||
#else
|
||||
#define CV_EPSILON FLT_EPSILON
|
||||
#define CV_PI M_PI_F
|
||||
#endif
|
||||
|
||||
#define CV_32S 4
|
||||
#define CV_32F 5
|
||||
|
||||
#define dstelem *(__global dstT*)(dstptr + dst_index)
|
||||
#define dstelem2 *(__global dstT*)(dstptr2 + dst_index2)
|
||||
#define noconvert
|
||||
|
||||
#ifndef workT
|
||||
@@ -88,6 +91,7 @@
|
||||
#endif
|
||||
|
||||
#define EXTRA_PARAMS
|
||||
#define EXTRA_INDEX
|
||||
|
||||
#if defined OP_ADD
|
||||
#define PROCESS_ELEM dstelem = convertToDT(srcelem1 + srcelem2)
|
||||
@@ -193,10 +197,35 @@ dstelem = v > (dstT)(0) ? log(v) : log(-v)
|
||||
#define EXTRA_PARAMS , workT alpha, workT beta
|
||||
#define PROCESS_ELEM dstelem = convertToDT(srcelem1*alpha + beta)
|
||||
|
||||
#elif defined OP_CTP_AD || defined OP_CTP_AR
|
||||
#ifdef OP_CTP_AD
|
||||
#define TO_DEGREE cartToPolar *= (180 / CV_PI);
|
||||
#elif defined OP_CTP_AR
|
||||
#define TO_DEGREE
|
||||
#endif
|
||||
#define PROCESS_ELEM \
|
||||
dstT x = srcelem1, y = srcelem2; \
|
||||
dstT x2 = x * x, y2 = y * y; \
|
||||
dstT magnitude = sqrt(x2 + y2); \
|
||||
dstT tmp = y >= 0 ? 0 : CV_PI * 2; \
|
||||
tmp = x < 0 ? CV_PI : tmp; \
|
||||
dstT tmp1 = y >= 0 ? CV_PI * 0.5f : CV_PI * 1.5f; \
|
||||
dstT cartToPolar = y2 <= x2 ? x * y / (x2 + 0.28f * y2 + CV_EPSILON) + tmp : (tmp1 - x * y / (y2 + 0.28f * x2 + CV_EPSILON)); \
|
||||
TO_DEGREE \
|
||||
dstelem = magnitude; \
|
||||
dstelem2 = cartToPolar
|
||||
|
||||
#else
|
||||
#error "unknown op type"
|
||||
#endif
|
||||
|
||||
#if defined OP_CTP_AD || defined OP_CTP_AR
|
||||
#undef EXTRA_PARAMS
|
||||
#define EXTRA_PARAMS , __global uchar* dstptr2, int dststep2, int dstoffset2
|
||||
#undef EXTRA_INDEX
|
||||
#define EXTRA_INDEX int dst_index2 = mad24(y, dststep2, x*(int)sizeof(dstT) + dstoffset2)
|
||||
#endif
|
||||
|
||||
#if defined UNARY_OP || defined MASK_UNARY_OP
|
||||
#undef srcelem2
|
||||
#if defined OP_AND || defined OP_OR || defined OP_XOR || defined OP_ADD || defined OP_SAT_ADD || \
|
||||
@@ -222,6 +251,7 @@ __kernel void KF(__global const uchar* srcptr1, int srcstep1, int srcoffset1,
|
||||
int src1_index = mad24(y, srcstep1, x*(int)sizeof(srcT1) + srcoffset1);
|
||||
int src2_index = mad24(y, srcstep2, x*(int)sizeof(srcT2) + srcoffset2);
|
||||
int dst_index = mad24(y, dststep, x*(int)sizeof(dstT) + dstoffset);
|
||||
EXTRA_INDEX;
|
||||
|
||||
PROCESS_ELEM;
|
||||
}
|
||||
|
Reference in New Issue
Block a user