From: Andrey Kamaev Date: Mon, 11 Mar 2013 14:50:19 +0000 (+0400) Subject: Merge branch '2.4' X-Git-Tag: submit/tizen_ivi/20141117.190038~2^2~1149 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9b7dfd677db5818b8dd699e2059c886a1e7ce24f;p=profile%2Fivi%2Fopencv.git Merge branch '2.4' --- 9b7dfd677db5818b8dd699e2059c886a1e7ce24f diff --cc modules/imgproc/include/opencv2/imgproc/imgproc.hpp index 8b05564,caa2d55..91cf1f9 --- a/modules/imgproc/include/opencv2/imgproc/imgproc.hpp +++ b/modules/imgproc/include/opencv2/imgproc/imgproc.hpp @@@ -1044,18 -1050,7 +1044,32 @@@ enu COLOR_RGBA2mRGBA = 125, COLOR_mRGBA2RGBA = 126, - COLOR_COLORCVT_MAX = 127 ++ COLOR_RGB2YUV_I420 = 127, ++ COLOR_BGR2YUV_I420 = 128, ++ COLOR_RGB2YUV_IYUV = COLOR_RGB2YUV_I420, ++ COLOR_BGR2YUV_IYUV = COLOR_BGR2YUV_I420, ++ ++ COLOR_RGBA2YUV_I420 = 129, ++ COLOR_BGRA2YUV_I420 = 130, ++ COLOR_RGBA2YUV_IYUV = COLOR_RGBA2YUV_I420, ++ COLOR_BGRA2YUV_IYUV = COLOR_BGRA2YUV_I420, ++ COLOR_RGB2YUV_YV12 = 131, ++ COLOR_BGR2YUV_YV12 = 132, ++ COLOR_RGBA2YUV_YV12 = 133, ++ COLOR_BGRA2YUV_YV12 = 134, ++ + // Edge-Aware Demosaicing - COLOR_BayerBG2BGR_EA = 127, - COLOR_BayerGB2BGR_EA = 128, - COLOR_BayerRG2BGR_EA = 129, - COLOR_BayerGR2BGR_EA = 130, ++ COLOR_BayerBG2BGR_EA = 135, ++ COLOR_BayerGB2BGR_EA = 136, ++ COLOR_BayerRG2BGR_EA = 137, ++ COLOR_BayerGR2BGR_EA = 138, + + COLOR_BayerBG2RGB_EA = COLOR_BayerRG2BGR_EA, + COLOR_BayerGB2RGB_EA = COLOR_BayerGR2BGR_EA, + COLOR_BayerRG2RGB_EA = COLOR_BayerBG2BGR_EA, + COLOR_BayerGR2RGB_EA = COLOR_BayerGB2BGR_EA, + - COLOR_COLORCVT_MAX = 131 ++ COLOR_COLORCVT_MAX = 139 }; diff --cc modules/imgproc/include/opencv2/imgproc/types_c.h index 00434b3,ba25af9..8e65269 --- a/modules/imgproc/include/opencv2/imgproc/types_c.h +++ b/modules/imgproc/include/opencv2/imgproc/types_c.h @@@ -309,19 -309,22 +309,33 @@@ enu // alpha premultiplication CV_RGBA2mRGBA = 125, CV_mRGBA2RGBA = 126, - + + CV_RGB2YUV_I420 = 127, + CV_BGR2YUV_I420 = 128, + CV_RGB2YUV_IYUV = CV_RGB2YUV_I420, + CV_BGR2YUV_IYUV = CV_BGR2YUV_I420, + + CV_RGBA2YUV_I420 = 129, + CV_BGRA2YUV_I420 = 130, + CV_RGBA2YUV_IYUV = CV_RGBA2YUV_I420, + CV_BGRA2YUV_IYUV = CV_BGRA2YUV_I420, + CV_RGB2YUV_YV12 = 131, + CV_BGR2YUV_YV12 = 132, + CV_RGBA2YUV_YV12 = 133, + CV_BGRA2YUV_YV12 = 134, + - CV_COLORCVT_MAX = 135 + // Edge-Aware Demosaicing - CV_BayerBG2BGR_EA = 127, - CV_BayerGB2BGR_EA = 128, - CV_BayerRG2BGR_EA = 129, - CV_BayerGR2BGR_EA = 130, ++ CV_BayerBG2BGR_EA = 135, ++ CV_BayerGB2BGR_EA = 136, ++ CV_BayerRG2BGR_EA = 137, ++ CV_BayerGR2BGR_EA = 138, + + CV_BayerBG2RGB_EA = CV_BayerRG2BGR_EA, + CV_BayerGB2RGB_EA = CV_BayerGR2BGR_EA, + CV_BayerRG2RGB_EA = CV_BayerBG2BGR_EA, + CV_BayerGR2RGB_EA = CV_BayerGB2BGR_EA, + - CV_COLORCVT_MAX = 131 ++ CV_COLORCVT_MAX = 139 }; diff --cc modules/imgproc/perf/perf_cvt_color.cpp index 7922383,446212e..2038fc8 --- a/modules/imgproc/perf/perf_cvt_color.cpp +++ b/modules/imgproc/perf/perf_cvt_color.cpp @@@ -307,27 -314,27 +314,52 @@@ PERF_TEST_P(Size_CvtMode2, cvtColorYUV4 SANITY_CHECK(dst, 1); } + typedef std::tr1::tuple Size_CvtMode3_t; + typedef perf::TestBaseWithParam Size_CvtMode3; + + PERF_TEST_P(Size_CvtMode3, cvtColorRGB2YUV420p, + testing::Combine( + testing::Values(szVGA, sz720p, sz1080p, Size(130, 60)), + testing::ValuesIn(CvtMode3::all()) + ) + ) + { + Size sz = get<0>(GetParam()); + int mode = get<1>(GetParam()); + ChPair ch = getConversionInfo(mode); + + Mat src(sz, CV_8UC(ch.scn)); + Mat dst(sz.height + sz.height / 2, sz.width, CV_8UC(ch.dcn)); + + declare.time(100); + declare.in(src, WARMUP_RNG).out(dst); + + TEST_CYCLE() cvtColor(src, dst, mode, ch.dcn); + + SANITY_CHECK(dst, 1); + } ++ +CV_ENUM(EdgeAwareBayerMode, COLOR_BayerBG2BGR_EA, COLOR_BayerGB2BGR_EA, COLOR_BayerRG2BGR_EA, COLOR_BayerGR2BGR_EA) + +typedef std::tr1::tuple EdgeAwareParams; +typedef perf::TestBaseWithParam EdgeAwareDemosaicingTest; + +PERF_TEST_P(EdgeAwareDemosaicingTest, demosaicingEA, + testing::Combine( + testing::Values(szVGA, sz720p, sz1080p, Size(130, 60)), + testing::ValuesIn(EdgeAwareBayerMode::all()) + ) + ) +{ + Size sz = get<0>(GetParam()); + int mode = get<1>(GetParam()); + + Mat src(sz, CV_8UC1); + Mat dst(sz, CV_8UC3); + + declare.in(src, WARMUP_RNG).out(dst); + + TEST_CYCLE() cvtColor(src, dst, mode, 3); + + SANITY_CHECK(dst, 1); +} diff --cc modules/imgproc/test/test_cvtyuv.cpp index 1a2ab01,61bc9bd..bd8d95d --- a/modules/imgproc/test/test_cvtyuv.cpp +++ b/modules/imgproc/test/test_cvtyuv.cpp @@@ -237,6 -341,23 +341,23 @@@ public } }; + class RGB2YUV_Converter + { + public: + YUV convert(RGB rgb) + { + int r = rgb[0]; + int g = rgb[1]; + int b = rgb[2]; - ++ + uchar y = saturate_cast((int)( 0.257f*r + 0.504f*g + 0.098f*b + 0.5f) + 16); + uchar u = saturate_cast((int)(-0.148f*r - 0.291f*g + 0.439f*b + 0.5f) + 128); + uchar v = saturate_cast((int)( 0.439f*r - 0.368f*g - 0.071f*b + 0.5f) + 128); + + return YUV(y, u, v); + } + }; + YUVreader* YUVreader::getReader(int code) { switch(code)