Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv_contrib
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv_contrib
Commits
05eb9f35
Commit
05eb9f35
authored
Mar 15, 2017
by
Alexander Alekhin
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1062 from pengli:dis_optflow
parents
1ecbb8f0
7ed6f778
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
215 additions
and
0 deletions
+215
-0
perf_dis_optflow.cpp
modules/optflow/perf/opencl/perf_dis_optflow.cpp
+113
-0
dis_flow.cpp
modules/optflow/src/dis_flow.cpp
+0
-0
dis_flow.cl
modules/optflow/src/opencl/dis_flow.cl
+0
-0
precomp.hpp
modules/optflow/src/precomp.hpp
+2
-0
test_dis.cpp
modules/optflow/test/ocl/test_dis.cpp
+100
-0
No files found.
modules/optflow/perf/opencl/perf_dis_optflow.cpp
0 → 100644
View file @
05eb9f35
/*
* By downloading, copying, installing or using the software you agree to this license.
* If you do not agree to this license, do not download, install,
* copy or use the software.
*
*
* License Agreement
* For Open Source Computer Vision Library
* (3 - clause BSD License)
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met :
*
* * Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and / or other materials provided with the distribution.
*
* * Neither the names of the copyright holders nor the names of the contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* This software is provided by the copyright holders and contributors "as is" and
* any express or implied warranties, including, but not limited to, the implied
* warranties of merchantability and fitness for a particular purpose are disclaimed.
* In no event shall copyright holders or contributors be liable for any direct,
* indirect, incidental, special, exemplary, or consequential damages
* (including, but not limited to, procurement of substitute goods or services;
* loss of use, data, or profits; or business interruption) however caused
* and on any theory of liability, whether in contract, strict liability,
* or tort(including negligence or otherwise) arising in any way out of
* the use of this software, even if advised of the possibility of such damage.
*/
#include "../perf_precomp.hpp"
#include "opencv2/ts/ocl_perf.hpp"
using
std
::
tr1
::
tuple
;
using
std
::
tr1
::
get
;
using
namespace
perf
;
using
namespace
testing
;
using
namespace
cv
;
using
namespace
cv
::
optflow
;
#ifdef HAVE_OPENCL
namespace
cvtest
{
namespace
ocl
{
void
MakeArtificialExample
(
UMat
&
dst_frame1
,
UMat
&
dst_frame2
);
typedef
tuple
<
String
,
Size
>
DISParams
;
typedef
TestBaseWithParam
<
DISParams
>
DenseOpticalFlow_DIS
;
OCL_PERF_TEST_P
(
DenseOpticalFlow_DIS
,
perf
,
Combine
(
Values
(
"PRESET_ULTRAFAST"
,
"PRESET_FAST"
,
"PRESET_MEDIUM"
),
Values
(
szVGA
,
sz720p
,
sz1080p
)))
{
DISParams
params
=
GetParam
();
// use strings to print preset names in the perf test results:
String
preset_string
=
get
<
0
>
(
params
);
int
preset
=
DISOpticalFlow
::
PRESET_FAST
;
if
(
preset_string
==
"PRESET_ULTRAFAST"
)
preset
=
DISOpticalFlow
::
PRESET_ULTRAFAST
;
else
if
(
preset_string
==
"PRESET_FAST"
)
preset
=
DISOpticalFlow
::
PRESET_FAST
;
else
if
(
preset_string
==
"PRESET_MEDIUM"
)
preset
=
DISOpticalFlow
::
PRESET_MEDIUM
;
Size
sz
=
get
<
1
>
(
params
);
UMat
frame1
(
sz
,
CV_8U
);
UMat
frame2
(
sz
,
CV_8U
);
UMat
flow
;
MakeArtificialExample
(
frame1
,
frame2
);
Ptr
<
DenseOpticalFlow
>
algo
=
createOptFlow_DIS
(
preset
);
OCL_TEST_CYCLE_N
(
10
)
{
algo
->
calc
(
frame1
,
frame2
,
flow
);
}
SANITY_CHECK_NOTHING
();
}
void
MakeArtificialExample
(
UMat
&
dst_frame1
,
UMat
&
dst_frame2
)
{
int
src_scale
=
2
;
int
OF_scale
=
6
;
double
sigma
=
dst_frame1
.
cols
/
300
;
UMat
tmp
(
Size
(
dst_frame1
.
cols
/
(
int
)
pow
(
2
,
src_scale
),
dst_frame1
.
rows
/
(
int
)
pow
(
2
,
src_scale
)),
CV_8U
);
randu
(
tmp
,
0
,
255
);
resize
(
tmp
,
dst_frame1
,
dst_frame1
.
size
(),
0.0
,
0.0
,
INTER_LINEAR
);
resize
(
tmp
,
dst_frame2
,
dst_frame2
.
size
(),
0.0
,
0.0
,
INTER_LINEAR
);
Mat
displacement_field
(
Size
(
dst_frame1
.
cols
/
(
int
)
pow
(
2
,
OF_scale
),
dst_frame1
.
rows
/
(
int
)
pow
(
2
,
OF_scale
)),
CV_32FC2
);
randn
(
displacement_field
,
0.0
,
sigma
);
resize
(
displacement_field
,
displacement_field
,
dst_frame2
.
size
(),
0.0
,
0.0
,
INTER_CUBIC
);
for
(
int
i
=
0
;
i
<
displacement_field
.
rows
;
i
++
)
for
(
int
j
=
0
;
j
<
displacement_field
.
cols
;
j
++
)
displacement_field
.
at
<
Vec2f
>
(
i
,
j
)
+=
Vec2f
((
float
)
j
,
(
float
)
i
);
remap
(
dst_frame2
,
dst_frame2
,
displacement_field
,
Mat
(),
INTER_LINEAR
,
BORDER_REPLICATE
);
}
}
}
// namespace cvtest::ocl
#endif // HAVE_OPENCL
modules/optflow/src/dis_flow.cpp
View file @
05eb9f35
This diff is collapsed.
Click to expand it.
modules/optflow/src/opencl/dis_flow.cl
0 → 100644
View file @
05eb9f35
This diff is collapsed.
Click to expand it.
modules/optflow/src/precomp.hpp
View file @
05eb9f35
...
@@ -45,6 +45,8 @@ the use of this software, even if advised of the possibility of such damage.
...
@@ -45,6 +45,8 @@ the use of this software, even if advised of the possibility of such damage.
#include <opencv2/optflow.hpp>
#include <opencv2/optflow.hpp>
#include <opencv2/video.hpp>
#include <opencv2/video.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/imgproc.hpp>
#include "opencv2/core/utility.hpp"
#include "opencv2/core/private.hpp"
#include "opencv2/core/ocl.hpp"
#include "opencv2/core/ocl.hpp"
#include <algorithm>
#include <algorithm>
...
...
modules/optflow/test/ocl/test_dis.cpp
0 → 100644
View file @
05eb9f35
/*M///////////////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
//
// By downloading, copying, installing or using the software you agree to this license.
// If you do not agree to this license, do not download, install,
// copy or use the software.
//
//
// Intel License Agreement
// For Open Source Computer Vision Library
//
// Copyright (C) 2000, Intel Corporation, all rights reserved.
// Third party copyrights are property of their respective owners.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// * Redistribution's of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistribution's in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// * The name of Intel Corporation may not be used to endorse or promote products
// derived from this software without specific prior written permission.
//
// This software is provided by the copyright holders and contributors "as is" and
// any express or implied warranties, including, but not limited to, the implied
// warranties of merchantability and fitness for a particular purpose are disclaimed.
// In no event shall the Intel Corporation or contributors be liable for any direct,
// indirect, incidental, special, exemplary, or consequential damages
// (including, but not limited to, procurement of substitute goods or services;
// loss of use, data, or profits; or business interruption) however caused
// and on any theory of liability, whether in contract, strict liability,
// or tort (including negligence or otherwise) arising in any way out of
// the use of this software, even if advised of the possibility of such damage.
//
//M*/
#include "../test_precomp.hpp"
#include "opencv2/ts/ocl_test.hpp"
#ifdef HAVE_OPENCL
using
namespace
cv
;
using
namespace
optflow
;
namespace
cvtest
{
namespace
ocl
{
PARAM_TEST_CASE
(
OCL_DenseOpticalFlow_DIS
,
int
)
{
int
preset
;
virtual
void
SetUp
()
{
preset
=
GET_PARAM
(
0
);
}
};
OCL_TEST_P
(
OCL_DenseOpticalFlow_DIS
,
Mat
)
{
Mat
frame1
,
frame2
,
GT
;
frame1
=
imread
(
TS
::
ptr
()
->
get_data_path
()
+
"optflow/RubberWhale1.png"
);
frame2
=
imread
(
TS
::
ptr
()
->
get_data_path
()
+
"optflow/RubberWhale2.png"
);
CV_Assert
(
!
frame1
.
empty
()
&&
!
frame2
.
empty
());
cvtColor
(
frame1
,
frame1
,
COLOR_BGR2GRAY
);
cvtColor
(
frame2
,
frame2
,
COLOR_BGR2GRAY
);
Ptr
<
DenseOpticalFlow
>
algo
;
// iterate over presets:
for
(
int
i
=
0
;
i
<
test_loop_times
;
i
++
)
{
Mat
flow
;
UMat
ocl_flow
;
algo
=
createOptFlow_DIS
(
preset
);
OCL_OFF
(
algo
->
calc
(
frame1
,
frame2
,
flow
));
OCL_ON
(
algo
->
calc
(
frame1
,
frame2
,
ocl_flow
));
ASSERT_EQ
(
flow
.
rows
,
ocl_flow
.
rows
);
ASSERT_EQ
(
flow
.
cols
,
ocl_flow
.
cols
);
EXPECT_MAT_SIMILAR
(
flow
,
ocl_flow
,
6e-3
);
}
}
OCL_INSTANTIATE_TEST_CASE_P
(
Contrib
,
OCL_DenseOpticalFlow_DIS
,
Values
(
DISOpticalFlow
::
PRESET_ULTRAFAST
,
DISOpticalFlow
::
PRESET_FAST
,
DISOpticalFlow
::
PRESET_MEDIUM
));
}
}
// namespace cvtest::ocl
#endif // HAVE_OPENCL
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment