• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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) 2013, OpenCV Foundation, all rights reserved.
14 // Third party copyrights are property of their respective owners.
15 //
16 // Redistribution and use in source and binary forms, with or without modification,
17 // are permitted provided that the following conditions are met:
18 //
19 //   * Redistribution's of source code must retain the above copyright notice,
20 //     this list of conditions and the following disclaimer.
21 //
22 //   * Redistribution's in binary form must reproduce the above copyright notice,
23 //     this list of conditions and the following disclaimer in the documentation
24 //     and/or other materials provided with the distribution.
25 //
26 //   * The name of the copyright holders may not be used to endorse or promote products
27 //     derived from this software without specific prior written permission.
28 //
29 // This software is provided by the copyright holders and contributors "as is" and
30 // any express or implied warranties, including, but not limited to, the implied
31 // warranties of merchantability and fitness for a particular purpose are disclaimed.
32 // In no event shall the Intel Corporation or contributors be liable for any direct,
33 // indirect, incidental, special, exemplary, or consequential damages
34 // (including, but not limited to, procurement of substitute goods or services;
35 // loss of use, data, or profits; or business interruption) however caused
36 // and on any theory of liability, whether in contract, strict liability,
37 // or tort (including negligence or otherwise) arising in any way out of
38 // the use of this software, even if advised of the possibility of such damage.
39 //
40 //M*/
41 
42 
43 #include "test_precomp.hpp"
44 #include "opencv2/photo.hpp"
45 #include <string>
46 
47 using namespace cv;
48 using namespace std;
49 
50 static const double numerical_precision = 100.;
51 
TEST(Photo_NPR_EdgePreserveSmoothing_RecursiveFilter,regression)52 TEST(Photo_NPR_EdgePreserveSmoothing_RecursiveFilter, regression)
53 {
54     string folder = string(cvtest::TS::ptr()->get_data_path()) + "npr/";
55     string original_path = folder + "test1.png";
56 
57     Mat source = imread(original_path, IMREAD_COLOR);
58 
59     ASSERT_FALSE(source.empty()) << "Could not load input image " << original_path;
60 
61     Mat result;
62     edgePreservingFilter(source,result,1);
63 
64     Mat reference = imread(folder + "smoothened_RF_reference.png");
65     double error = cvtest::norm(reference, result, NORM_L1);
66     EXPECT_LE(error, numerical_precision);
67 }
68 
TEST(Photo_NPR_EdgePreserveSmoothing_NormConvFilter,regression)69 TEST(Photo_NPR_EdgePreserveSmoothing_NormConvFilter, regression)
70 {
71     string folder = string(cvtest::TS::ptr()->get_data_path()) + "npr/";
72     string original_path = folder + "test1.png";
73 
74     Mat source = imread(original_path, IMREAD_COLOR);
75 
76     ASSERT_FALSE(source.empty()) << "Could not load input image " << original_path;
77 
78     Mat result;
79     edgePreservingFilter(source,result,2);
80 
81     Mat reference = imread(folder + "smoothened_NCF_reference.png");
82     double error = cvtest::norm(reference, result, NORM_L1);
83     EXPECT_LE(error, numerical_precision);
84 
85 }
86 
TEST(Photo_NPR_DetailEnhance,regression)87 TEST(Photo_NPR_DetailEnhance, regression)
88 {
89     string folder = string(cvtest::TS::ptr()->get_data_path()) + "npr/";
90     string original_path = folder + "test1.png";
91 
92     Mat source = imread(original_path, IMREAD_COLOR);
93 
94     ASSERT_FALSE(source.empty()) << "Could not load input image " << original_path;
95 
96     Mat result;
97     detailEnhance(source,result);
98 
99     Mat reference = imread(folder + "detail_enhanced_reference.png");
100     double error = cvtest::norm(reference, result, NORM_L1);
101     EXPECT_LE(error, numerical_precision);
102 }
103 
TEST(Photo_NPR_PencilSketch,regression)104 TEST(Photo_NPR_PencilSketch, regression)
105 {
106     string folder = string(cvtest::TS::ptr()->get_data_path()) + "npr/";
107     string original_path = folder + "test1.png";
108 
109     Mat source = imread(original_path, IMREAD_COLOR);
110 
111     ASSERT_FALSE(source.empty()) << "Could not load input image " << original_path;
112 
113     Mat pencil_result, color_pencil_result;
114     pencilSketch(source,pencil_result, color_pencil_result, 10, 0.1f, 0.03f);
115 
116     Mat pencil_reference = imread(folder + "pencil_sketch_reference.png", 0 /* == grayscale*/);
117     double pencil_error = norm(pencil_reference, pencil_result, NORM_L1);
118     EXPECT_LE(pencil_error, numerical_precision);
119 
120     Mat color_pencil_reference = imread(folder + "color_pencil_sketch_reference.png");
121     double color_pencil_error = cvtest::norm(color_pencil_reference, color_pencil_result, NORM_L1);
122     EXPECT_LE(color_pencil_error, numerical_precision);
123 }
124 
TEST(Photo_NPR_Stylization,regression)125 TEST(Photo_NPR_Stylization, regression)
126 {
127     string folder = string(cvtest::TS::ptr()->get_data_path()) + "npr/";
128     string original_path = folder + "test1.png";
129 
130     Mat source = imread(original_path, IMREAD_COLOR);
131 
132     ASSERT_FALSE(source.empty()) << "Could not load input image " << original_path;
133 
134     Mat result;
135     stylization(source,result);
136 
137     Mat stylized_reference = imread(folder + "stylized_reference.png");
138     double stylized_error = cvtest::norm(stylized_reference, result, NORM_L1);
139     EXPECT_LE(stylized_error, numerical_precision);
140 
141 }
142