Merge pull request #3081 from akarsakov:small_fixes
This commit is contained in:
commit
01bd4961e3
@ -75,7 +75,7 @@ OCL_PERF_TEST_P(DftFixture, Dft, ::testing::Combine(Values(C2C, R2R, C2R, R2C),
|
|||||||
const Size srcSize = get<1>(params);
|
const Size srcSize = get<1>(params);
|
||||||
int flags = get<2>(params);
|
int flags = get<2>(params);
|
||||||
|
|
||||||
int in_cn, out_cn;
|
int in_cn = 0, out_cn = 0;
|
||||||
switch (dft_type)
|
switch (dft_type)
|
||||||
{
|
{
|
||||||
case R2R: flags |= cv::DFT_REAL_OUTPUT; in_cn = 1; out_cn = 1; break;
|
case R2R: flags |= cv::DFT_REAL_OUTPUT; in_cn = 1; out_cn = 1; break;
|
||||||
|
@ -781,8 +781,9 @@ void cv::gemm( InputArray matA, InputArray matB, double alpha,
|
|||||||
InputArray matC, double beta, OutputArray _matD, int flags )
|
InputArray matC, double beta, OutputArray _matD, int flags )
|
||||||
{
|
{
|
||||||
#ifdef HAVE_CLAMDBLAS
|
#ifdef HAVE_CLAMDBLAS
|
||||||
CV_OCL_RUN(ocl::haveAmdBlas() && matA.dims() <= 2 && matB.dims() <= 2 && matC.dims() <= 2 && _matD.isUMat(),
|
CV_OCL_RUN(ocl::haveAmdBlas() && matA.dims() <= 2 && matB.dims() <= 2 && matC.dims() <= 2 && _matD.isUMat() &&
|
||||||
ocl_gemm(matA, matB, alpha, matC, beta, _matD, flags))
|
matA.cols() > 20 && matA.rows() > 20 && matB.cols() > 20, // since it works incorrect for small sizes
|
||||||
|
ocl_gemm(matA, matB, alpha, matC, beta, _matD, flags))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const int block_lin_size = 128;
|
const int block_lin_size = 128;
|
||||||
|
@ -90,14 +90,15 @@ PARAM_TEST_CASE(Gemm,
|
|||||||
|
|
||||||
void generateTestData()
|
void generateTestData()
|
||||||
{
|
{
|
||||||
Size ARoiSize = randomSize(1, MAX_VALUE);
|
// set minimum size to 20, since testing less sizes doesn't make sense
|
||||||
|
Size ARoiSize = randomSize(20, MAX_VALUE);
|
||||||
Border ABorder = randomBorder(0, use_roi ? MAX_VALUE : 0);
|
Border ABorder = randomBorder(0, use_roi ? MAX_VALUE : 0);
|
||||||
randomSubMat(A, A_roi, ARoiSize, ABorder, type, -11, 11);
|
randomSubMat(A, A_roi, ARoiSize, ABorder, type, -11, 11);
|
||||||
|
|
||||||
if (atrans)
|
if (atrans)
|
||||||
ARoiSize = Size(ARoiSize.height, ARoiSize.width);
|
ARoiSize = Size(ARoiSize.height, ARoiSize.width);
|
||||||
|
|
||||||
Size BRoiSize = randomSize(1, MAX_VALUE);
|
Size BRoiSize = randomSize(20, MAX_VALUE);
|
||||||
if (btrans)
|
if (btrans)
|
||||||
BRoiSize.width = ARoiSize.width;
|
BRoiSize.width = ARoiSize.width;
|
||||||
else
|
else
|
||||||
|
@ -164,7 +164,7 @@ void Core_EigenTest_32::run(int) { check_full(CV_32FC1); }
|
|||||||
void Core_EigenTest_64::run(int) { check_full(CV_64FC1); }
|
void Core_EigenTest_64::run(int) { check_full(CV_64FC1); }
|
||||||
|
|
||||||
Core_EigenTest::Core_EigenTest()
|
Core_EigenTest::Core_EigenTest()
|
||||||
: eps_val_32(1e-3f), eps_vec_32(1e-2f),
|
: eps_val_32(1e-3f), eps_vec_32(12e-3f),
|
||||||
eps_val_64(1e-4f), eps_vec_64(1e-3f), ntests(100) {}
|
eps_val_64(1e-4f), eps_vec_64(1e-3f), ntests(100) {}
|
||||||
Core_EigenTest::~Core_EigenTest() {}
|
Core_EigenTest::~Core_EigenTest() {}
|
||||||
|
|
||||||
|
@ -39,6 +39,9 @@
|
|||||||
|
|
||||||
#define OUT_OF_RANGE -1
|
#define OUT_OF_RANGE -1
|
||||||
|
|
||||||
|
// for identical rounding after dividing on different platforms
|
||||||
|
#define ROUNDING_EPS 0.000001f
|
||||||
|
|
||||||
#if histdims == 1
|
#if histdims == 1
|
||||||
|
|
||||||
__kernel void calcLUT(__global const uchar * histptr, int hist_step, int hist_offset, int hist_bins,
|
__kernel void calcLUT(__global const uchar * histptr, int hist_step, int hist_offset, int hist_bins,
|
||||||
@ -53,7 +56,7 @@ __kernel void calcLUT(__global const uchar * histptr, int hist_step, int hist_of
|
|||||||
{
|
{
|
||||||
float lb = ranges[0], ub = ranges[1], gap = (ub - lb) / hist_bins;
|
float lb = ranges[0], ub = ranges[1], gap = (ub - lb) / hist_bins;
|
||||||
value -= lb;
|
value -= lb;
|
||||||
int bin = convert_int_sat_rtn(value / gap);
|
int bin = convert_int_sat_rtn(value / gap + ROUNDING_EPS);
|
||||||
|
|
||||||
if (bin >= hist_bins)
|
if (bin >= hist_bins)
|
||||||
lut[x] = OUT_OF_RANGE;
|
lut[x] = OUT_OF_RANGE;
|
||||||
@ -101,7 +104,7 @@ __kernel void calcLUT(int hist_bins, __global int * lut, int lut_offset,
|
|||||||
{
|
{
|
||||||
float lb = ranges[0], ub = ranges[1], gap = (ub - lb) / hist_bins;
|
float lb = ranges[0], ub = ranges[1], gap = (ub - lb) / hist_bins;
|
||||||
value -= lb;
|
value -= lb;
|
||||||
int bin = convert_int_sat_rtn(value / gap);
|
int bin = convert_int_sat_rtn(value / gap + ROUNDING_EPS);
|
||||||
|
|
||||||
lut[x] = bin >= hist_bins ? OUT_OF_RANGE : bin;
|
lut[x] = bin >= hist_bins ? OUT_OF_RANGE : bin;
|
||||||
}
|
}
|
||||||
|
@ -939,7 +939,8 @@ void cv::boxFilter( InputArray _src, OutputArray _dst, int ddepth,
|
|||||||
|
|
||||||
if (normalize && !src.isSubmatrix() && ddepth == sdepth &&
|
if (normalize && !src.isSubmatrix() && ddepth == sdepth &&
|
||||||
(/*ippBorderType == BORDER_REPLICATE ||*/ /* returns ippStsStepErr: Step value is not valid */
|
(/*ippBorderType == BORDER_REPLICATE ||*/ /* returns ippStsStepErr: Step value is not valid */
|
||||||
ippBorderType == BORDER_CONSTANT) && ocvAnchor == ippAnchor )
|
ippBorderType == BORDER_CONSTANT) && ocvAnchor == ippAnchor &&
|
||||||
|
dst.cols != ksize.width && dst.rows != ksize.height) // returns ippStsMaskSizeErr: mask has an illegal value
|
||||||
{
|
{
|
||||||
Ipp32s bufSize = 0;
|
Ipp32s bufSize = 0;
|
||||||
IppiSize roiSize = { dst.cols, dst.rows }, maskSize = { ksize.width, ksize.height };
|
IppiSize roiSize = { dst.cols, dst.rows }, maskSize = { ksize.width, ksize.height };
|
||||||
|
Loading…
x
Reference in New Issue
Block a user