| 44 | |
| 45 | template<typename T> |
| 46 | void homographyTest(string pTestFile, const af_homography_type htype, |
| 47 | const bool rotate, const float size_ratio) { |
| 48 | using af::dtype_traits; |
| 49 | using af::Pi; |
| 50 | |
| 51 | SUPPORTED_TYPE_CHECK(T); |
| 52 | IMAGEIO_ENABLED_CHECK(); |
| 53 | |
| 54 | vector<dim4> inDims; |
| 55 | vector<string> inFiles; |
| 56 | vector<vector<float>> gold; |
| 57 | |
| 58 | readImageTests(pTestFile, inDims, inFiles, gold); |
| 59 | |
| 60 | inFiles[0].insert(0, string(TEST_DIR "/homography/")); |
| 61 | |
| 62 | af_array trainArray_f32 = 0; |
| 63 | af_array trainArray = 0; |
| 64 | af_array train_desc = 0; |
| 65 | af_array train_feat_x = 0; |
| 66 | af_array train_feat_y = 0; |
| 67 | af_features train_feat; |
| 68 | |
| 69 | ASSERT_SUCCESS(af_load_image(&trainArray_f32, inFiles[0].c_str(), false)); |
| 70 | ASSERT_SUCCESS(conv_image<T>(&trainArray, trainArray_f32)); |
| 71 | |
| 72 | ASSERT_SUCCESS(af_orb(&train_feat, &train_desc, trainArray, |
| 73 | 20.0f, 2000, 1.2f, 8, true)); |
| 74 | |
| 75 | ASSERT_SUCCESS(af_get_features_xpos(&train_feat_x, train_feat)); |
| 76 | ASSERT_SUCCESS(af_get_features_ypos(&train_feat_y, train_feat)); |
| 77 | |
| 78 | af_array queryArray = 0; |
| 79 | af_array query_desc = 0; |
| 80 | af_array idx = 0; |
| 81 | af_array dist = 0; |
| 82 | af_array const_50 = 0; |
| 83 | af_array dist_thr = 0; |
| 84 | af_array train_idx = 0; |
| 85 | af_array query_idx = 0; |
| 86 | af_array query_feat_x = 0; |
| 87 | af_array query_feat_y = 0; |
| 88 | af_array H = 0; |
| 89 | af_array train_feat_x_idx = 0; |
| 90 | af_array train_feat_y_idx = 0; |
| 91 | af_array query_feat_x_idx = 0; |
| 92 | af_array query_feat_y_idx = 0; |
| 93 | af_features query_feat; |
| 94 | |
| 95 | const float theta = Pi * 0.5f; |
| 96 | const dim_t test_d0 = inDims[0][0] * size_ratio; |
| 97 | const dim_t test_d1 = inDims[0][1] * size_ratio; |
| 98 | const dim_t tDims[] = {test_d0, test_d1}; |
| 99 | if (rotate) { |
| 100 | ASSERT_SUCCESS(af_rotate(&queryArray, trainArray, theta, false, |
| 101 | AF_INTERP_NEAREST)); |
| 102 | } else { |
| 103 | ASSERT_SUCCESS(af_resize(&queryArray, trainArray, test_d0, test_d1, |
nothing calls this directly
no test coverage detected