Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
dd942df0
O
Opencv
项目概览
Greenplum
/
Opencv
大约 1 年 前同步成功
通知
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,发现更多精彩内容 >>
提交
dd942df0
编写于
11月 01, 2013
作者:
A
Andrey Pavlenko
提交者:
OpenCV Buildbot
11月 01, 2013
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1736 from alalek:ocl_fix_corner_memory_access
上级
2767be9a
99ae9d9c
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
30 addition
and
24 deletion
+30
-24
modules/ocl/src/opencl/imgproc_calcHarris.cl
modules/ocl/src/opencl/imgproc_calcHarris.cl
+8
-10
modules/ocl/src/opencl/imgproc_calcMinEigenVal.cl
modules/ocl/src/opencl/imgproc_calcMinEigenVal.cl
+8
-8
modules/ocl/test/test_imgproc.cpp
modules/ocl/test/test_imgproc.cpp
+14
-6
未找到文件。
modules/ocl/src/opencl/imgproc_calcHarris.cl
浏览文件 @
dd942df0
...
...
@@ -119,18 +119,16 @@ __kernel void calcHarris(__global const float *Dx, __global const float *Dy, __g
__local
float
temp[6][THREADS]
;
#
ifdef
BORDER_CONSTANT
bool
dx_con,dy_con
;
float
dx_s,
dy_s
;
for
(
int
i=0
; i < ksY+1; i++)
{
dx_con
=
dx_startX+col
>=
0
&&
dx_startX+col
<
dx_whole_cols
&&
dx_startY+i
>=
0
&&
dx_startY+i
<
dx_whole_rows
;
dx_s
=
Dx[
(
dx_startY+i
)
*
(
dx_step>>2
)
+
(
dx_startX+col
)
]
;
dx_data[i]
=
dx_con
?
dx_s
:
0.0f
;
dy_con
=
dy_startX+col
>=
0
&&
dy_startX+col
<
dy_whole_cols
&&
dy_startY+i
>=
0
&&
dy_startY+i
<
dy_whole_rows
;
dy_s
=
Dy[
(
dy_startY+i
)
*
(
dy_step>>2
)
+
(
dy_startX+col
)
]
;
dy_data[i]
=
dy_con
?
dy_s
:
0.0f
;
bool
dx_con
=
dx_startX+col
>=
0
&&
dx_startX+col
<
dx_whole_cols
&&
dx_startY+i
>=
0
&&
dx_startY+i
<
dx_whole_rows
;
int
indexDx
=
(
dx_startY+i
)
*
(
dx_step>>2
)
+
(
dx_startX+col
)
;
float
dx_s
=
dx_con
?
Dx[indexDx]
:
0.0f
;
dx_data[i]
=
dx_s
;
bool
dy_con
=
dy_startX+col
>=
0
&&
dy_startX+col
<
dy_whole_cols
&&
dy_startY+i
>=
0
&&
dy_startY+i
<
dy_whole_rows
;
int
indexDy
=
(
dy_startY+i
)
*
(
dy_step>>2
)
+
(
dy_startX+col
)
;
float
dy_s
=
dx_con
?
Dy[indexDy]
:
0.0f
;
dy_data[i]
=
dy_s
;
data[0][i]
=
dx_data[i]
*
dx_data[i]
;
data[1][i]
=
dx_data[i]
*
dy_data[i]
;
data[2][i]
=
dy_data[i]
*
dy_data[i]
;
...
...
modules/ocl/src/opencl/imgproc_calcMinEigenVal.cl
浏览文件 @
dd942df0
...
...
@@ -118,16 +118,16 @@ __kernel void calcMinEigenVal(__global const float *Dx,__global const float *Dy,
__local
float
temp[6][THREADS]
;
#
ifdef
BORDER_CONSTANT
bool
dx_con,
dy_con
;
float
dx_s,
dy_s
;
for
(
int
i=0
; i < ksY+1; i++)
{
dx_con
=
dx_startX+col
>=
0
&&
dx_startX+col
<
dx_whole_cols
&&
dx_startY+i
>=
0
&&
dx_startY+i
<
dx_whole_rows
;
dx_s
=
Dx[
(
dx_startY+i
)
*
(
dx_step>>2
)
+
(
dx_startX+col
)
]
;
dx_data[i]
=
dx_con
?
dx_s
:
0.0f
;
dy_con
=
dy_startX+col
>=
0
&&
dy_startX+col
<
dy_whole_cols
&&
dy_startY+i
>=
0
&&
dy_startY+i
<
dy_whole_rows
;
dy_s
=
Dy[
(
dy_startY+i
)
*
(
dy_step>>2
)
+
(
dy_startX+col
)
]
;
dy_data[i]
=
dy_con
?
dy_s
:
0.0f
;
bool
dx_con
=
dx_startX+col
>=
0
&&
dx_startX+col
<
dx_whole_cols
&&
dx_startY+i
>=
0
&&
dx_startY+i
<
dx_whole_rows
;
int
indexDx
=
(
dx_startY+i
)
*
(
dx_step>>2
)
+
(
dx_startX+col
)
;
float
dx_s
=
dx_con
?
Dx[indexDx]
:
0.0f
;
dx_data[i]
=
dx_s
;
bool
dy_con
=
dy_startX+col
>=
0
&&
dy_startX+col
<
dy_whole_cols
&&
dy_startY+i
>=
0
&&
dy_startY+i
<
dy_whole_rows
;
int
indexDy
=
(
dy_startY+i
)
*
(
dy_step>>2
)
+
(
dy_startX+col
)
;
float
dy_s
=
dx_con
?
Dy[indexDy]
:
0.0f
;
dy_data[i]
=
dy_s
;
data[0][i]
=
dx_data[i]
*
dx_data[i]
;
data[1][i]
=
dx_data[i]
*
dy_data[i]
;
data[2][i]
=
dy_data[i]
*
dy_data[i]
;
...
...
modules/ocl/test/test_imgproc.cpp
浏览文件 @
dd942df0
...
...
@@ -93,14 +93,22 @@ PARAM_TEST_CASE(ImgprocTestBase, MatType,
generateOclMat
(
gdst_whole
,
gdst_roi
,
dst_whole
,
roiSize
,
dstBorder
);
}
void
Near
(
double
threshold
=
0.0
)
void
Near
(
double
threshold
=
0.0
,
bool
relative
=
false
)
{
Mat
whole
,
roi
;
Mat
roi
,
whole
;
gdst_whole
.
download
(
whole
);
gdst_roi
.
download
(
roi
);
EXPECT_MAT_NEAR
(
dst_whole
,
whole
,
threshold
);
EXPECT_MAT_NEAR
(
dst_roi
,
roi
,
threshold
);
if
(
relative
)
{
EXPECT_MAT_NEAR_RELATIVE
(
dst_whole
,
whole
,
threshold
);
EXPECT_MAT_NEAR_RELATIVE
(
dst_roi
,
roi
,
threshold
);
}
else
{
EXPECT_MAT_NEAR
(
dst_whole
,
whole
,
threshold
);
EXPECT_MAT_NEAR
(
dst_roi
,
roi
,
threshold
);
}
}
};
...
...
@@ -228,7 +236,7 @@ OCL_TEST_P(CornerMinEigenVal, Mat)
cornerMinEigenVal
(
src_roi
,
dst_roi
,
blockSize
,
apertureSize
,
borderType
);
ocl
::
cornerMinEigenVal
(
gsrc_roi
,
gdst_roi
,
blockSize
,
apertureSize
,
borderType
);
Near
(
0.02
);
Near
(
1e-5
,
true
);
}
}
...
...
@@ -248,7 +256,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
(
0.02
);
Near
(
1e-5
,
true
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录