Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
7b08d5ec
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,发现更多精彩内容 >>
提交
7b08d5ec
编写于
4月 20, 2013
作者:
P
Peng Xiao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add OpenCL stereo CSBP implementation
上级
a9a26950
变更
4
展开全部
显示空白变更内容
内联
并排
Showing
4 changed file
with
2033 addition
and
8 deletion
+2033
-8
modules/ocl/include/opencv2/ocl/ocl.hpp
modules/ocl/include/opencv2/ocl/ocl.hpp
+38
-0
modules/ocl/src/opencl/stereocsbp.cl
modules/ocl/src/opencl/stereocsbp.cl
+1135
-0
modules/ocl/src/stereo_csbp.cpp
modules/ocl/src/stereo_csbp.cpp
+792
-0
modules/ocl/test/test_calib3d.cpp
modules/ocl/test/test_calib3d.cpp
+68
-8
未找到文件。
modules/ocl/include/opencv2/ocl/ocl.hpp
浏览文件 @
7b08d5ec
...
...
@@ -1731,6 +1731,44 @@ namespace cv
std
::
vector
<
oclMat
>
datas
;
oclMat
out
;
};
class
CV_EXPORTS
StereoConstantSpaceBP
{
public:
enum
{
DEFAULT_NDISP
=
128
};
enum
{
DEFAULT_ITERS
=
8
};
enum
{
DEFAULT_LEVELS
=
4
};
enum
{
DEFAULT_NR_PLANE
=
4
};
static
void
estimateRecommendedParams
(
int
width
,
int
height
,
int
&
ndisp
,
int
&
iters
,
int
&
levels
,
int
&
nr_plane
);
explicit
StereoConstantSpaceBP
(
int
ndisp
=
DEFAULT_NDISP
,
int
iters
=
DEFAULT_ITERS
,
int
levels
=
DEFAULT_LEVELS
,
int
nr_plane
=
DEFAULT_NR_PLANE
,
int
msg_type
=
CV_32F
);
StereoConstantSpaceBP
(
int
ndisp
,
int
iters
,
int
levels
,
int
nr_plane
,
float
max_data_term
,
float
data_weight
,
float
max_disc_term
,
float
disc_single_jump
,
int
min_disp_th
=
0
,
int
msg_type
=
CV_32F
);
void
operator
()(
const
oclMat
&
left
,
const
oclMat
&
right
,
oclMat
&
disparity
);
int
ndisp
;
int
iters
;
int
levels
;
int
nr_plane
;
float
max_data_term
;
float
data_weight
;
float
max_disc_term
;
float
disc_single_jump
;
int
min_disp_th
;
int
msg_type
;
bool
use_local_init_data_cost
;
private:
oclMat
u
[
2
],
d
[
2
],
l
[
2
],
r
[
2
];
oclMat
disp_selected_pyr
[
2
];
oclMat
data_cost
;
oclMat
data_cost_selected
;
oclMat
temp
;
oclMat
out
;
};
}
}
#if defined _MSC_VER && _MSC_VER >= 1200
...
...
modules/ocl/src/opencl/stereocsbp.cl
0 → 100644
浏览文件 @
7b08d5ec
此差异已折叠。
点击以展开。
modules/ocl/src/stereo_csbp.cpp
0 → 100644
浏览文件 @
7b08d5ec
此差异已折叠。
点击以展开。
modules/ocl/test/test_calib3d.cpp
浏览文件 @
7b08d5ec
...
...
@@ -134,4 +134,64 @@ TEST_P(StereoMatchBP, Regression)
INSTANTIATE_TEST_CASE_P
(
OCL_Calib3D
,
StereoMatchBP
,
testing
::
Combine
(
testing
::
Values
(
64
),
testing
::
Values
(
8
),
testing
::
Values
(
2
),
testing
::
Values
(
25.0
f
),
testing
::
Values
(
0.1
f
),
testing
::
Values
(
15.0
f
),
testing
::
Values
(
1.0
f
)));
//////////////////////////////////////////////////////////////////////////
// ConstSpaceBeliefPropagation
PARAM_TEST_CASE
(
StereoMatchConstSpaceBP
,
int
,
int
,
int
,
int
,
float
,
float
,
float
,
float
,
int
,
int
)
{
int
ndisp_
;
int
iters_
;
int
levels_
;
int
nr_plane_
;
float
max_data_term_
;
float
data_weight_
;
float
max_disc_term_
;
float
disc_single_jump_
;
int
min_disp_th_
;
int
msg_type_
;
virtual
void
SetUp
()
{
ndisp_
=
GET_PARAM
(
0
);
iters_
=
GET_PARAM
(
1
);
levels_
=
GET_PARAM
(
2
);
nr_plane_
=
GET_PARAM
(
3
);
max_data_term_
=
GET_PARAM
(
4
);
data_weight_
=
GET_PARAM
(
5
);
max_disc_term_
=
GET_PARAM
(
6
);
disc_single_jump_
=
GET_PARAM
(
7
);
min_disp_th_
=
GET_PARAM
(
8
);
msg_type_
=
GET_PARAM
(
9
);
}
};
TEST_P
(
StereoMatchConstSpaceBP
,
Regression
)
{
Mat
left_image
=
readImage
(
"csstereobp/aloe-L.png"
);
Mat
right_image
=
readImage
(
"csstereobp/aloe-R.png"
);
Mat
disp_gold
=
readImage
(
"csstereobp/aloe-disp.png"
,
IMREAD_GRAYSCALE
);
ocl
::
oclMat
d_left
,
d_right
;
ocl
::
oclMat
d_disp
;
Mat
disp
;
ASSERT_FALSE
(
left_image
.
empty
());
ASSERT_FALSE
(
right_image
.
empty
());
ASSERT_FALSE
(
disp_gold
.
empty
());
d_left
.
upload
(
left_image
);
d_right
.
upload
(
right_image
);
ocl
::
StereoConstantSpaceBP
bp
(
ndisp_
,
iters_
,
levels_
,
nr_plane_
,
max_data_term_
,
data_weight_
,
max_disc_term_
,
disc_single_jump_
,
0
,
CV_32F
);
bp
(
d_left
,
d_right
,
d_disp
);
d_disp
.
download
(
disp
);
disp
.
convertTo
(
disp
,
disp_gold
.
depth
());
EXPECT_MAT_SIMILAR
(
disp_gold
,
disp
,
1e-4
);
//EXPECT_MAT_NEAR(disp_gold, disp, 1.0, "");
}
INSTANTIATE_TEST_CASE_P
(
OCL_Calib3D
,
StereoMatchConstSpaceBP
,
testing
::
Combine
(
testing
::
Values
(
128
),
testing
::
Values
(
16
),
testing
::
Values
(
4
),
testing
::
Values
(
4
),
testing
::
Values
(
30.0
f
),
testing
::
Values
(
1.0
f
),
testing
::
Values
(
160.0
f
),
testing
::
Values
(
10.0
f
),
testing
::
Values
(
0
),
testing
::
Values
(
CV_32F
)));
#endif // HAVE_OPENCL
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录