MCPcopy Create free account
hub / github.com/arrayfire/arrayfire / transformTest

Function transformTest

test/transform.cpp:97–148  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

95
96template<typename T>
97void transformTest(string pTestFile, string pHomographyFile,
98 const af_interp_type method, const bool invert) {
99 SUPPORTED_TYPE_CHECK(T);
100 IMAGEIO_ENABLED_CHECK();
101
102 af_array sceneArray = 0;
103 af_array goldArray = 0;
104 af_array outArray = 0;
105 af_array HArray = 0;
106
107 dim_t odim0 = 0;
108 dim_t odim1 = 0;
109
110 genTestData<T>(&goldArray, &sceneArray, &HArray, &odim0, &odim1, pTestFile,
111 pHomographyFile);
112
113 ASSERT_SUCCESS(af_transform(&outArray, sceneArray, HArray, odim0, odim1,
114 method, invert));
115
116 // Get gold data
117 dim_t goldEl = 0;
118 ASSERT_SUCCESS(af_get_elements(&goldEl, goldArray));
119 vector<T> goldData(goldEl);
120 ASSERT_SUCCESS(af_get_data_ptr((void *)&goldData.front(), goldArray));
121
122 // Get result
123 dim_t outEl = 0;
124 ASSERT_SUCCESS(af_get_elements(&outEl, outArray));
125 vector<T> outData(outEl);
126 ASSERT_SUCCESS(af_get_data_ptr((void *)&outData.front(), outArray));
127
128 const float thr = 1.1f;
129
130 // Maximum number of wrong pixels must be <= 0.01% of number of elements,
131 // this metric is necessary due to rounding errors between different
132 // backends for AF_INTERP_NEAREST and AF_INTERP_LOWER
133 const size_t maxErr = goldEl * 0.0001f;
134 size_t err = 0;
135
136 for (dim_t elIter = 0; elIter < goldEl; elIter++) {
137 err += fabs((float)floor(outData[elIter]) -
138 (float)floor(goldData[elIter])) > thr;
139 if (err > maxErr) {
140 ASSERT_LE(err, maxErr) << "at: " << elIter << endl;
141 }
142 }
143
144 if (HArray != 0) { af_release_array(HArray); }
145 if (outArray != 0) { af_release_array(outArray); }
146 if (goldArray != 0) { af_release_array(goldArray); }
147 if (sceneArray != 0) { af_release_array(sceneArray); }
148}
149
150TYPED_TEST(Transform, PerspectiveNearest) {
151 transformTest<TypeParam>(string(TEST_DIR "/transform/tux_nearest.test"),

Callers

nothing calls this directly

Calls 6

af_get_elementsFunction · 0.85
fabsFunction · 0.85
floorFunction · 0.85
af_transformFunction · 0.50
af_get_data_ptrFunction · 0.50
af_release_arrayFunction · 0.50

Tested by

no test coverage detected