You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
2.5 KiB
91 lines
2.5 KiB
// This file is part of OpenCV project. |
|
// It is subject to the license terms in the LICENSE file found in the top-level directory |
|
// of this distribution and at http://opencv.org/license.html. |
|
|
|
#include "test_precomp.hpp" |
|
|
|
#define TEST_CASE_NAME CV_Quality_BRISQUE |
|
|
|
namespace opencv_test |
|
{ |
|
namespace quality_test |
|
{ |
|
|
|
// brisque per channel |
|
const cv::Scalar |
|
BRISQUE_EXPECTED_1 = { 31.866388320922852 } // testfile_1a |
|
, BRISQUE_EXPECTED_2 = { 9.7544803619384766 } // testfile 2a |
|
; |
|
|
|
// default model and range file names |
|
// opencv tests must be installed (cmake var: INSTALL_TESTS), or BRISQUE tests will be skipped |
|
static const char* MODEL_FNAME = "brisque_model_live.yml"; |
|
static const char* RANGE_FNAME = "brisque_range_live.yml"; |
|
|
|
// instantiates a brisque object for testing |
|
inline cv::Ptr<quality::QualityBRISQUE> create_brisque() |
|
{ |
|
const auto model = cvtest::findDataFile(MODEL_FNAME, false); |
|
const auto range = cvtest::findDataFile(RANGE_FNAME, false); |
|
return quality::QualityBRISQUE::create(model, range); |
|
} |
|
|
|
// static method |
|
TEST(TEST_CASE_NAME, static_ ) |
|
{ |
|
quality_expect_near( |
|
quality::QualityBRISQUE::compute( |
|
get_testfile_1a() |
|
, cvtest::findDataFile(MODEL_FNAME, false) |
|
, cvtest::findDataFile(RANGE_FNAME, false) |
|
) |
|
, BRISQUE_EXPECTED_1 |
|
); |
|
} |
|
|
|
// single channel, instance method, with and without opencl |
|
TEST(TEST_CASE_NAME, single_channel ) |
|
{ |
|
auto fn = []() { quality_test(create_brisque(), get_testfile_1a(), BRISQUE_EXPECTED_1, false, true ); }; |
|
OCL_OFF( fn() ); |
|
OCL_ON( fn() ); |
|
} |
|
|
|
// multi-channel |
|
TEST(TEST_CASE_NAME, multi_channel) |
|
{ |
|
quality_test(create_brisque(), get_testfile_2a(), BRISQUE_EXPECTED_2, false, true); |
|
} |
|
|
|
// check brisque model/range persistence |
|
TEST(TEST_CASE_NAME, model_persistence ) |
|
{ |
|
auto ptr = create_brisque(); |
|
auto fn = [&ptr]() { quality_test(ptr, get_testfile_1a(), BRISQUE_EXPECTED_1, false, true); }; |
|
fn(); |
|
fn(); // model/range should persist with brisque ptr through multiple invocations |
|
} |
|
|
|
// check compute features interface method |
|
TEST(TEST_CASE_NAME, compute_features) |
|
{ |
|
auto ptr = create_brisque(); |
|
cv::Mat features; |
|
ptr->computeFeatures(get_testfile_1a(), features); |
|
|
|
EXPECT_EQ(features.rows, 1); |
|
EXPECT_EQ(features.cols, 36); |
|
} |
|
|
|
/* |
|
// internal a/b test |
|
TEST(TEST_CASE_NAME, performance) |
|
{ |
|
auto ref = get_testfile_1a(); |
|
auto alg = create_brisque(); |
|
|
|
quality_performance_test("BRISQUE", [&]() { alg->compute(ref); }); |
|
} |
|
*/ |
|
} |
|
} // namespace
|