Loading autocnet/matcher/cpu_decompose.py +1 −1 Changes for autocnet/matcher/cpu_decompose.py: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -163,7 +163,7 @@ def decompose_and_match(self, k=2, maxiteration=3, size=18, buf_dist=3,**kwargs) # Apply Lowe's ratio test to try to find a 'good' starting point mask = matches.groupby('source_idx')['distance'].transform(func).astype('bool') candidate_matches = matches[mask] match_idx = candidate_matches['source_idx'] match_idx = candidate_matches['source_idx'].astype(np.int) # Extract those matches that pass the ratio check sub_skp = skp.iloc[match_idx] Loading functional_tests/test_three_image.py +2 −2 Changes for functional_tests/test_three_image.py: 2 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -47,11 +47,11 @@ class TestThreeImageMatching(unittest.TestCase): self.assertIn(node.nkeypoints, range(490, 511)) cg.match(k=5) cg.symmetry_checks() cg.symmetry_checks(single=False) cg.ratio_checks() cg.apply_func_to_edges("compute_homography", clean_keys=['symmetry', 'ratio']) cg.compute_fundamental_matrices(clean_keys=['symmetry', 'ratio']) cg.compute_fundamental_matrices(clean_keys=['symmetry', 'ratio'], reproj_threshold=3.0) # Step: And create a C object cg.generate_cnet(clean_keys=['symmetry', 'ratio', 'ransac']) Loading functional_tests/test_two_image.py +3 −22 Changes for functional_tests/test_two_image.py: 3 added lines, 22 removed lines. Original line number Diff line number Diff line Loading @@ -50,37 +50,18 @@ class TestTwoImageMatching(unittest.TestCase): # Step: Extract image data and attribute nodes cg.extract_features(method='sift', extractor_parameters={"nfeatures":500}) for i, node in cg.nodes_iter(data=True): self.assertIn(node.nkeypoints, range(490, 511)) self.assertIn(node.nkeypoints, range(490, 510)) # Step: Compute the coverage ratios truth_ratios = [0.95351579, 0.93595664] for i, node in cg.nodes_iter(data=True): ratio = node.coverage_ratio() self.assertIn(round(ratio, 8), truth_ratios) self.assertTrue(0.93 < round(ratio, 8) < 0.96) cg.decompose_and_match(k=2, maxiteration=2) self.assertTrue(isinstance(cg.edge[0][1].smembership, np.ndarray)) # Perform the symmetry check cg.symmetry_checks() # Perform the ratio check cg.ratio_checks(clean_keys=['symmetry'], single=True) # Create fundamental matrix cg.compute_fundamental_matrices(clean_keys = ['symmetry', 'ratio']) for source, destination, edge in cg.edges_iter(data=True): # Perform the symmetry check self.assertIn(edge.masks['symmetry'].sum(), range(200, 400)) # Perform the ratio test self.assertIn(edge.masks['ratio'].sum(), range(200, 300)) # Range needs to be set self.assertIn(edge.masks['fundamental'].sum(), range(200, 300)) # Step: Compute the homographies and apply RANSAC cg.compute_homographies(clean_keys=['symmetry', 'ratio']) cg.compute_fundamental_matrices() # Apply AMNS cg.suppress(k=30, suppression_func=error) Loading Loading
autocnet/matcher/cpu_decompose.py +1 −1 Changes for autocnet/matcher/cpu_decompose.py: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -163,7 +163,7 @@ def decompose_and_match(self, k=2, maxiteration=3, size=18, buf_dist=3,**kwargs) # Apply Lowe's ratio test to try to find a 'good' starting point mask = matches.groupby('source_idx')['distance'].transform(func).astype('bool') candidate_matches = matches[mask] match_idx = candidate_matches['source_idx'] match_idx = candidate_matches['source_idx'].astype(np.int) # Extract those matches that pass the ratio check sub_skp = skp.iloc[match_idx] Loading
functional_tests/test_three_image.py +2 −2 Changes for functional_tests/test_three_image.py: 2 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -47,11 +47,11 @@ class TestThreeImageMatching(unittest.TestCase): self.assertIn(node.nkeypoints, range(490, 511)) cg.match(k=5) cg.symmetry_checks() cg.symmetry_checks(single=False) cg.ratio_checks() cg.apply_func_to_edges("compute_homography", clean_keys=['symmetry', 'ratio']) cg.compute_fundamental_matrices(clean_keys=['symmetry', 'ratio']) cg.compute_fundamental_matrices(clean_keys=['symmetry', 'ratio'], reproj_threshold=3.0) # Step: And create a C object cg.generate_cnet(clean_keys=['symmetry', 'ratio', 'ransac']) Loading
functional_tests/test_two_image.py +3 −22 Changes for functional_tests/test_two_image.py: 3 added lines, 22 removed lines. Original line number Diff line number Diff line Loading @@ -50,37 +50,18 @@ class TestTwoImageMatching(unittest.TestCase): # Step: Extract image data and attribute nodes cg.extract_features(method='sift', extractor_parameters={"nfeatures":500}) for i, node in cg.nodes_iter(data=True): self.assertIn(node.nkeypoints, range(490, 511)) self.assertIn(node.nkeypoints, range(490, 510)) # Step: Compute the coverage ratios truth_ratios = [0.95351579, 0.93595664] for i, node in cg.nodes_iter(data=True): ratio = node.coverage_ratio() self.assertIn(round(ratio, 8), truth_ratios) self.assertTrue(0.93 < round(ratio, 8) < 0.96) cg.decompose_and_match(k=2, maxiteration=2) self.assertTrue(isinstance(cg.edge[0][1].smembership, np.ndarray)) # Perform the symmetry check cg.symmetry_checks() # Perform the ratio check cg.ratio_checks(clean_keys=['symmetry'], single=True) # Create fundamental matrix cg.compute_fundamental_matrices(clean_keys = ['symmetry', 'ratio']) for source, destination, edge in cg.edges_iter(data=True): # Perform the symmetry check self.assertIn(edge.masks['symmetry'].sum(), range(200, 400)) # Perform the ratio test self.assertIn(edge.masks['ratio'].sum(), range(200, 300)) # Range needs to be set self.assertIn(edge.masks['fundamental'].sum(), range(200, 300)) # Step: Compute the homographies and apply RANSAC cg.compute_homographies(clean_keys=['symmetry', 'ratio']) cg.compute_fundamental_matrices() # Apply AMNS cg.suppress(k=30, suppression_func=error) Loading