NCVPixelOperations.hpp
/*
* Software License Agreement (BSD License)
*
* Point Cloud Library (PCL) - www.pointclouds.org
* Copyright (C) 2009-2010, NVIDIA Corporation, all rights reserved.
* Third party copyrights are property of their respective owners.
*
* All rights reserved.
*
* 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 name of Willow Garage, Inc. nor the names of its
* 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 THE
* COPYRIGHT OWNER 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.
*
* $Id: $
* Ported to PCL by Koen Buys : Attention Work in progress!
*/
#ifndef _ncv_pixel_operations_hpp_
#define _ncv_pixel_operations_hpp_
#include <limits.h>
#include <float.h>
#include "NCV.hpp"
template<typename TBase> inline __host__ __device__ TBase _pixMaxVal();
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<> 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> {using TBase = Ncv8u;};
template<> struct TConvVec2Base<uchar3> {using TBase = Ncv8u;};
template<> struct TConvVec2Base<uchar4> {using TBase = Ncv8u;};
template<> struct TConvVec2Base<ushort1> {using TBase = Ncv16u;};
template<> struct TConvVec2Base<ushort3> {using TBase = Ncv16u;};
template<> struct TConvVec2Base<ushort4> {using TBase = Ncv16u;};
template<> struct TConvVec2Base<uint1> {using TBase = Ncv32u;};
template<> struct TConvVec2Base<uint3> {using TBase = Ncv32u;};
template<> struct TConvVec2Base<uint4> {using TBase = Ncv32u;};
template<> struct TConvVec2Base<float1> {using TBase = Ncv32f;};
template<> struct TConvVec2Base<float3> {using TBase = Ncv32f;};
template<> struct TConvVec2Base<float4> {using TBase = Ncv32f;};
template<> struct TConvVec2Base<double1> {using TBase = Ncv64f;};
template<> struct TConvVec2Base<double3> {using TBase = Ncv64f;};
template<> struct TConvVec2Base<double4> {using TBase = Ncv64f;};
#define NC(T) (sizeof(T) / sizeof(TConvVec2Base<T>::TBase))
template<typename TBase, Ncv32u NC> struct TConvBase2Vec;
template<> struct TConvBase2Vec<Ncv8u, 1> {using TVec = uchar1;};
template<> struct TConvBase2Vec<Ncv8u, 3> {using TVec = uchar3;};
template<> struct TConvBase2Vec<Ncv8u, 4> {using TVec = uchar4;};
template<> struct TConvBase2Vec<Ncv16u, 1> {using TVec = ushort1;};
template<> struct TConvBase2Vec<Ncv16u, 3> {using TVec = ushort3;};
template<> struct TConvBase2Vec<Ncv16u, 4> {using TVec = ushort4;};
template<> struct TConvBase2Vec<Ncv32u, 1> {using TVec = uint1;};
template<> struct TConvBase2Vec<Ncv32u, 3> {using TVec = uint3;};
template<> struct TConvBase2Vec<Ncv32u, 4> {using TVec = uint4;};
template<> struct TConvBase2Vec<Ncv32f, 1> {using TVec = float1;};
template<> struct TConvBase2Vec<Ncv32f, 3> {using TVec = float3;};
template<> struct TConvBase2Vec<Ncv32f, 4> {using TVec = float4;};
template<> struct TConvBase2Vec<Ncv64f, 1> {using TVec = double1;};
template<> struct TConvBase2Vec<Ncv64f, 3> {using TVec = double3;};
template<> struct TConvBase2Vec<Ncv64f, 4> {using TVec = double4;};
//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;}
//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.5f);}
template<typename Tin> static inline __host__ __device__ void _TDemoteClampNN(Tin &a, Ncv16u &out) {out = (Ncv16u)CLAMP(a+0.5f, 0, USHRT_MAX);}
template<typename Tin> static inline __host__ __device__ void _TDemoteClampNN(Tin &a, Ncv32u &out) {out = (Ncv32u)CLAMP(a+0.5f, 0, UINT_MAX);}
template<typename Tin> static inline __host__ __device__ void _TDemoteClampNN(Tin &a, Ncv32f &out) {out = (Ncv32f)a;}
template<typename Tout> inline Tout _pixMakeZero();
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);}
static inline __host__ __device__ uchar4 _pixMake(Ncv8u x, Ncv8u y, Ncv8u z, Ncv8u w) {return make_uchar4(x,y,z,w);}
static inline __host__ __device__ ushort1 _pixMake(Ncv16u x) {return make_ushort1(x);}
static inline __host__ __device__ ushort3 _pixMake(Ncv16u x, Ncv16u y, Ncv16u z) {return make_ushort3(x,y,z);}
static inline __host__ __device__ ushort4 _pixMake(Ncv16u x, Ncv16u y, Ncv16u z, Ncv16u w) {return make_ushort4(x,y,z,w);}
static inline __host__ __device__ uint1 _pixMake(Ncv32u x) {return make_uint1(x);}
static inline __host__ __device__ uint3 _pixMake(Ncv32u x, Ncv32u y, Ncv32u z) {return make_uint3(x,y,z);}
static inline __host__ __device__ uint4 _pixMake(Ncv32u x, Ncv32u y, Ncv32u z, Ncv32u w) {return make_uint4(x,y,z,w);}
static inline __host__ __device__ float1 _pixMake(Ncv32f x) {return make_float1(x);}
static inline __host__ __device__ float3 _pixMake(Ncv32f x, Ncv32f y, Ncv32f z) {return make_float3(x,y,z);}
static inline __host__ __device__ float4 _pixMake(Ncv32f x, Ncv32f y, Ncv32f z, Ncv32f w) {return make_float4(x,y,z,w);}
static inline __host__ __device__ double1 _pixMake(Ncv64f x) {return make_double1(x);}
static inline __host__ __device__ double3 _pixMake(Ncv64f x, Ncv64f y, Ncv64f z) {return make_double3(x,y,z);}
static inline __host__ __device__ double4 _pixMake(Ncv64f x, Ncv64f y, Ncv64f z, Ncv64f w) {return make_double4(x,y,z,w);}
template<typename Tin, typename Tout, Ncv32u CN> struct __pixDemoteClampZ_CN {static __host__ __device__ Tout _pixDemoteClampZ_CN(Tin &pix);};
template<typename Tin, typename Tout> struct __pixDemoteClampZ_CN<Tin, Tout, 1> {
static __host__ __device__ Tout _pixDemoteClampZ_CN(Tin &pix)
{
Tout out;
_TDemoteClampZ(pix.x, out.x);
return out;
}};
template<typename Tin, typename Tout> struct __pixDemoteClampZ_CN<Tin, Tout, 3> {
static __host__ __device__ Tout _pixDemoteClampZ_CN(Tin &pix)
{
Tout out;
_TDemoteClampZ(pix.x, out.x);
_TDemoteClampZ(pix.y, out.y);
_TDemoteClampZ(pix.z, out.z);
return out;
}};
template<typename Tin, typename Tout> struct __pixDemoteClampZ_CN<Tin, Tout, 4> {
static __host__ __device__ Tout _pixDemoteClampZ_CN(Tin &pix)
{
Tout out;
_TDemoteClampZ(pix.x, out.x);
_TDemoteClampZ(pix.y, out.y);
_TDemoteClampZ(pix.z, out.z);
_TDemoteClampZ(pix.w, out.w);
return out;
}};
template<typename Tin, typename Tout> static inline __host__ __device__ Tout _pixDemoteClampZ(Tin &pix)
{
return __pixDemoteClampZ_CN<Tin, Tout, NC(Tin)>::_pixDemoteClampZ_CN(pix);
}
template<typename Tin, typename Tout, Ncv32u CN> struct __pixDemoteClampNN_CN {static __host__ __device__ Tout _pixDemoteClampNN_CN(Tin &pix);};
template<typename Tin, typename Tout> struct __pixDemoteClampNN_CN<Tin, Tout, 1> {
static __host__ __device__ Tout _pixDemoteClampNN_CN(Tin &pix)
{
Tout out;
_TDemoteClampNN(pix.x, out.x);
return out;
}};
template<typename Tin, typename Tout> struct __pixDemoteClampNN_CN<Tin, Tout, 3> {
static __host__ __device__ Tout _pixDemoteClampNN_CN(Tin &pix)
{
Tout out;
_TDemoteClampNN(pix.x, out.x);
_TDemoteClampNN(pix.y, out.y);
_TDemoteClampNN(pix.z, out.z);
return out;
}};
template<typename Tin, typename Tout> struct __pixDemoteClampNN_CN<Tin, Tout, 4> {
static __host__ __device__ Tout _pixDemoteClampNN_CN(Tin &pix)
{
Tout out;
_TDemoteClampNN(pix.x, out.x);
_TDemoteClampNN(pix.y, out.y);
_TDemoteClampNN(pix.z, out.z);
_TDemoteClampNN(pix.w, out.w);
return out;
}};
template<typename Tin, typename Tout> static inline __host__ __device__ Tout _pixDemoteClampNN(Tin &pix)
{
return __pixDemoteClampNN_CN<Tin, Tout, NC(Tin)>::_pixDemoteClampNN_CN(pix);
}
template<typename Tin, typename Tout, typename Tw, Ncv32u CN> struct __pixScale_CN {static __host__ __device__ Tout _pixScale_CN(Tin &pix, Tw w);};
template<typename Tin, typename Tout, typename Tw> struct __pixScale_CN<Tin, Tout, Tw, 1> {
static __host__ __device__ Tout _pixScale_CN(Tin &pix, Tw w)
{
Tout out;
using TBout = typename TConvVec2Base<Tout>::TBase;
out.x = (TBout)(pix.x * w);
return out;
}};
template<typename Tin, typename Tout, typename Tw> struct __pixScale_CN<Tin, Tout, Tw, 3> {
static __host__ __device__ Tout _pixScale_CN(Tin &pix, Tw w)
{
Tout out;
using TBout = typename TConvVec2Base<Tout>::TBase;
out.x = (TBout)(pix.x * w);
out.y = (TBout)(pix.y * w);
out.z = (TBout)(pix.z * w);
return out;
}};
template<typename Tin, typename Tout, typename Tw> struct __pixScale_CN<Tin, Tout, Tw, 4> {
static __host__ __device__ Tout _pixScale_CN(Tin &pix, Tw w)
{
Tout out;
using TBout = typename TConvVec2Base<Tout>::TBase;
out.x = (TBout)(pix.x * w);
out.y = (TBout)(pix.y * w);
out.z = (TBout)(pix.z * w);
out.w = (TBout)(pix.w * w);
return out;
}};
template<typename Tin, typename Tout, typename Tw> static __host__ __device__ Tout _pixScale(Tin &pix, Tw w)
{
return __pixScale_CN<Tin, Tout, Tw, NC(Tin)>::_pixScale_CN(pix, w);
}
template<typename Tin, typename Tout, Ncv32u CN> struct __pixAdd_CN {static __host__ __device__ Tout _pixAdd_CN(Tout &pix1, Tin &pix2);};
template<typename Tin, typename Tout> struct __pixAdd_CN<Tin, Tout, 1> {
static __host__ __device__ Tout _pixAdd_CN(Tout &pix1, Tin &pix2)
{
Tout out;
out.x = pix1.x + pix2.x;
return out;
}};
template<typename Tin, typename Tout> struct __pixAdd_CN<Tin, Tout, 3> {
static __host__ __device__ Tout _pixAdd_CN(Tout &pix1, Tin &pix2)
{
Tout out;
out.x = pix1.x + pix2.x;
out.y = pix1.y + pix2.y;
out.z = pix1.z + pix2.z;
return out;
}};
template<typename Tin, typename Tout> struct __pixAdd_CN<Tin, Tout, 4> {
static __host__ __device__ Tout _pixAdd_CN(Tout &pix1, Tin &pix2)
{
Tout out;
out.x = pix1.x + pix2.x;
out.y = pix1.y + pix2.y;
out.z = pix1.z + pix2.z;
out.w = pix1.w + pix2.w;
return out;
}};
template<typename Tin, typename Tout> static __host__ __device__ Tout _pixAdd(Tout &pix1, Tin &pix2)
{
return __pixAdd_CN<Tin, Tout, NC(Tin)>::_pixAdd_CN(pix1, pix2);
}
template<typename Tin, typename Tout, Ncv32u CN> struct __pixDist_CN {static __host__ __device__ Tout _pixDist_CN(Tin &pix1, Tin &pix2);};
template<typename Tin, typename Tout> struct __pixDist_CN<Tin, Tout, 1> {
static __host__ __device__ Tout _pixDist_CN(Tin &pix1, Tin &pix2)
{
return Tout(SQR(pix1.x - pix2.x));
}};
template<typename Tin, typename Tout> struct __pixDist_CN<Tin, Tout, 3> {
static __host__ __device__ Tout _pixDist_CN(Tin &pix1, Tin &pix2)
{
return Tout(SQR(pix1.x - pix2.x) + SQR(pix1.y - pix2.y) + SQR(pix1.z - pix2.z));
}};
template<typename Tin, typename Tout> struct __pixDist_CN<Tin, Tout, 4> {
static __host__ __device__ Tout _pixDist_CN(Tin &pix1, Tin &pix2)
{
return Tout(SQR(pix1.x - pix2.x) + SQR(pix1.y - pix2.y) + SQR(pix1.z - pix2.z) + SQR(pix1.w - pix2.w));
}};
template<typename Tin, typename Tout> static __host__ __device__ Tout _pixDist(Tin &pix1, Tin &pix2)
{
return __pixDist_CN<Tin, Tout, NC(Tin)>::_pixDist_CN(pix1, pix2);
}
template <typename T> struct TAccPixWeighted;
template<> struct TAccPixWeighted<uchar1> {using type = double1;};
template<> struct TAccPixWeighted<uchar3> {using type = double3;};
template<> struct TAccPixWeighted<uchar4> {using type = double4;};
template<> struct TAccPixWeighted<ushort1> {using type = double1;};
template<> struct TAccPixWeighted<ushort3> {using type = double3;};
template<> struct TAccPixWeighted<ushort4> {using type = double4;};
template<> struct TAccPixWeighted<float1> {using type = double1;};
template<> struct TAccPixWeighted<float3> {using type = double3;};
template<> struct TAccPixWeighted<float4> {using type = double4;};
template<typename Tfrom> struct TAccPixDist {};
template<> struct TAccPixDist<uchar1> {using type = Ncv32u;};
template<> struct TAccPixDist<uchar3> {using type = Ncv32u;};
template<> struct TAccPixDist<uchar4> {using type = Ncv32u;};
template<> struct TAccPixDist<ushort1> {using type = Ncv32u;};
template<> struct TAccPixDist<ushort3> {using type = Ncv32u;};
template<> struct TAccPixDist<ushort4> {using type = Ncv32u;};
template<> struct TAccPixDist<float1> {using type = Ncv32f;};
template<> struct TAccPixDist<float3> {using type = Ncv32f;};
template<> struct TAccPixDist<float4> {using type = Ncv32f;};
#endif //_ncv_pixel_operations_hpp_
__pixAdd_CN< Tin, Tout, 1 >::_pixAdd_CN
static __host__ __device__ Tout _pixAdd_CN(Tout &pix1, Tin &pix2)
Definition: NCVPixelOperations.hpp:267
__pixAdd_CN< Tin, Tout, 3 >::_pixAdd_CN
static __host__ __device__ Tout _pixAdd_CN(Tout &pix1, Tin &pix2)
Definition: NCVPixelOperations.hpp:275
__pixAdd_CN< Tin, Tout, 4 >::_pixAdd_CN
static __host__ __device__ Tout _pixAdd_CN(Tout &pix1, Tin &pix2)
Definition: NCVPixelOperations.hpp:285
__pixAdd_CN
Definition: NCVPixelOperations.hpp:264
__pixAdd_CN::_pixAdd_CN
static __host__ __device__ Tout _pixAdd_CN(Tout &pix1, Tin &pix2)
__pixDemoteClampNN_CN< Tin, Tout, 1 >::_pixDemoteClampNN_CN
static __host__ __device__ Tout _pixDemoteClampNN_CN(Tin &pix)
Definition: NCVPixelOperations.hpp:190
__pixDemoteClampNN_CN< Tin, Tout, 3 >::_pixDemoteClampNN_CN
static __host__ __device__ Tout _pixDemoteClampNN_CN(Tin &pix)
Definition: NCVPixelOperations.hpp:198
__pixDemoteClampNN_CN< Tin, Tout, 4 >::_pixDemoteClampNN_CN
static __host__ __device__ Tout _pixDemoteClampNN_CN(Tin &pix)
Definition: NCVPixelOperations.hpp:208
__pixDemoteClampNN_CN
Definition: NCVPixelOperations.hpp:187
__pixDemoteClampNN_CN::_pixDemoteClampNN_CN
static __host__ __device__ Tout _pixDemoteClampNN_CN(Tin &pix)
__pixDemoteClampZ_CN< Tin, Tout, 1 >::_pixDemoteClampZ_CN
static __host__ __device__ Tout _pixDemoteClampZ_CN(Tin &pix)
Definition: NCVPixelOperations.hpp:153
__pixDemoteClampZ_CN< Tin, Tout, 3 >::_pixDemoteClampZ_CN
static __host__ __device__ Tout _pixDemoteClampZ_CN(Tin &pix)
Definition: NCVPixelOperations.hpp:161
__pixDemoteClampZ_CN< Tin, Tout, 4 >::_pixDemoteClampZ_CN
static __host__ __device__ Tout _pixDemoteClampZ_CN(Tin &pix)
Definition: NCVPixelOperations.hpp:171
__pixDemoteClampZ_CN
Definition: NCVPixelOperations.hpp:150
__pixDemoteClampZ_CN::_pixDemoteClampZ_CN
static __host__ __device__ Tout _pixDemoteClampZ_CN(Tin &pix)
__pixDist_CN< Tin, Tout, 1 >::_pixDist_CN
static __host__ __device__ Tout _pixDist_CN(Tin &pix1, Tin &pix2)
Definition: NCVPixelOperations.hpp:304
__pixDist_CN< Tin, Tout, 3 >::_pixDist_CN
static __host__ __device__ Tout _pixDist_CN(Tin &pix1, Tin &pix2)
Definition: NCVPixelOperations.hpp:310
__pixDist_CN< Tin, Tout, 4 >::_pixDist_CN
static __host__ __device__ Tout _pixDist_CN(Tin &pix1, Tin &pix2)
Definition: NCVPixelOperations.hpp:316
__pixDist_CN
Definition: NCVPixelOperations.hpp:301
__pixDist_CN::_pixDist_CN
static __host__ __device__ Tout _pixDist_CN(Tin &pix1, Tin &pix2)
__pixScale_CN< Tin, Tout, Tw, 1 >::_pixScale_CN
static __host__ __device__ Tout _pixScale_CN(Tin &pix, Tw w)
Definition: NCVPixelOperations.hpp:227
__pixScale_CN< Tin, Tout, Tw, 3 >::_pixScale_CN
static __host__ __device__ Tout _pixScale_CN(Tin &pix, Tw w)
Definition: NCVPixelOperations.hpp:236
__pixScale_CN< Tin, Tout, Tw, 4 >::_pixScale_CN
static __host__ __device__ Tout _pixScale_CN(Tin &pix, Tw w)
Definition: NCVPixelOperations.hpp:247
__pixScale_CN
Definition: NCVPixelOperations.hpp:224
__pixScale_CN::_pixScale_CN
static __host__ __device__ Tout _pixScale_CN(Tin &pix, Tw w)
TAccPixDist< float1 >::type
Ncv32f type
Definition: NCVPixelOperations.hpp:345
TAccPixDist< float3 >::type
Ncv32f type
Definition: NCVPixelOperations.hpp:346
TAccPixDist< float4 >::type
Ncv32f type
Definition: NCVPixelOperations.hpp:347
TAccPixDist< uchar1 >::type
Ncv32u type
Definition: NCVPixelOperations.hpp:339
TAccPixDist< uchar3 >::type
Ncv32u type
Definition: NCVPixelOperations.hpp:340
TAccPixDist< uchar4 >::type
Ncv32u type
Definition: NCVPixelOperations.hpp:341
TAccPixDist< ushort1 >::type
Ncv32u type
Definition: NCVPixelOperations.hpp:342
TAccPixDist< ushort3 >::type
Ncv32u type
Definition: NCVPixelOperations.hpp:343
TAccPixDist< ushort4 >::type
Ncv32u type
Definition: NCVPixelOperations.hpp:344
TAccPixDist
Definition: NCVPixelOperations.hpp:338
TAccPixWeighted< float1 >::type
double1 type
Definition: NCVPixelOperations.hpp:334
TAccPixWeighted< float3 >::type
double3 type
Definition: NCVPixelOperations.hpp:335
TAccPixWeighted< float4 >::type
double4 type
Definition: NCVPixelOperations.hpp:336
TAccPixWeighted< uchar1 >::type
double1 type
Definition: NCVPixelOperations.hpp:328
TAccPixWeighted< uchar3 >::type
double3 type
Definition: NCVPixelOperations.hpp:329
TAccPixWeighted< uchar4 >::type
double4 type
Definition: NCVPixelOperations.hpp:330
TAccPixWeighted< ushort1 >::type
double1 type
Definition: NCVPixelOperations.hpp:331
TAccPixWeighted< ushort3 >::type
double3 type
Definition: NCVPixelOperations.hpp:332
TAccPixWeighted< ushort4 >::type
double4 type
Definition: NCVPixelOperations.hpp:333
TAccPixWeighted
Definition: NCVPixelOperations.hpp:327
TConvBase2Vec< Ncv16u, 1 >::TVec
ushort1 TVec
Definition: NCVPixelOperations.hpp:91
TConvBase2Vec< Ncv16u, 3 >::TVec
ushort3 TVec
Definition: NCVPixelOperations.hpp:92
TConvBase2Vec< Ncv16u, 4 >::TVec
ushort4 TVec
Definition: NCVPixelOperations.hpp:93
TConvBase2Vec< Ncv32f, 1 >::TVec
float1 TVec
Definition: NCVPixelOperations.hpp:97
TConvBase2Vec< Ncv32f, 3 >::TVec
float3 TVec
Definition: NCVPixelOperations.hpp:98
TConvBase2Vec< Ncv32f, 4 >::TVec
float4 TVec
Definition: NCVPixelOperations.hpp:99
TConvBase2Vec< Ncv32u, 1 >::TVec
uint1 TVec
Definition: NCVPixelOperations.hpp:94
TConvBase2Vec< Ncv32u, 3 >::TVec
uint3 TVec
Definition: NCVPixelOperations.hpp:95
TConvBase2Vec< Ncv32u, 4 >::TVec
uint4 TVec
Definition: NCVPixelOperations.hpp:96
TConvBase2Vec< Ncv64f, 1 >::TVec
double1 TVec
Definition: NCVPixelOperations.hpp:100
TConvBase2Vec< Ncv64f, 3 >::TVec
double3 TVec
Definition: NCVPixelOperations.hpp:101
TConvBase2Vec< Ncv64f, 4 >::TVec
double4 TVec
Definition: NCVPixelOperations.hpp:102
TConvBase2Vec< Ncv8u, 1 >::TVec
uchar1 TVec
Definition: NCVPixelOperations.hpp:88
TConvBase2Vec< Ncv8u, 3 >::TVec
uchar3 TVec
Definition: NCVPixelOperations.hpp:89
TConvBase2Vec< Ncv8u, 4 >::TVec
uchar4 TVec
Definition: NCVPixelOperations.hpp:90
TConvBase2Vec
Definition: NCVPixelOperations.hpp:87
TConvVec2Base< double1 >::TBase
Ncv64f TBase
Definition: NCVPixelOperations.hpp:81
TConvVec2Base< double3 >::TBase
Ncv64f TBase
Definition: NCVPixelOperations.hpp:82
TConvVec2Base< double4 >::TBase
Ncv64f TBase
Definition: NCVPixelOperations.hpp:83
TConvVec2Base< float1 >::TBase
Ncv32f TBase
Definition: NCVPixelOperations.hpp:78
TConvVec2Base< float3 >::TBase
Ncv32f TBase
Definition: NCVPixelOperations.hpp:79
TConvVec2Base< float4 >::TBase
Ncv32f TBase
Definition: NCVPixelOperations.hpp:80
TConvVec2Base< uchar1 >::TBase
Ncv8u TBase
Definition: NCVPixelOperations.hpp:69
TConvVec2Base< uchar3 >::TBase
Ncv8u TBase
Definition: NCVPixelOperations.hpp:70
TConvVec2Base< uchar4 >::TBase
Ncv8u TBase
Definition: NCVPixelOperations.hpp:71
TConvVec2Base< uint1 >::TBase
Ncv32u TBase
Definition: NCVPixelOperations.hpp:75
TConvVec2Base< uint3 >::TBase
Ncv32u TBase
Definition: NCVPixelOperations.hpp:76
TConvVec2Base< uint4 >::TBase
Ncv32u TBase
Definition: NCVPixelOperations.hpp:77
TConvVec2Base< ushort1 >::TBase
Ncv16u TBase
Definition: NCVPixelOperations.hpp:72
TConvVec2Base< ushort3 >::TBase
Ncv16u TBase
Definition: NCVPixelOperations.hpp:73
TConvVec2Base< ushort4 >::TBase
Ncv16u TBase
Definition: NCVPixelOperations.hpp:74
TConvVec2Base
Definition: NCVPixelOperations.hpp:68