Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
368bac7a
O
Opencv
项目概览
Greenplum
/
Opencv
12 个月 前同步成功
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
Opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
368bac7a
编写于
12月 02, 2013
作者:
A
Andrey Pavlenko
提交者:
OpenCV Buildbot
12月 02, 2013
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1744 from liuxing6666:2.4_fix_harris_test
上级
19ceab13
9a0d0624
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
45 addition
and
12 deletion
+45
-12
modules/ocl/src/opencl/imgproc_calcHarris.cl
modules/ocl/src/opencl/imgproc_calcHarris.cl
+23
-10
modules/ocl/test/test_imgproc.cpp
modules/ocl/test/test_imgproc.cpp
+22
-2
未找到文件。
modules/ocl/src/opencl/imgproc_calcHarris.cl
浏览文件 @
368bac7a
...
...
@@ -47,6 +47,13 @@
/////////////////////////////////Macro
for
border
type////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
#
if
defined
(
DOUBLE_SUPPORT
)
&&
defined
(
cl_khr_fp64
)
#
pragma
OPENCL
EXTENSION
cl_khr_fp64:enable
#
define
FPTYPE
double
#
else
#
define
FPTYPE
float
#
endif
#
ifdef
BORDER_CONSTANT
#
elif
defined
BORDER_REPLICATE
#
define
EXTRAPOLATE
(
x,
maxV
)
\
...
...
@@ -116,7 +123,7 @@ __kernel void calcHarris(__global const float *Dx, __global const float *Dy, __g
int
dst_startY
=
(
gY
<<
1
)
+
dst_y_off
;
float
dx_data[ksY+1],dy_data[ksY+1],
data[3][ksY+1]
;
__local
float
temp[6][THREADS]
;
__local
FPTYPE
temp[6][THREADS]
;
#
ifdef
BORDER_CONSTANT
for
(
int
i=0
; i < ksY+1; i++)
...
...
@@ -136,7 +143,7 @@ __kernel void calcHarris(__global const float *Dx, __global const float *Dy, __g
data[2][i]
=
dy_data[i]
*
dy_data[i]
;
}
#
else
int
clamped_col
=
min
(
dst_cols,
col
)
;
int
clamped_col
=
min
(
2*
dst_cols,
col
)
;
for
(
int
i=0
; i < ksY+1; i++)
{
int
dx_selected_row
=
dx_startY+i,
dx_selected_col
=
dx_startX+clamped_col
;
...
...
@@ -154,7 +161,7 @@ __kernel void calcHarris(__global const float *Dx, __global const float *Dy, __g
data[2][i]
=
dy_data[i]
*
dy_data[i]
;
}
#
endif
float
sum0
=
0.0f,
sum1
=
0.0f,
sum2
=
0.0f
;
FPTYPE
sum0
=
0.0f,
sum1
=
0.0f,
sum2
=
0.0f
;
for
(
int
i=1
; i < ksY; i++)
{
sum0
+=
data[0][i]
;
...
...
@@ -162,16 +169,16 @@ __kernel void calcHarris(__global const float *Dx, __global const float *Dy, __g
sum2
+=
data[2][i]
;
}
float
sum01
=
sum0
+
data[0][0]
;
float
sum02
=
sum0
+
data[0][ksY]
;
FPTYPE
sum01
=
sum0
+
data[0][0]
;
FPTYPE
sum02
=
sum0
+
data[0][ksY]
;
temp[0][col]
=
sum01
;
temp[1][col]
=
sum02
;
float
sum11
=
sum1
+
data[1][0]
;
float
sum12
=
sum1
+
data[1][ksY]
;
FPTYPE
sum11
=
sum1
+
data[1][0]
;
FPTYPE
sum12
=
sum1
+
data[1][ksY]
;
temp[2][col]
=
sum11
;
temp[3][col]
=
sum12
;
float
sum21
=
sum2
+
data[2][0]
;
float
sum22
=
sum2
+
data[2][ksY]
;
FPTYPE
sum21
=
sum2
+
data[2][0]
;
FPTYPE
sum22
=
sum2
+
data[2][ksY]
;
temp[4][col]
=
sum21
;
temp[5][col]
=
sum22
;
barrier
(
CLK_LOCAL_MEM_FENCE
)
;
...
...
@@ -184,8 +191,14 @@ __kernel void calcHarris(__global const float *Dx, __global const float *Dy, __g
int
till
=
(
ksX
+
1
)
%2
;
float
tmp_sum[6]
=
{
0.0f,
0.0f,
0.0f,
0.0f,
0.0f,
0.0f
}
;
for
(
int
k=0
; k<6; k++)
{
FPTYPE
temp_sum
=
0
;
for
(
int
i=-anX
; i<=anX - till; i++)
tmp_sum[k]
+=
temp[k][col+i]
;
{
temp_sum
+=
temp[k][col+i]
;
}
tmp_sum[k]
=
temp_sum
;
}
if
(
posX
<
dst_cols
&&
(
posY
)
<
dst_rows
)
{
...
...
modules/ocl/test/test_imgproc.cpp
浏览文件 @
368bac7a
...
...
@@ -254,8 +254,28 @@ OCL_TEST_P(CornerMinEigenVal, Mat)
}
////////////////////////////////cornerHarris//////////////////////////////////////////
struct
CornerHarris
:
public
ImgprocTestBase
{
void
Near
(
double
threshold
=
0.0
)
{
Mat
whole
,
roi
;
gdst_whole
.
download
(
whole
);
gdst_roi
.
download
(
roi
);
absdiff
(
whole
,
dst_whole
,
whole
);
absdiff
(
roi
,
dst_roi
,
roi
);
divide
(
whole
,
dst_whole
,
whole
);
divide
(
roi
,
dst_roi
,
roi
);
typedef
CornerTestBase
CornerHarris
;
absdiff
(
dst_whole
,
dst_whole
,
dst_whole
);
absdiff
(
dst_roi
,
dst_roi
,
dst_roi
);
EXPECT_MAT_NEAR
(
dst_whole
,
whole
,
threshold
);
EXPECT_MAT_NEAR
(
dst_roi
,
roi
,
threshold
);
}
};
OCL_TEST_P
(
CornerHarris
,
Mat
)
{
...
...
@@ -269,7 +289,7 @@ OCL_TEST_P(CornerHarris, Mat)
cornerHarris
(
src_roi
,
dst_roi
,
blockSize
,
apertureSize
,
k
,
borderType
);
ocl
::
cornerHarris
(
gsrc_roi
,
gdst_roi
,
blockSize
,
apertureSize
,
k
,
borderType
);
Near
(
1e-5
,
true
);
Near
(
1e-5
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录