Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
1a1097ab
O
Opencv
项目概览
Greenplum
/
Opencv
11 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
1a1097ab
编写于
7月 30, 2014
作者:
V
Vadim Pisarevsky
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #2983 from wnoise:shrink-global-cuda-usage
上级
2ab7fb60
4644689d
变更
6
展开全部
显示空白变更内容
内联
并排
Showing
6 changed file
with
267 addition
and
337 deletion
+267
-337
modules/cudastereo/src/cuda/disparity_bilateral_filter.cu
modules/cudastereo/src/cuda/disparity_bilateral_filter.cu
+14
-32
modules/cudastereo/src/cuda/disparity_bilateral_filter.hpp
modules/cudastereo/src/cuda/disparity_bilateral_filter.hpp
+8
-0
modules/cudastereo/src/cuda/stereocsbp.cu
modules/cudastereo/src/cuda/stereocsbp.cu
+196
-246
modules/cudastereo/src/cuda/stereocsbp.hpp
modules/cudastereo/src/cuda/stereocsbp.hpp
+29
-0
modules/cudastereo/src/disparity_bilateral_filter.cpp
modules/cudastereo/src/disparity_bilateral_filter.cpp
+3
-12
modules/cudastereo/src/stereocsbp.cpp
modules/cudastereo/src/stereocsbp.cpp
+17
-47
未找到文件。
modules/cudastereo/src/cuda/disparity_bilateral_filter.cu
浏览文件 @
1a1097ab
...
...
@@ -45,34 +45,12 @@
#include "opencv2/core/cuda/common.hpp"
#include "opencv2/core/cuda/limits.hpp"
#include "cuda/disparity_bilateral_filter.hpp"
namespace
cv
{
namespace
cuda
{
namespace
device
{
namespace
disp_bilateral_filter
{
__constant__
float
*
ctable_color
;
__constant__
float
*
ctable_space
;
__constant__
size_t
ctable_space_step
;
__constant__
int
cndisp
;
__constant__
int
cradius
;
__constant__
short
cedge_disc
;
__constant__
short
cmax_disc
;
void
disp_load_constants
(
float
*
table_color
,
PtrStepSzf
table_space
,
int
ndisp
,
int
radius
,
short
edge_disc
,
short
max_disc
)
{
cudaSafeCall
(
cudaMemcpyToSymbol
(
ctable_color
,
&
table_color
,
sizeof
(
table_color
))
);
cudaSafeCall
(
cudaMemcpyToSymbol
(
ctable_space
,
&
table_space
.
data
,
sizeof
(
table_space
.
data
))
);
size_t
table_space_step
=
table_space
.
step
/
sizeof
(
float
);
cudaSafeCall
(
cudaMemcpyToSymbol
(
ctable_space_step
,
&
table_space_step
,
sizeof
(
size_t
))
);
cudaSafeCall
(
cudaMemcpyToSymbol
(
cndisp
,
&
ndisp
,
sizeof
(
int
))
);
cudaSafeCall
(
cudaMemcpyToSymbol
(
cradius
,
&
radius
,
sizeof
(
int
))
);
cudaSafeCall
(
cudaMemcpyToSymbol
(
cedge_disc
,
&
edge_disc
,
sizeof
(
short
))
);
cudaSafeCall
(
cudaMemcpyToSymbol
(
cmax_disc
,
&
max_disc
,
sizeof
(
short
))
);
}
template
<
int
channels
>
struct
DistRgbMax
{
...
...
@@ -95,7 +73,11 @@ namespace cv { namespace cuda { namespace device
};
template
<
int
channels
,
typename
T
>
__global__
void
disp_bilateral_filter
(
int
t
,
T
*
disp
,
size_t
disp_step
,
const
uchar
*
img
,
size_t
img_step
,
int
h
,
int
w
)
__global__
void
disp_bilateral_filter
(
int
t
,
T
*
disp
,
size_t
disp_step
,
const
uchar
*
img
,
size_t
img_step
,
int
h
,
int
w
,
const
float
*
ctable_color
,
const
float
*
ctable_space
,
size_t
ctable_space_step
,
int
cradius
,
short
cedge_disc
,
short
cmax_disc
)
{
const
int
y
=
blockIdx
.
y
*
blockDim
.
y
+
threadIdx
.
y
;
const
int
x
=
((
blockIdx
.
x
*
blockDim
.
x
+
threadIdx
.
x
)
<<
1
)
+
((
y
+
t
)
&
1
);
...
...
@@ -178,7 +160,7 @@ namespace cv { namespace cuda { namespace device
}
template
<
typename
T
>
void
disp_bilateral_filter
(
PtrStepSz
<
T
>
disp
,
PtrStepSzb
img
,
int
channels
,
int
iters
,
cudaStream_t
stream
)
void
disp_bilateral_filter
(
PtrStepSz
<
T
>
disp
,
PtrStepSzb
img
,
int
channels
,
int
iters
,
c
onst
float
*
table_color
,
const
float
*
table_space
,
size_t
table_step
,
int
radius
,
short
edge_disc
,
short
max_disc
,
c
udaStream_t
stream
)
{
dim3
threads
(
32
,
8
,
1
);
dim3
grid
(
1
,
1
,
1
);
...
...
@@ -190,20 +172,20 @@ namespace cv { namespace cuda { namespace device
case
1
:
for
(
int
i
=
0
;
i
<
iters
;
++
i
)
{
disp_bilateral_filter
<
1
><<<
grid
,
threads
,
0
,
stream
>>>
(
0
,
disp
.
data
,
disp
.
step
/
sizeof
(
T
),
img
.
data
,
img
.
step
,
disp
.
rows
,
disp
.
cols
);
disp_bilateral_filter
<
1
><<<
grid
,
threads
,
0
,
stream
>>>
(
0
,
disp
.
data
,
disp
.
step
/
sizeof
(
T
),
img
.
data
,
img
.
step
,
disp
.
rows
,
disp
.
cols
,
table_color
,
table_space
,
table_step
,
radius
,
edge_disc
,
max_disc
);
cudaSafeCall
(
cudaGetLastError
()
);
disp_bilateral_filter
<
1
><<<
grid
,
threads
,
0
,
stream
>>>
(
1
,
disp
.
data
,
disp
.
step
/
sizeof
(
T
),
img
.
data
,
img
.
step
,
disp
.
rows
,
disp
.
cols
);
disp_bilateral_filter
<
1
><<<
grid
,
threads
,
0
,
stream
>>>
(
1
,
disp
.
data
,
disp
.
step
/
sizeof
(
T
),
img
.
data
,
img
.
step
,
disp
.
rows
,
disp
.
cols
,
table_color
,
table_space
,
table_step
,
radius
,
edge_disc
,
max_disc
);
cudaSafeCall
(
cudaGetLastError
()
);
}
break
;
case
3
:
for
(
int
i
=
0
;
i
<
iters
;
++
i
)
{
disp_bilateral_filter
<
3
><<<
grid
,
threads
,
0
,
stream
>>>
(
0
,
disp
.
data
,
disp
.
step
/
sizeof
(
T
),
img
.
data
,
img
.
step
,
disp
.
rows
,
disp
.
cols
);
disp_bilateral_filter
<
3
><<<
grid
,
threads
,
0
,
stream
>>>
(
0
,
disp
.
data
,
disp
.
step
/
sizeof
(
T
),
img
.
data
,
img
.
step
,
disp
.
rows
,
disp
.
cols
,
table_color
,
table_space
,
table_step
,
radius
,
edge_disc
,
max_disc
);
cudaSafeCall
(
cudaGetLastError
()
);
disp_bilateral_filter
<
3
><<<
grid
,
threads
,
0
,
stream
>>>
(
1
,
disp
.
data
,
disp
.
step
/
sizeof
(
T
),
img
.
data
,
img
.
step
,
disp
.
rows
,
disp
.
cols
);
disp_bilateral_filter
<
3
><<<
grid
,
threads
,
0
,
stream
>>>
(
1
,
disp
.
data
,
disp
.
step
/
sizeof
(
T
),
img
.
data
,
img
.
step
,
disp
.
rows
,
disp
.
cols
,
table_color
,
table_space
,
table_step
,
radius
,
edge_disc
,
max_disc
);
cudaSafeCall
(
cudaGetLastError
()
);
}
break
;
...
...
@@ -215,8 +197,8 @@ namespace cv { namespace cuda { namespace device
cudaSafeCall
(
cudaDeviceSynchronize
()
);
}
template
void
disp_bilateral_filter
<
uchar
>(
PtrStepSz
<
uchar
>
disp
,
PtrStepSzb
img
,
int
channels
,
int
iters
,
cudaStream_t
stream
);
template
void
disp_bilateral_filter
<
short
>(
PtrStepSz
<
short
>
disp
,
PtrStepSzb
img
,
int
channels
,
int
iters
,
cudaStream_t
stream
);
template
void
disp_bilateral_filter
<
uchar
>(
PtrStepSz
<
uchar
>
disp
,
PtrStepSzb
img
,
int
channels
,
int
iters
,
c
onst
float
*
table_color
,
const
float
*
table_space
,
size_t
table_step
,
int
radius
,
short
,
short
,
c
udaStream_t
stream
);
template
void
disp_bilateral_filter
<
short
>(
PtrStepSz
<
short
>
disp
,
PtrStepSzb
img
,
int
channels
,
int
iters
,
c
onst
float
*
table_color
,
const
float
*
table_space
,
size_t
table_step
,
int
radius
,
short
,
short
,
c
udaStream_t
stream
);
}
// namespace bilateral_filter
}}}
// namespace cv { namespace cuda { namespace cudev
...
...
modules/cudastereo/src/cuda/disparity_bilateral_filter.hpp
0 → 100644
浏览文件 @
1a1097ab
namespace
cv
{
namespace
cuda
{
namespace
device
{
namespace
disp_bilateral_filter
{
template
<
typename
T
>
void
disp_bilateral_filter
(
PtrStepSz
<
T
>
disp
,
PtrStepSzb
img
,
int
channels
,
int
iters
,
const
float
*
,
const
float
*
,
size_t
,
int
radius
,
short
edge_disc
,
short
max_disc
,
cudaStream_t
stream
);
}
}}}
modules/cudastereo/src/cuda/stereocsbp.cu
浏览文件 @
1a1097ab
此差异已折叠。
点击以展开。
modules/cudastereo/src/cuda/stereocsbp.hpp
0 → 100644
浏览文件 @
1a1097ab
namespace
cv
{
namespace
cuda
{
namespace
device
{
namespace
stereocsbp
{
template
<
class
T
>
void
init_data_cost
(
const
uchar
*
left
,
const
uchar
*
right
,
uchar
*
ctemp
,
size_t
cimg_step
,
int
rows
,
int
cols
,
T
*
disp_selected_pyr
,
T
*
data_cost_selected
,
size_t
msg_step
,
int
h
,
int
w
,
int
level
,
int
nr_plane
,
int
ndisp
,
int
channels
,
float
data_weight
,
float
max_data_term
,
int
min_disp
,
bool
use_local_init_data_cost
,
cudaStream_t
stream
);
template
<
class
T
>
void
compute_data_cost
(
const
uchar
*
left
,
const
uchar
*
right
,
size_t
cimg_step
,
const
T
*
disp_selected_pyr
,
T
*
data_cost
,
size_t
msg_step
,
int
rows
,
int
cols
,
int
h
,
int
w
,
int
h2
,
int
level
,
int
nr_plane
,
int
channels
,
float
data_weight
,
float
max_data_term
,
int
min_disp
,
cudaStream_t
stream
);
template
<
class
T
>
void
init_message
(
uchar
*
ctemp
,
T
*
u_new
,
T
*
d_new
,
T
*
l_new
,
T
*
r_new
,
const
T
*
u_cur
,
const
T
*
d_cur
,
const
T
*
l_cur
,
const
T
*
r_cur
,
T
*
selected_disp_pyr_new
,
const
T
*
selected_disp_pyr_cur
,
T
*
data_cost_selected
,
const
T
*
data_cost
,
size_t
msg_step
,
int
h
,
int
w
,
int
nr_plane
,
int
h2
,
int
w2
,
int
nr_plane2
,
cudaStream_t
stream
);
template
<
class
T
>
void
calc_all_iterations
(
uchar
*
ctemp
,
T
*
u
,
T
*
d
,
T
*
l
,
T
*
r
,
const
T
*
data_cost_selected
,
const
T
*
selected_disp_pyr_cur
,
size_t
msg_step
,
int
h
,
int
w
,
int
nr_plane
,
int
iters
,
int
max_disc_term
,
float
disc_single_jump
,
cudaStream_t
stream
);
template
<
class
T
>
void
compute_disp
(
const
T
*
u
,
const
T
*
d
,
const
T
*
l
,
const
T
*
r
,
const
T
*
data_cost_selected
,
const
T
*
disp_selected
,
size_t
msg_step
,
const
PtrStepSz
<
short
>&
disp
,
int
nr_plane
,
cudaStream_t
stream
);
}
}}}
modules/cudastereo/src/disparity_bilateral_filter.cpp
浏览文件 @
1a1097ab
...
...
@@ -51,16 +51,7 @@ Ptr<cuda::DisparityBilateralFilter> cv::cuda::createDisparityBilateralFilter(int
#else
/* !defined (HAVE_CUDA) */
namespace
cv
{
namespace
cuda
{
namespace
device
{
namespace
disp_bilateral_filter
{
void
disp_load_constants
(
float
*
table_color
,
PtrStepSzf
table_space
,
int
ndisp
,
int
radius
,
short
edge_disc
,
short
max_disc
);
template
<
typename
T
>
void
disp_bilateral_filter
(
PtrStepSz
<
T
>
disp
,
PtrStepSzb
img
,
int
channels
,
int
iters
,
cudaStream_t
stream
);
}
}}}
#include "cuda/disparity_bilateral_filter.hpp"
namespace
{
...
...
@@ -165,7 +156,7 @@ namespace
const
short
edge_disc
=
std
::
max
<
short
>
(
short
(
1
),
short
(
ndisp
*
edge_threshold
+
0.5
));
const
short
max_disc
=
short
(
ndisp
*
max_disc_threshold
+
0.5
);
disp_load_constants
(
table_color
.
ptr
<
float
>
(),
table_space
,
ndisp
,
radius
,
edge_disc
,
max_disc
);
size_t
table_space_step
=
table_space
.
step
/
sizeof
(
float
);
_dst
.
create
(
disp
.
size
(),
disp
.
type
());
GpuMat
dst
=
_dst
.
getGpuMat
();
...
...
@@ -173,7 +164,7 @@ namespace
if
(
dst
.
data
!=
disp
.
data
)
disp
.
copyTo
(
dst
,
stream
);
disp_bilateral_filter
<
T
>
(
dst
,
img
,
img
.
channels
(),
iters
,
StreamAccessor
::
getStream
(
stream
));
disp_bilateral_filter
<
T
>
(
dst
,
img
,
img
.
channels
(),
iters
,
table_color
.
ptr
<
float
>
(),
(
float
*
)
table_space
.
data
,
table_space_step
,
radius
,
edge_disc
,
max_disc
,
StreamAccessor
::
getStream
(
stream
));
}
void
DispBilateralFilterImpl
::
apply
(
InputArray
_disp
,
InputArray
_image
,
OutputArray
dst
,
Stream
&
stream
)
...
...
modules/cudastereo/src/stereocsbp.cpp
浏览文件 @
1a1097ab
...
...
@@ -53,37 +53,7 @@ Ptr<cuda::StereoConstantSpaceBP> cv::cuda::createStereoConstantSpaceBP(int, int,
#else
/* !defined (HAVE_CUDA) */
namespace
cv
{
namespace
cuda
{
namespace
device
{
namespace
stereocsbp
{
void
load_constants
(
int
ndisp
,
float
max_data_term
,
float
data_weight
,
float
max_disc_term
,
float
disc_single_jump
,
int
min_disp_th
,
const
PtrStepSzb
&
left
,
const
PtrStepSzb
&
right
,
const
PtrStepSzb
&
temp
);
template
<
class
T
>
void
init_data_cost
(
int
rows
,
int
cols
,
T
*
disp_selected_pyr
,
T
*
data_cost_selected
,
size_t
msg_step
,
int
h
,
int
w
,
int
level
,
int
nr_plane
,
int
ndisp
,
int
channels
,
bool
use_local_init_data_cost
,
cudaStream_t
stream
);
template
<
class
T
>
void
compute_data_cost
(
const
T
*
disp_selected_pyr
,
T
*
data_cost
,
size_t
msg_step
,
int
rows
,
int
cols
,
int
h
,
int
w
,
int
h2
,
int
level
,
int
nr_plane
,
int
channels
,
cudaStream_t
stream
);
template
<
class
T
>
void
init_message
(
T
*
u_new
,
T
*
d_new
,
T
*
l_new
,
T
*
r_new
,
const
T
*
u_cur
,
const
T
*
d_cur
,
const
T
*
l_cur
,
const
T
*
r_cur
,
T
*
selected_disp_pyr_new
,
const
T
*
selected_disp_pyr_cur
,
T
*
data_cost_selected
,
const
T
*
data_cost
,
size_t
msg_step
,
int
h
,
int
w
,
int
nr_plane
,
int
h2
,
int
w2
,
int
nr_plane2
,
cudaStream_t
stream
);
template
<
class
T
>
void
calc_all_iterations
(
T
*
u
,
T
*
d
,
T
*
l
,
T
*
r
,
const
T
*
data_cost_selected
,
const
T
*
selected_disp_pyr_cur
,
size_t
msg_step
,
int
h
,
int
w
,
int
nr_plane
,
int
iters
,
cudaStream_t
stream
);
template
<
class
T
>
void
compute_disp
(
const
T
*
u
,
const
T
*
d
,
const
T
*
l
,
const
T
*
r
,
const
T
*
data_cost_selected
,
const
T
*
disp_selected
,
size_t
msg_step
,
const
PtrStepSz
<
short
>&
disp
,
int
nr_plane
,
cudaStream_t
stream
);
}
}}}
#include "cuda/stereocsbp.hpp"
namespace
{
...
...
@@ -252,8 +222,6 @@ namespace
////////////////////////////////////////////////////////////////////////////
// Compute
load_constants
(
ndisp_
,
max_data_term_
,
data_weight_
,
max_disc_term_
,
disc_single_jump_
,
min_disp_th_
,
left
,
right
,
temp_
);
l
[
0
].
setTo
(
0
,
_stream
);
d
[
0
].
setTo
(
0
,
_stream
);
r
[
0
].
setTo
(
0
,
_stream
);
...
...
@@ -275,17 +243,18 @@ namespace
{
if
(
i
==
levels_
-
1
)
{
init_data_cost
(
left
.
rows
,
left
.
cols
,
disp_selected_pyr
[
cur_idx
].
ptr
<
float
>
(),
data_cost_selected
.
ptr
<
float
>
(),
elem_step
,
rows_pyr
[
i
],
cols_pyr
[
i
],
i
,
nr_plane_pyr
[
i
],
ndisp_
,
left
.
channels
(),
use_local_init_data_cost_
,
stream
);
init_data_cost
(
left
.
ptr
<
uchar
>
(),
right
.
ptr
<
uchar
>
(),
temp_
.
ptr
<
uchar
>
(),
left
.
step
,
left
.
rows
,
left
.
cols
,
disp_selected_pyr
[
cur_idx
].
ptr
<
float
>
(),
data_cost_selected
.
ptr
<
float
>
(),
elem_step
,
rows_pyr
[
i
],
cols_pyr
[
i
],
i
,
nr_plane_pyr
[
i
],
ndisp_
,
left
.
channels
(),
data_weight_
,
max_data_term_
,
min_disp_th_
,
use_local_init_data_cost_
,
stream
);
}
else
{
compute_data_cost
(
disp_selected_pyr
[
cur_idx
].
ptr
<
float
>
(),
data_cost
.
ptr
<
float
>
(),
elem_step
,
left
.
rows
,
left
.
cols
,
rows_pyr
[
i
],
cols_pyr
[
i
],
rows_pyr
[
i
+
1
],
i
,
nr_plane_pyr
[
i
+
1
],
left
.
channels
(),
stream
);
compute_data_cost
(
left
.
ptr
<
uchar
>
(),
right
.
ptr
<
uchar
>
(),
left
.
step
,
disp_selected_pyr
[
cur_idx
].
ptr
<
float
>
(),
data_cost
.
ptr
<
float
>
(),
elem_step
,
left
.
rows
,
left
.
cols
,
rows_pyr
[
i
],
cols_pyr
[
i
],
rows_pyr
[
i
+
1
],
i
,
nr_plane_pyr
[
i
+
1
],
left
.
channels
(),
data_weight_
,
max_data_term_
,
min_disp_th_
,
stream
);
int
new_idx
=
(
cur_idx
+
1
)
&
1
;
init_message
(
u
[
new_idx
].
ptr
<
float
>
(),
d
[
new_idx
].
ptr
<
float
>
(),
l
[
new_idx
].
ptr
<
float
>
(),
r
[
new_idx
].
ptr
<
float
>
(),
init_message
(
temp_
.
ptr
<
uchar
>
(),
u
[
new_idx
].
ptr
<
float
>
(),
d
[
new_idx
].
ptr
<
float
>
(),
l
[
new_idx
].
ptr
<
float
>
(),
r
[
new_idx
].
ptr
<
float
>
(),
u
[
cur_idx
].
ptr
<
float
>
(),
d
[
cur_idx
].
ptr
<
float
>
(),
l
[
cur_idx
].
ptr
<
float
>
(),
r
[
cur_idx
].
ptr
<
float
>
(),
disp_selected_pyr
[
new_idx
].
ptr
<
float
>
(),
disp_selected_pyr
[
cur_idx
].
ptr
<
float
>
(),
data_cost_selected
.
ptr
<
float
>
(),
data_cost
.
ptr
<
float
>
(),
elem_step
,
rows_pyr
[
i
],
...
...
@@ -294,9 +263,9 @@ namespace
cur_idx
=
new_idx
;
}
calc_all_iterations
(
u
[
cur_idx
].
ptr
<
float
>
(),
d
[
cur_idx
].
ptr
<
float
>
(),
l
[
cur_idx
].
ptr
<
float
>
(),
r
[
cur_idx
].
ptr
<
float
>
(),
calc_all_iterations
(
temp_
.
ptr
<
uchar
>
(),
u
[
cur_idx
].
ptr
<
float
>
(),
d
[
cur_idx
].
ptr
<
float
>
(),
l
[
cur_idx
].
ptr
<
float
>
(),
r
[
cur_idx
].
ptr
<
float
>
(),
data_cost_selected
.
ptr
<
float
>
(),
disp_selected_pyr
[
cur_idx
].
ptr
<
float
>
(),
elem_step
,
rows_pyr
[
i
],
cols_pyr
[
i
],
nr_plane_pyr
[
i
],
iters_
,
stream
);
rows_pyr
[
i
],
cols_pyr
[
i
],
nr_plane_pyr
[
i
],
iters_
,
max_disc_term_
,
disc_single_jump_
,
stream
);
}
}
else
...
...
@@ -305,17 +274,18 @@ namespace
{
if
(
i
==
levels_
-
1
)
{
init_data_cost
(
left
.
rows
,
left
.
cols
,
disp_selected_pyr
[
cur_idx
].
ptr
<
short
>
(),
data_cost_selected
.
ptr
<
short
>
(),
elem_step
,
rows_pyr
[
i
],
cols_pyr
[
i
],
i
,
nr_plane_pyr
[
i
],
ndisp_
,
left
.
channels
(),
use_local_init_data_cost_
,
stream
);
init_data_cost
(
left
.
ptr
<
uchar
>
(),
right
.
ptr
<
uchar
>
(),
temp_
.
ptr
<
uchar
>
(),
left
.
step
,
left
.
rows
,
left
.
cols
,
disp_selected_pyr
[
cur_idx
].
ptr
<
short
>
(),
data_cost_selected
.
ptr
<
short
>
(),
elem_step
,
rows_pyr
[
i
],
cols_pyr
[
i
],
i
,
nr_plane_pyr
[
i
],
ndisp_
,
left
.
channels
(),
data_weight_
,
max_data_term_
,
min_disp_th_
,
use_local_init_data_cost_
,
stream
);
}
else
{
compute_data_cost
(
disp_selected_pyr
[
cur_idx
].
ptr
<
short
>
(),
data_cost
.
ptr
<
short
>
(),
elem_step
,
left
.
rows
,
left
.
cols
,
rows_pyr
[
i
],
cols_pyr
[
i
],
rows_pyr
[
i
+
1
],
i
,
nr_plane_pyr
[
i
+
1
],
left
.
channels
(),
stream
);
compute_data_cost
(
left
.
ptr
<
uchar
>
(),
right
.
ptr
<
uchar
>
(),
left
.
step
,
disp_selected_pyr
[
cur_idx
].
ptr
<
short
>
(),
data_cost
.
ptr
<
short
>
(),
elem_step
,
left
.
rows
,
left
.
cols
,
rows_pyr
[
i
],
cols_pyr
[
i
],
rows_pyr
[
i
+
1
],
i
,
nr_plane_pyr
[
i
+
1
],
left
.
channels
(),
data_weight_
,
max_data_term_
,
min_disp_th_
,
stream
);
int
new_idx
=
(
cur_idx
+
1
)
&
1
;
init_message
(
u
[
new_idx
].
ptr
<
short
>
(),
d
[
new_idx
].
ptr
<
short
>
(),
l
[
new_idx
].
ptr
<
short
>
(),
r
[
new_idx
].
ptr
<
short
>
(),
init_message
(
temp_
.
ptr
<
uchar
>
(),
u
[
new_idx
].
ptr
<
short
>
(),
d
[
new_idx
].
ptr
<
short
>
(),
l
[
new_idx
].
ptr
<
short
>
(),
r
[
new_idx
].
ptr
<
short
>
(),
u
[
cur_idx
].
ptr
<
short
>
(),
d
[
cur_idx
].
ptr
<
short
>
(),
l
[
cur_idx
].
ptr
<
short
>
(),
r
[
cur_idx
].
ptr
<
short
>
(),
disp_selected_pyr
[
new_idx
].
ptr
<
short
>
(),
disp_selected_pyr
[
cur_idx
].
ptr
<
short
>
(),
data_cost_selected
.
ptr
<
short
>
(),
data_cost
.
ptr
<
short
>
(),
elem_step
,
rows_pyr
[
i
],
...
...
@@ -324,9 +294,9 @@ namespace
cur_idx
=
new_idx
;
}
calc_all_iterations
(
u
[
cur_idx
].
ptr
<
short
>
(),
d
[
cur_idx
].
ptr
<
short
>
(),
l
[
cur_idx
].
ptr
<
short
>
(),
r
[
cur_idx
].
ptr
<
short
>
(),
calc_all_iterations
(
temp_
.
ptr
<
uchar
>
(),
u
[
cur_idx
].
ptr
<
short
>
(),
d
[
cur_idx
].
ptr
<
short
>
(),
l
[
cur_idx
].
ptr
<
short
>
(),
r
[
cur_idx
].
ptr
<
short
>
(),
data_cost_selected
.
ptr
<
short
>
(),
disp_selected_pyr
[
cur_idx
].
ptr
<
short
>
(),
elem_step
,
rows_pyr
[
i
],
cols_pyr
[
i
],
nr_plane_pyr
[
i
],
iters_
,
stream
);
rows_pyr
[
i
],
cols_pyr
[
i
],
nr_plane_pyr
[
i
],
iters_
,
max_disc_term_
,
disc_single_jump_
,
stream
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录