mirror of
https://github.com/opencv/opencv.git
synced 2025-06-11 03:33:28 +08:00
reduce bilateral filter instantiates for tiny build
This commit is contained in:
parent
8e49ab1d3b
commit
b7a9e672c5
@ -149,6 +149,16 @@ namespace cv { namespace gpu { namespace device
|
|||||||
{
|
{
|
||||||
typedef void (*caller_t)(const PtrStepSzb& src, PtrStepSzb dst, int kernel_size, float sigma_spatial, float sigma_color, cudaStream_t stream);
|
typedef void (*caller_t)(const PtrStepSzb& src, PtrStepSzb dst, int kernel_size, float sigma_spatial, float sigma_color, cudaStream_t stream);
|
||||||
|
|
||||||
|
#ifdef OPENCV_TINY_GPU_MODULE
|
||||||
|
static caller_t funcs[] =
|
||||||
|
{
|
||||||
|
bilateral_caller<T, BrdReflect101>,
|
||||||
|
bilateral_caller<T, BrdReplicate>,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
};
|
||||||
|
#else
|
||||||
static caller_t funcs[] =
|
static caller_t funcs[] =
|
||||||
{
|
{
|
||||||
bilateral_caller<T, BrdReflect101>,
|
bilateral_caller<T, BrdReflect101>,
|
||||||
@ -157,7 +167,13 @@ namespace cv { namespace gpu { namespace device
|
|||||||
bilateral_caller<T, BrdReflect>,
|
bilateral_caller<T, BrdReflect>,
|
||||||
bilateral_caller<T, BrdWrap>,
|
bilateral_caller<T, BrdWrap>,
|
||||||
};
|
};
|
||||||
funcs[borderMode](src, dst, kernel_size, gauss_spatial_coeff, gauss_color_coeff, stream);
|
#endif
|
||||||
|
|
||||||
|
const caller_t caller = funcs[borderMode];
|
||||||
|
if (!caller)
|
||||||
|
cv::gpu::error("Unsupported input parameters for bilateral_filter", __FILE__, __LINE__, "");
|
||||||
|
|
||||||
|
caller(src, dst, kernel_size, gauss_spatial_coeff, gauss_color_coeff, stream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}}}
|
}}}
|
||||||
@ -171,6 +187,7 @@ OCV_INSTANTIATE_BILATERAL_FILTER(uchar)
|
|||||||
OCV_INSTANTIATE_BILATERAL_FILTER(uchar3)
|
OCV_INSTANTIATE_BILATERAL_FILTER(uchar3)
|
||||||
OCV_INSTANTIATE_BILATERAL_FILTER(uchar4)
|
OCV_INSTANTIATE_BILATERAL_FILTER(uchar4)
|
||||||
|
|
||||||
|
#ifndef OPENCV_TINY_GPU_MODULE
|
||||||
//OCV_INSTANTIATE_BILATERAL_FILTER(schar)
|
//OCV_INSTANTIATE_BILATERAL_FILTER(schar)
|
||||||
//OCV_INSTANTIATE_BILATERAL_FILTER(schar2)
|
//OCV_INSTANTIATE_BILATERAL_FILTER(schar2)
|
||||||
//OCV_INSTANTIATE_BILATERAL_FILTER(schar3)
|
//OCV_INSTANTIATE_BILATERAL_FILTER(schar3)
|
||||||
@ -190,6 +207,7 @@ OCV_INSTANTIATE_BILATERAL_FILTER(ushort4)
|
|||||||
//OCV_INSTANTIATE_BILATERAL_FILTER(int2)
|
//OCV_INSTANTIATE_BILATERAL_FILTER(int2)
|
||||||
//OCV_INSTANTIATE_BILATERAL_FILTER(int3)
|
//OCV_INSTANTIATE_BILATERAL_FILTER(int3)
|
||||||
//OCV_INSTANTIATE_BILATERAL_FILTER(int4)
|
//OCV_INSTANTIATE_BILATERAL_FILTER(int4)
|
||||||
|
#endif
|
||||||
|
|
||||||
OCV_INSTANTIATE_BILATERAL_FILTER(float)
|
OCV_INSTANTIATE_BILATERAL_FILTER(float)
|
||||||
//OCV_INSTANTIATE_BILATERAL_FILTER(float2)
|
//OCV_INSTANTIATE_BILATERAL_FILTER(float2)
|
||||||
|
@ -77,6 +77,17 @@ void cv::gpu::bilateralFilter(const GpuMat& src, GpuMat& dst, int kernel_size, f
|
|||||||
|
|
||||||
typedef void (*func_t)(const PtrStepSzb& src, PtrStepSzb dst, int kernel_size, float sigma_spatial, float sigma_color, int borderMode, cudaStream_t s);
|
typedef void (*func_t)(const PtrStepSzb& src, PtrStepSzb dst, int kernel_size, float sigma_spatial, float sigma_color, int borderMode, cudaStream_t s);
|
||||||
|
|
||||||
|
#ifdef OPENCV_TINY_GPU_MODULE
|
||||||
|
static const func_t funcs[6][4] =
|
||||||
|
{
|
||||||
|
{bilateral_filter_gpu<uchar> , 0 /*bilateral_filter_gpu<uchar2>*/ , bilateral_filter_gpu<uchar3> , bilateral_filter_gpu<uchar4> },
|
||||||
|
{0 /*bilateral_filter_gpu<schar>*/ , 0 /*bilateral_filter_gpu<schar2>*/ , 0 /*bilateral_filter_gpu<schar3>*/ , 0 /*bilateral_filter_gpu<schar4>*/ },
|
||||||
|
{0 /*bilateral_filter_gpu<ushort>*/, 0 /*bilateral_filter_gpu<ushort2>*/, 0 /*bilateral_filter_gpu<ushort3>*/, 0 /*bilateral_filter_gpu<ushort4>*/},
|
||||||
|
{0 /*bilateral_filter_gpu<short>*/ , 0 /*bilateral_filter_gpu<short2>*/ , 0 /*bilateral_filter_gpu<short3>*/ , 0 /*bilateral_filter_gpu<short4>*/ },
|
||||||
|
{0 /*bilateral_filter_gpu<int>*/ , 0 /*bilateral_filter_gpu<int2>*/ , 0 /*bilateral_filter_gpu<int3>*/ , 0 /*bilateral_filter_gpu<int4>*/ },
|
||||||
|
{bilateral_filter_gpu<float> , 0 /*bilateral_filter_gpu<float2>*/ , bilateral_filter_gpu<float3> , bilateral_filter_gpu<float4> }
|
||||||
|
};
|
||||||
|
#else
|
||||||
static const func_t funcs[6][4] =
|
static const func_t funcs[6][4] =
|
||||||
{
|
{
|
||||||
{bilateral_filter_gpu<uchar> , 0 /*bilateral_filter_gpu<uchar2>*/ , bilateral_filter_gpu<uchar3> , bilateral_filter_gpu<uchar4> },
|
{bilateral_filter_gpu<uchar> , 0 /*bilateral_filter_gpu<uchar2>*/ , bilateral_filter_gpu<uchar3> , bilateral_filter_gpu<uchar4> },
|
||||||
@ -86,6 +97,7 @@ void cv::gpu::bilateralFilter(const GpuMat& src, GpuMat& dst, int kernel_size, f
|
|||||||
{0 /*bilateral_filter_gpu<int>*/ , 0 /*bilateral_filter_gpu<int2>*/ , 0 /*bilateral_filter_gpu<int3>*/ , 0 /*bilateral_filter_gpu<int4>*/ },
|
{0 /*bilateral_filter_gpu<int>*/ , 0 /*bilateral_filter_gpu<int2>*/ , 0 /*bilateral_filter_gpu<int3>*/ , 0 /*bilateral_filter_gpu<int4>*/ },
|
||||||
{bilateral_filter_gpu<float> , 0 /*bilateral_filter_gpu<float2>*/ , bilateral_filter_gpu<float3> , bilateral_filter_gpu<float4> }
|
{bilateral_filter_gpu<float> , 0 /*bilateral_filter_gpu<float2>*/ , bilateral_filter_gpu<float3> , bilateral_filter_gpu<float4> }
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
sigma_color = (sigma_color <= 0 ) ? 1 : sigma_color;
|
sigma_color = (sigma_color <= 0 ) ? 1 : sigma_color;
|
||||||
sigma_spatial = (sigma_spatial <= 0 ) ? 1 : sigma_spatial;
|
sigma_spatial = (sigma_spatial <= 0 ) ? 1 : sigma_spatial;
|
||||||
|
Loading…
Reference in New Issue
Block a user