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

Function momentsOnImageTest

test/moments.cpp:100–158  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

98}
99
100void momentsOnImageTest(string pTestFile, string pImageFile, bool isColor) {
101 IMAGEIO_ENABLED_CHECK();
102 vector<dim4> numDims;
103
104 vector<vector<float>> in;
105 vector<vector<float>> tests;
106 readTests<float, float, float>(pTestFile, numDims, in, tests);
107
108 array imgArray = loadImage(pImageFile.c_str(), isColor);
109
110 double maxVal = max<double>(imgArray);
111 double minVal = min<double>(imgArray);
112 imgArray -= minVal;
113 imgArray /= maxVal - minVal;
114
115 array momentsArray = moments(imgArray, AF_MOMENT_M00);
116
117 vector<float> mData(momentsArray.elements());
118 momentsArray.host(&mData[0]);
119 for (int i = 0; i < momentsArray.elements(); ++i) {
120 ASSERT_NEAR(tests[0][i], mData[i], 1e-2 * tests[0][i])
121 << "at: " << i << endl;
122 }
123
124 momentsArray = moments(imgArray, AF_MOMENT_M01);
125 momentsArray.host(&mData[0]);
126 for (int i = 0; i < momentsArray.elements(); ++i) {
127 ASSERT_NEAR(tests[1][i], mData[i], 1e-2 * tests[1][i])
128 << "at: " << i << endl;
129 }
130
131 momentsArray = moments(imgArray, AF_MOMENT_M10);
132 momentsArray.host(&mData[0]);
133 for (int i = 0; i < momentsArray.elements(); ++i) {
134 ASSERT_NEAR(tests[2][i], mData[i], 1e-2 * tests[2][i])
135 << "at: " << i << endl;
136 }
137
138 momentsArray = moments(imgArray, AF_MOMENT_M11);
139 momentsArray.host(&mData[0]);
140 for (int i = 0; i < momentsArray.elements(); ++i) {
141 ASSERT_NEAR(tests[3][i], mData[i], 1e-2 * tests[3][i])
142 << "at: " << i << endl;
143 }
144
145 momentsArray = moments(imgArray, AF_MOMENT_FIRST_ORDER);
146 mData.resize(momentsArray.elements());
147 momentsArray.host(&mData[0]);
148 for (int i = 0; i < momentsArray.elements() / 4; i += 4) {
149 ASSERT_NEAR(tests[0][i], mData[i], 1e-2 * tests[0][i])
150 << "at: " << i << endl;
151 ASSERT_NEAR(tests[1][i], mData[i + 1], 1e-2 * tests[1][i])
152 << "at: " << i + 1 << endl;
153 ASSERT_NEAR(tests[2][i], mData[i + 2], 1e-2 * tests[2][i])
154 << "at: " << i + 2 << endl;
155 ASSERT_NEAR(tests[3][i], mData[i + 3], 1e-2 * tests[3][i])
156 << "at: " << i + 3 << endl;
157 }

Callers 1

TESTFunction · 0.85

Calls 4

loadImageFunction · 0.85
hostMethod · 0.80
momentsFunction · 0.50
elementsMethod · 0.45

Tested by

no test coverage detected