ssize.width *= cn;
bool next = true;
//RGB2Lab_f works throug LUT and brings additional error
- static const float maxErr = 1.f/200.f;
+ static const float maxErr = 1.f/192.f;
for (int y = 0; y < ssize.height && next; ++y)
{
Size ssize = src.size();
CV_Assert(ssize.width == ssize.height);
- RNG& rng = cvtest::TS::ptr()->get_rng();
- int blueInd = rng.uniform(0., 1.) > 0.5 ? 0 : 2;
- bool srgb = rng.uniform(0., 1.) > 0.5;
-
- // Convert test image to LAB
- cv::Mat lab;
- int forward_code = blueInd ? srgb ? CV_BGR2Lab : CV_LBGR2Lab : srgb ? CV_RGB2Lab : CV_LRGB2Lab;
- int inverse_code = blueInd ? srgb ? CV_Lab2BGR : CV_Lab2LBGR : srgb ? CV_Lab2RGB : CV_Lab2LRGB;
- cv::cvtColor(src, lab, forward_code);
- // Convert LAB image back to BGR(RGB)
- cv::Mat recons;
- cv::cvtColor(lab, recons, inverse_code);
-
- validateResult(src, recons, src, forward_code);
+ for(int i = 0; i < 4; i++)
+ {
+ int blueInd = (i%2) > 0 ? 0 : 2;
+ bool srgb = i > 1;
+
+ // Convert test image to LAB
+ cv::Mat lab;
+ int forward_code = blueInd ? srgb ? CV_BGR2Lab : CV_LBGR2Lab : srgb ? CV_RGB2Lab : CV_LRGB2Lab;
+ int inverse_code = blueInd ? srgb ? CV_Lab2BGR : CV_Lab2LBGR : srgb ? CV_Lab2RGB : CV_Lab2LRGB;
+ cv::cvtColor(src, lab, forward_code);
+ // Convert LAB image back to BGR(RGB)
+ cv::Mat recons;
+ cv::cvtColor(lab, recons, inverse_code);
+
+ validateResult(src, recons, src, forward_code);
+ }
}
static void test_Bayer2RGB_EdgeAware_8u(const Mat& src, Mat& dst, int code)