1
0
mirror of https://github.com/opencv/opencv.git synced 2026-07-31 00:03:03 +04:00

Merge branch '2.4'

This commit is contained in:
Andrey Kamaev
2012-10-23 20:32:19 +04:00
24 changed files with 131 additions and 79 deletions
+38 -22
View File
@@ -15,6 +15,7 @@ CV_ENUM(RemapMode, HALF_SIZE, UPSIDE_DOWN, REFLECTION_X, REFLECTION_BOTH)
typedef TestBaseWithParam< tr1::tuple<Size, InterType, BorderMode> > TestWarpAffine;
typedef TestBaseWithParam< tr1::tuple<Size, InterType, BorderMode> > TestWarpPerspective;
typedef TestBaseWithParam< tr1::tuple<Size, InterType, BorderMode, MatType> > TestWarpPerspectiveNear_t;
typedef TestBaseWithParam< tr1::tuple<MatType, Size, InterType, BorderMode, RemapMode> > TestRemap;
void update_map(const Mat& src, Mat& map_x, Mat& map_y, const int remapMode );
@@ -80,44 +81,59 @@ PERF_TEST_P( TestWarpPerspective, WarpPerspective,
SANITY_CHECK(dst);
}
PERF_TEST_P( TestWarpPerspective, WarpPerspectiveLarge,
PERF_TEST_P( TestWarpPerspectiveNear_t, WarpPerspectiveNear,
Combine(
Values( sz3MP, sz5MP ),
ValuesIn( InterType::all() ),
ValuesIn( BorderMode::all() )
Values( Size(176,144), Size(320,240), Size(352,288), Size(480,480),
Size(640,480), Size(704,576), Size(720,408), Size(720,480),
Size(720,576), Size(768,432), Size(800,448), Size(960,720),
Size(1024,768), Size(1280,720), Size(1280,960), Size(1360,720),
Size(1600,1200), Size(1920,1080), Size(2048,1536), Size(2592,1920),
Size(2592,1944), Size(3264,2448), Size(4096,3072), Size(4208,3120) ),
ValuesIn( InterType::all() ),
ValuesIn( BorderMode::all() ),
Values( CV_8UC1, CV_8UC4 )
)
)
)
{
Size sz;
int borderMode, interType;
sz = get<0>(GetParam());
Size size;
int borderMode, interType, type;
size = get<0>(GetParam());
borderMode = get<1>(GetParam());
interType = get<2>(GetParam());
type = get<3>(GetParam());
string resolution;
if (sz == sz3MP)
resolution = "3MP";
else if (sz == sz5MP)
resolution = "5MP";
Mat src, img = imread(getDataPath("cv/shared/5MP.png"));
if( type == CV_8UC1 )
{
cvtColor(img, src, COLOR_BGR2GRAY, 1);
}
else if( type == CV_8UC4 )
{
cvtColor(img, src, COLOR_BGR2BGRA, 4);
}
else
{
FAIL();
}
Mat src, img = imread(getDataPath("cv/shared/" + resolution + ".png"));
cvtColor(img, src, COLOR_BGR2BGRA, 4);
resize(src, src, size);
int shift = 103;
Mat srcVertices = (Mat_<Vec2f>(1, 4) << Vec2f(0, 0), Vec2f(sz.width-1, 0),
Vec2f(sz.width-1, sz.height-1), Vec2f(0, sz.height-1));
Mat dstVertices = (Mat_<Vec2f>(1, 4) << Vec2f(0, shift), Vec2f(sz.width-shift/2, 0),
Vec2f(sz.width-shift, sz.height-shift), Vec2f(shift/2, sz.height-1));
int shift = src.cols*0.04;
Mat srcVertices = (Mat_<Vec2f>(1, 4) << Vec2f(0, 0), Vec2f(size.width-1, 0),
Vec2f(size.width-1, size.height-1), Vec2f(0, size.height-1));
Mat dstVertices = (Mat_<Vec2f>(1, 4) << Vec2f(0, shift), Vec2f(size.width-shift/2, 0),
Vec2f(size.width-shift, size.height-shift), Vec2f(shift/2, size.height-1));
Mat warpMat = getPerspectiveTransform(srcVertices, dstVertices);
Mat dst(sz, CV_8UC4);
Mat dst(size, type);
declare.in(src).out(dst);
TEST_CYCLE()
warpPerspective( src, dst, warpMat, sz, interType, borderMode, Scalar::all(150) );
{
warpPerspective( src, dst, warpMat, size, interType, borderMode, Scalar::all(150) );
}
SANITY_CHECK(dst);
}
+6 -6
View File
@@ -1387,8 +1387,8 @@ struct RGB2Lab_f
C6 = coeffs[6], C7 = coeffs[7], C8 = coeffs[8];
n *= 3;
static const float _1_3 = 1.0 / 3.0;
static const double _a = 16.0 / 116;
static const float _1_3 = 1.0f / 3.0f;
static const float _a = 16.0f / 116.0f;
for (i = 0; i < n; i += 3, src += scn )
{
float R = clip(src[0]);
@@ -1409,11 +1409,11 @@ struct RGB2Lab_f
float Y = R*C3 + G*C4 + B*C5;
float Z = R*C6 + G*C7 + B*C8;
float FX = X > 0.008856 ? pow(X, _1_3) : (7.787f * X + _a);
float FY = Y > 0.008856 ? pow(Y, _1_3) : (7.787f * Y + _a);
float FZ = Z > 0.008856 ? pow(Z, _1_3) : (7.787f * Z + _a);
float FX = X > 0.008856f ? pow(X, _1_3) : (7.787f * X + _a);
float FY = Y > 0.008856f ? pow(Y, _1_3) : (7.787f * Y + _a);
float FZ = Z > 0.008856f ? pow(Z, _1_3) : (7.787f * Z + _a);
float L = Y > 0.008856 ? (116.f * FY - 16.f) : (903.3 * Y);
float L = Y > 0.008856f ? (116.f * FY - 16.f) : (903.3f * Y);
float a = 500.f * (FX - FY);
float b = 200.f * (FY - FZ);
+2 -1
View File
@@ -220,7 +220,7 @@ static const void* initInterTab2D( int method, bool fixpt )
return fixpt ? (const void*)itab : (const void*)tab;
}
#ifndef __MINGW32__
static bool initAllInterTab2D()
{
return initInterTab2D( INTER_LINEAR, false ) &&
@@ -232,6 +232,7 @@ static bool initAllInterTab2D()
}
static volatile bool doInitAllInterTab2D = initAllInterTab2D();
#endif
template<typename ST, typename DT> struct Cast
{