Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
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
Commits
3e574cd2
Commit
3e574cd2
authored
Sep 01, 2014
by
Vadim Pisarevsky
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #3173 from rokm:cuda-6.5
parents
1f85ffa1
eb3cb772
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
44 additions
and
44 deletions
+44
-44
NCVPixelOperations.hpp
modules/cudalegacy/src/cuda/NCVPixelOperations.hpp
+41
-41
stereocsbp.cu
modules/cudastereo/src/cuda/stereocsbp.cu
+3
-3
No files found.
modules/cudalegacy/src/cuda/NCVPixelOperations.hpp
View file @
3e574cd2
...
...
@@ -48,24 +48,24 @@
#include "opencv2/cudalegacy/NCV.hpp"
template
<
typename
TBase
>
inline
__host__
__device__
TBase
_pixMaxVal
();
template
<>
static
inline
__host__
__device__
Ncv8u
_pixMaxVal
<
Ncv8u
>
()
{
return
UCHAR_MAX
;}
template
<>
static
inline
__host__
__device__
Ncv16u
_pixMaxVal
<
Ncv16u
>
()
{
return
USHRT_MAX
;}
template
<>
static
inline
__host__
__device__
Ncv32u
_pixMaxVal
<
Ncv32u
>
()
{
return
UINT_MAX
;}
template
<>
static
inline
__host__
__device__
Ncv8s
_pixMaxVal
<
Ncv8s
>
()
{
return
SCHAR_MAX
;}
template
<>
static
inline
__host__
__device__
Ncv16s
_pixMaxVal
<
Ncv16s
>
()
{
return
SHRT_MAX
;}
template
<>
static
inline
__host__
__device__
Ncv32s
_pixMaxVal
<
Ncv32s
>
()
{
return
INT_MAX
;}
template
<>
static
inline
__host__
__device__
Ncv32f
_pixMaxVal
<
Ncv32f
>
()
{
return
FLT_MAX
;}
template
<>
static
inline
__host__
__device__
Ncv64f
_pixMaxVal
<
Ncv64f
>
()
{
return
DBL_MAX
;}
template
<>
inline
__host__
__device__
Ncv8u
_pixMaxVal
<
Ncv8u
>
()
{
return
UCHAR_MAX
;}
template
<>
inline
__host__
__device__
Ncv16u
_pixMaxVal
<
Ncv16u
>
()
{
return
USHRT_MAX
;}
template
<>
inline
__host__
__device__
Ncv32u
_pixMaxVal
<
Ncv32u
>
()
{
return
UINT_MAX
;}
template
<>
inline
__host__
__device__
Ncv8s
_pixMaxVal
<
Ncv8s
>
()
{
return
SCHAR_MAX
;}
template
<>
inline
__host__
__device__
Ncv16s
_pixMaxVal
<
Ncv16s
>
()
{
return
SHRT_MAX
;}
template
<>
inline
__host__
__device__
Ncv32s
_pixMaxVal
<
Ncv32s
>
()
{
return
INT_MAX
;}
template
<>
inline
__host__
__device__
Ncv32f
_pixMaxVal
<
Ncv32f
>
()
{
return
FLT_MAX
;}
template
<>
inline
__host__
__device__
Ncv64f
_pixMaxVal
<
Ncv64f
>
()
{
return
DBL_MAX
;}
template
<
typename
TBase
>
inline
__host__
__device__
TBase
_pixMinVal
();
template
<>
static
inline
__host__
__device__
Ncv8u
_pixMinVal
<
Ncv8u
>
()
{
return
0
;}
template
<>
static
inline
__host__
__device__
Ncv16u
_pixMinVal
<
Ncv16u
>
()
{
return
0
;}
template
<>
static
inline
__host__
__device__
Ncv32u
_pixMinVal
<
Ncv32u
>
()
{
return
0
;}
template
<>
static
inline
__host__
__device__
Ncv8s
_pixMinVal
<
Ncv8s
>
()
{
return
SCHAR_MIN
;}
template
<>
static
inline
__host__
__device__
Ncv16s
_pixMinVal
<
Ncv16s
>
()
{
return
SHRT_MIN
;}
template
<>
static
inline
__host__
__device__
Ncv32s
_pixMinVal
<
Ncv32s
>
()
{
return
INT_MIN
;}
template
<>
static
inline
__host__
__device__
Ncv32f
_pixMinVal
<
Ncv32f
>
()
{
return
FLT_MIN
;}
template
<>
static
inline
__host__
__device__
Ncv64f
_pixMinVal
<
Ncv64f
>
()
{
return
DBL_MIN
;}
template
<>
inline
__host__
__device__
Ncv8u
_pixMinVal
<
Ncv8u
>
()
{
return
0
;}
template
<>
inline
__host__
__device__
Ncv16u
_pixMinVal
<
Ncv16u
>
()
{
return
0
;}
template
<>
inline
__host__
__device__
Ncv32u
_pixMinVal
<
Ncv32u
>
()
{
return
0
;}
template
<>
inline
__host__
__device__
Ncv8s
_pixMinVal
<
Ncv8s
>
()
{
return
SCHAR_MIN
;}
template
<>
inline
__host__
__device__
Ncv16s
_pixMinVal
<
Ncv16s
>
()
{
return
SHRT_MIN
;}
template
<>
inline
__host__
__device__
Ncv32s
_pixMinVal
<
Ncv32s
>
()
{
return
INT_MIN
;}
template
<>
inline
__host__
__device__
Ncv32f
_pixMinVal
<
Ncv32f
>
()
{
return
FLT_MIN
;}
template
<>
inline
__host__
__device__
Ncv64f
_pixMinVal
<
Ncv64f
>
()
{
return
DBL_MIN
;}
template
<
typename
Tvec
>
struct
TConvVec2Base
;
template
<>
struct
TConvVec2Base
<
uchar1
>
{
typedef
Ncv8u
TBase
;};
...
...
@@ -104,33 +104,33 @@ template<> struct TConvBase2Vec<Ncv64f, 3> {typedef double3 TVec;};
template
<>
struct
TConvBase2Vec
<
Ncv64f
,
4
>
{
typedef
double4
TVec
;};
//TODO: consider using CUDA intrinsics to avoid branching
template
<
typename
Tin
>
static
inline
__host__
__device__
void
_TDemoteClampZ
(
Tin
&
a
,
Ncv8u
&
out
)
{
out
=
(
Ncv8u
)
CLAMP_0_255
(
a
);}
template
<
typename
Tin
>
static
inline
__host__
__device__
void
_TDemoteClampZ
(
Tin
&
a
,
Ncv16u
&
out
)
{
out
=
(
Ncv16u
)
CLAMP
(
a
,
0
,
USHRT_MAX
);}
template
<
typename
Tin
>
static
inline
__host__
__device__
void
_TDemoteClampZ
(
Tin
&
a
,
Ncv32u
&
out
)
{
out
=
(
Ncv32u
)
CLAMP
(
a
,
0
,
UINT_MAX
);}
template
<
typename
Tin
>
static
inline
__host__
__device__
void
_TDemoteClampZ
(
Tin
&
a
,
Ncv32f
&
out
)
{
out
=
(
Ncv32f
)
a
;}
template
<
typename
Tin
>
inline
__host__
__device__
void
_TDemoteClampZ
(
Tin
&
a
,
Ncv8u
&
out
)
{
out
=
(
Ncv8u
)
CLAMP_0_255
(
a
);}
template
<
typename
Tin
>
inline
__host__
__device__
void
_TDemoteClampZ
(
Tin
&
a
,
Ncv16u
&
out
)
{
out
=
(
Ncv16u
)
CLAMP
(
a
,
0
,
USHRT_MAX
);}
template
<
typename
Tin
>
inline
__host__
__device__
void
_TDemoteClampZ
(
Tin
&
a
,
Ncv32u
&
out
)
{
out
=
(
Ncv32u
)
CLAMP
(
a
,
0
,
UINT_MAX
);}
template
<
typename
Tin
>
inline
__host__
__device__
void
_TDemoteClampZ
(
Tin
&
a
,
Ncv32f
&
out
)
{
out
=
(
Ncv32f
)
a
;}
//TODO: consider using CUDA intrinsics to avoid branching
template
<
typename
Tin
>
static
inline
__host__
__device__
void
_TDemoteClampNN
(
Tin
&
a
,
Ncv8u
&
out
)
{
out
=
(
Ncv8u
)
CLAMP_0_255
(
a
+
0.5
f
);}
template
<
typename
Tin
>
static
inline
__host__
__device__
void
_TDemoteClampNN
(
Tin
&
a
,
Ncv16u
&
out
)
{
out
=
(
Ncv16u
)
CLAMP
(
a
+
0.5
f
,
0
,
USHRT_MAX
);}
template
<
typename
Tin
>
static
inline
__host__
__device__
void
_TDemoteClampNN
(
Tin
&
a
,
Ncv32u
&
out
)
{
out
=
(
Ncv32u
)
CLAMP
(
a
+
0.5
f
,
0
,
UINT_MAX
);}
template
<
typename
Tin
>
static
inline
__host__
__device__
void
_TDemoteClampNN
(
Tin
&
a
,
Ncv32f
&
out
)
{
out
=
(
Ncv32f
)
a
;}
template
<
typename
Tin
>
inline
__host__
__device__
void
_TDemoteClampNN
(
Tin
&
a
,
Ncv8u
&
out
)
{
out
=
(
Ncv8u
)
CLAMP_0_255
(
a
+
0.5
f
);}
template
<
typename
Tin
>
inline
__host__
__device__
void
_TDemoteClampNN
(
Tin
&
a
,
Ncv16u
&
out
)
{
out
=
(
Ncv16u
)
CLAMP
(
a
+
0.5
f
,
0
,
USHRT_MAX
);}
template
<
typename
Tin
>
inline
__host__
__device__
void
_TDemoteClampNN
(
Tin
&
a
,
Ncv32u
&
out
)
{
out
=
(
Ncv32u
)
CLAMP
(
a
+
0.5
f
,
0
,
UINT_MAX
);}
template
<
typename
Tin
>
inline
__host__
__device__
void
_TDemoteClampNN
(
Tin
&
a
,
Ncv32f
&
out
)
{
out
=
(
Ncv32f
)
a
;}
template
<
typename
Tout
>
inline
Tout
_pixMakeZero
();
template
<>
static
inline
__host__
__device__
uchar1
_pixMakeZero
<
uchar1
>
()
{
return
make_uchar1
(
0
);}
template
<>
static
inline
__host__
__device__
uchar3
_pixMakeZero
<
uchar3
>
()
{
return
make_uchar3
(
0
,
0
,
0
);}
template
<>
static
inline
__host__
__device__
uchar4
_pixMakeZero
<
uchar4
>
()
{
return
make_uchar4
(
0
,
0
,
0
,
0
);}
template
<>
static
inline
__host__
__device__
ushort1
_pixMakeZero
<
ushort1
>
()
{
return
make_ushort1
(
0
);}
template
<>
static
inline
__host__
__device__
ushort3
_pixMakeZero
<
ushort3
>
()
{
return
make_ushort3
(
0
,
0
,
0
);}
template
<>
static
inline
__host__
__device__
ushort4
_pixMakeZero
<
ushort4
>
()
{
return
make_ushort4
(
0
,
0
,
0
,
0
);}
template
<>
static
inline
__host__
__device__
uint1
_pixMakeZero
<
uint1
>
()
{
return
make_uint1
(
0
);}
template
<>
static
inline
__host__
__device__
uint3
_pixMakeZero
<
uint3
>
()
{
return
make_uint3
(
0
,
0
,
0
);}
template
<>
static
inline
__host__
__device__
uint4
_pixMakeZero
<
uint4
>
()
{
return
make_uint4
(
0
,
0
,
0
,
0
);}
template
<>
static
inline
__host__
__device__
float1
_pixMakeZero
<
float1
>
()
{
return
make_float1
(
0.
f
);}
template
<>
static
inline
__host__
__device__
float3
_pixMakeZero
<
float3
>
()
{
return
make_float3
(
0.
f
,
0.
f
,
0.
f
);}
template
<>
static
inline
__host__
__device__
float4
_pixMakeZero
<
float4
>
()
{
return
make_float4
(
0.
f
,
0.
f
,
0.
f
,
0.
f
);}
template
<>
static
inline
__host__
__device__
double1
_pixMakeZero
<
double1
>
()
{
return
make_double1
(
0.
);}
template
<>
static
inline
__host__
__device__
double3
_pixMakeZero
<
double3
>
()
{
return
make_double3
(
0.
,
0.
,
0.
);}
template
<>
static
inline
__host__
__device__
double4
_pixMakeZero
<
double4
>
()
{
return
make_double4
(
0.
,
0.
,
0.
,
0.
);}
template
<>
inline
__host__
__device__
uchar1
_pixMakeZero
<
uchar1
>
()
{
return
make_uchar1
(
0
);}
template
<>
inline
__host__
__device__
uchar3
_pixMakeZero
<
uchar3
>
()
{
return
make_uchar3
(
0
,
0
,
0
);}
template
<>
inline
__host__
__device__
uchar4
_pixMakeZero
<
uchar4
>
()
{
return
make_uchar4
(
0
,
0
,
0
,
0
);}
template
<>
inline
__host__
__device__
ushort1
_pixMakeZero
<
ushort1
>
()
{
return
make_ushort1
(
0
);}
template
<>
inline
__host__
__device__
ushort3
_pixMakeZero
<
ushort3
>
()
{
return
make_ushort3
(
0
,
0
,
0
);}
template
<>
inline
__host__
__device__
ushort4
_pixMakeZero
<
ushort4
>
()
{
return
make_ushort4
(
0
,
0
,
0
,
0
);}
template
<>
inline
__host__
__device__
uint1
_pixMakeZero
<
uint1
>
()
{
return
make_uint1
(
0
);}
template
<>
inline
__host__
__device__
uint3
_pixMakeZero
<
uint3
>
()
{
return
make_uint3
(
0
,
0
,
0
);}
template
<>
inline
__host__
__device__
uint4
_pixMakeZero
<
uint4
>
()
{
return
make_uint4
(
0
,
0
,
0
,
0
);}
template
<>
inline
__host__
__device__
float1
_pixMakeZero
<
float1
>
()
{
return
make_float1
(
0.
f
);}
template
<>
inline
__host__
__device__
float3
_pixMakeZero
<
float3
>
()
{
return
make_float3
(
0.
f
,
0.
f
,
0.
f
);}
template
<>
inline
__host__
__device__
float4
_pixMakeZero
<
float4
>
()
{
return
make_float4
(
0.
f
,
0.
f
,
0.
f
,
0.
f
);}
template
<>
inline
__host__
__device__
double1
_pixMakeZero
<
double1
>
()
{
return
make_double1
(
0.
);}
template
<>
inline
__host__
__device__
double3
_pixMakeZero
<
double3
>
()
{
return
make_double3
(
0.
,
0.
,
0.
);}
template
<>
inline
__host__
__device__
double4
_pixMakeZero
<
double4
>
()
{
return
make_double4
(
0.
,
0.
,
0.
,
0.
);}
static
inline
__host__
__device__
uchar1
_pixMake
(
Ncv8u
x
)
{
return
make_uchar1
(
x
);}
static
inline
__host__
__device__
uchar3
_pixMake
(
Ncv8u
x
,
Ncv8u
y
,
Ncv8u
z
)
{
return
make_uchar3
(
x
,
y
,
z
);}
...
...
@@ -180,7 +180,7 @@ static __host__ __device__ Tout _pixDemoteClampZ_CN(Tin &pix)
return
out
;
}};
template
<
typename
Tin
,
typename
Tout
>
static
inline
__host__
__device__
Tout
_pixDemoteClampZ
(
Tin
&
pix
)
template
<
typename
Tin
,
typename
Tout
>
inline
__host__
__device__
Tout
_pixDemoteClampZ
(
Tin
&
pix
)
{
return
__pixDemoteClampZ_CN
<
Tin
,
Tout
,
NC
(
Tin
)
>::
_pixDemoteClampZ_CN
(
pix
);
}
...
...
@@ -217,7 +217,7 @@ static __host__ __device__ Tout _pixDemoteClampNN_CN(Tin &pix)
return
out
;
}};
template
<
typename
Tin
,
typename
Tout
>
static
inline
__host__
__device__
Tout
_pixDemoteClampNN
(
Tin
&
pix
)
template
<
typename
Tin
,
typename
Tout
>
inline
__host__
__device__
Tout
_pixDemoteClampNN
(
Tin
&
pix
)
{
return
__pixDemoteClampNN_CN
<
Tin
,
Tout
,
NC
(
Tin
)
>::
_pixDemoteClampNN_CN
(
pix
);
}
...
...
modules/cudastereo/src/cuda/stereocsbp.cu
View file @
3e574cd2
...
...
@@ -59,11 +59,11 @@ namespace cv { namespace cuda { namespace device
///////////////////////////////////////////////////////////////
template <int channels> static float __device__ pixeldiff(const uchar* left, const uchar* right, float max_data_term);
template<> __device__ __forceinline__
static
float pixeldiff<1>(const uchar* left, const uchar* right, float max_data_term)
template<> __device__ __forceinline__ float pixeldiff<1>(const uchar* left, const uchar* right, float max_data_term)
{
return fminf( ::abs((int)*left - *right), max_data_term);
}
template<> __device__ __forceinline__
static
float pixeldiff<3>(const uchar* left, const uchar* right, float max_data_term)
template<> __device__ __forceinline__ float pixeldiff<3>(const uchar* left, const uchar* right, float max_data_term)
{
float tb = 0.114f * ::abs((int)left[0] - right[0]);
float tg = 0.587f * ::abs((int)left[1] - right[1]);
...
...
@@ -71,7 +71,7 @@ namespace cv { namespace cuda { namespace device
return fminf(tr + tg + tb, max_data_term);
}
template<> __device__ __forceinline__
static
float pixeldiff<4>(const uchar* left, const uchar* right, float max_data_term)
template<> __device__ __forceinline__ float pixeldiff<4>(const uchar* left, const uchar* right, float max_data_term)
{
uchar4 l = *((const uchar4*)left);
uchar4 r = *((const uchar4*)right);
...
...
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