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

Function TEST

test/homography.cpp:224–290  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

222using af::loadImage;
223
224TEST(Homography, CPP) {
225 UNSUPPORTED_BACKEND(AF_BACKEND_ONEAPI);
226 IMAGEIO_ENABLED_CHECK();
227
228 vector<dim4> inDims;
229 vector<string> inFiles;
230 vector<vector<float>> gold;
231
232 readImageTests(string(TEST_DIR "/homography/tux.test"), inDims, inFiles,
233 gold);
234
235 inFiles[0].insert(0, string(TEST_DIR "/homography/"));
236
237 const float size_ratio = 0.5f;
238
239 array train_img = loadImage(inFiles[0].c_str(), false);
240 array query_img = resize(size_ratio, train_img);
241 dim4 tDims = train_img.dims();
242
243 features feat_train, feat_query;
244 array desc_train, desc_query;
245 orb(feat_train, desc_train, train_img, 20, 2000, 1.2, 8, true);
246 orb(feat_query, desc_query, query_img, 20, 2000, 1.2, 8, true);
247
248 array idx, dist;
249 hammingMatcher(idx, dist, desc_train, desc_query, 0, 1);
250
251 array train_idx = where(dist < 30);
252 array query_idx = idx(train_idx);
253
254 array feat_train_x = feat_train.getX()(train_idx);
255 array feat_train_y = feat_train.getY()(train_idx);
256 array feat_train_score = feat_train.getScore()(train_idx);
257 array feat_train_orientation = feat_train.getOrientation()(train_idx);
258 array feat_train_size = feat_train.getSize()(train_idx);
259 array feat_query_x = feat_query.getX()(query_idx);
260 array feat_query_y = feat_query.getY()(query_idx);
261 array feat_query_score = feat_query.getScore()(query_idx);
262 array feat_query_orientation = feat_query.getOrientation()(query_idx);
263 array feat_query_size = feat_query.getSize()(query_idx);
264
265 array H;
266 int inliers = 0;
267 homography(H, inliers, feat_train_x, feat_train_y, feat_query_x,
268 feat_query_y, AF_HOMOGRAPHY_RANSAC, 3.0f, 1000, f32);
269
270 float* gold_t = new float[8];
271 for (int i = 0; i < 8; i++) gold_t[i] = 0.f;
272 gold_t[2] = tDims[1] * size_ratio;
273 gold_t[3] = tDims[1] * size_ratio;
274 gold_t[5] = tDims[0] * size_ratio;
275 gold_t[6] = tDims[0] * size_ratio;
276
277 array t = perspectiveTransform<float>(train_img.dims(), H);
278
279 float* out_t = new float[4 * 2];
280 t.host(out_t);
281

Callers

nothing calls this directly

Calls 15

readImageTestsFunction · 0.85
loadImageFunction · 0.85
hammingMatcherFunction · 0.85
fabsFunction · 0.85
getXMethod · 0.80
getYMethod · 0.80
getScoreMethod · 0.80
getOrientationMethod · 0.80
getSizeMethod · 0.80
hostMethod · 0.80
resizeFunction · 0.50
orbFunction · 0.50

Tested by

no test coverage detected