test_retina_ocl.cpp 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. /*M///////////////////////////////////////////////////////////////////////////////////////
  2. //
  3. // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
  4. //
  5. // By downloading, copying, installing or using the software you agree to this license.
  6. // If you do not agree to this license, do not download, install,
  7. // copy or use the software.
  8. //
  9. //
  10. // License Agreement
  11. // For Open Source Computer Vision Library
  12. //
  13. // Copyright (C) 2010-2013, Multicoreware, Inc., all rights reserved.
  14. // Copyright (C) 2010-2013, Advanced Micro Devices, Inc., all rights reserved.
  15. // Third party copyrights are property of their respective owners.
  16. //
  17. // @Authors
  18. // Peng Xiao, pengxiao@multicorewareinc.com
  19. //
  20. // Redistribution and use in source and binary forms, with or without modification,
  21. // are permitted provided that the following conditions are met:
  22. //
  23. // * Redistribution's of source code must retain the above copyright notice,
  24. // this list of conditions and the following disclaimer.
  25. //
  26. // * Redistribution's in binary form must reproduce the above copyright notice,
  27. // this list of conditions and the following disclaimer in the documentation
  28. // and/or other materials provided with the distribution.
  29. //
  30. // * The name of the copyright holders may not be used to endorse or promote products
  31. // derived from this software without specific prior written permission.
  32. //
  33. // This software is provided by the copyright holders and contributors as is and
  34. // any express or implied warranties, including, but not limited to, the implied
  35. // warranties of merchantability and fitness for a particular purpose are disclaimed.
  36. // In no event shall the Intel Corporation or contributors be liable for any direct,
  37. // indirect, incidental, special, exemplary, or consequential damages
  38. // (including, but not limited to, procurement of substitute goods or services;
  39. // loss of use, data, or profits; or business interruption) however caused
  40. // and on any theory of liability, whether in contract, strict liability,
  41. // or tort (including negligence or otherwise) arising in any way out of
  42. // the use of this software, even if advised of the possibility of such damage.
  43. //
  44. //M*/
  45. #include "test_precomp.hpp"
  46. #include "opencv2/ts/ocl_test.hpp"
  47. #define RETINA_ITERATIONS 5
  48. namespace opencv_test { namespace {
  49. PARAM_TEST_CASE(Retina_OCL, bool, int, bool, double, double)
  50. {
  51. bool colorMode;
  52. int colorSamplingMethod;
  53. bool useLogSampling;
  54. float reductionFactor;
  55. float samplingStrength;
  56. virtual void SetUp()
  57. {
  58. colorMode = GET_PARAM(0);
  59. colorSamplingMethod = GET_PARAM(1);
  60. useLogSampling = GET_PARAM(2);
  61. reductionFactor = static_cast<float>(GET_PARAM(3));
  62. samplingStrength = static_cast<float>(GET_PARAM(4));
  63. }
  64. };
  65. OCL_TEST_P(Retina_OCL, Accuracy)
  66. {
  67. Mat input = imread(cvtest::TS::ptr()->get_data_path() + "shared/lena.png", colorMode);
  68. CV_Assert(!input.empty());
  69. Ptr<bioinspired::Retina> retina = bioinspired::Retina::create(
  70. input.size(),
  71. colorMode,
  72. colorSamplingMethod,
  73. useLogSampling,
  74. reductionFactor,
  75. samplingStrength);
  76. Mat gold_parvo;
  77. Mat gold_magno;
  78. UMat ocl_parvo;
  79. UMat ocl_magno;
  80. for(int i = 0; i < RETINA_ITERATIONS; i ++)
  81. {
  82. OCL_OFF(retina->run(input));
  83. OCL_OFF(retina->getParvo(gold_parvo));
  84. OCL_OFF(retina->getMagno(gold_magno));
  85. OCL_OFF(retina->clearBuffers());
  86. OCL_ON(retina->run(input));
  87. OCL_ON(retina->getParvo(ocl_parvo));
  88. OCL_ON(retina->getMagno(ocl_magno));
  89. OCL_ON(retina->clearBuffers());
  90. int eps = 1;
  91. EXPECT_MAT_NEAR(gold_parvo, ocl_parvo, eps);
  92. EXPECT_MAT_NEAR(gold_magno, ocl_magno, eps);
  93. }
  94. }
  95. OCL_INSTANTIATE_TEST_CASE_P(Contrib, Retina_OCL, testing::Combine(
  96. testing::Bool(),
  97. testing::Values((int)cv::bioinspired::RETINA_COLOR_BAYER),
  98. testing::Values(false/*,true*/),
  99. testing::Values(1.0, 0.5),
  100. testing::Values(10.0, 5.0)));
  101. }} // namespace