From f1331c6a152c00f6a43a6298ffd398a7711d597f Mon Sep 17 00:00:00 2001 From: elektrokokke Date: Fri, 23 Jul 2021 16:36:02 +0200 Subject: [PATCH] Integration of AprilTag library according to issue #1179 and AliceVision pull request #950 (#1180) * According to Meshroom issue #1179 (https://github.com/alicevision/meshroom/issues/1179), add the describer type "tag16h5" to the following modules: - ConvertSfmFormat (e.g., to be able to export the 3D AprilTag positions in a human-readable format as .sfm, or to see only the AprilTag marker positions in the 3D view via .abc) - FeatureExtraction (to be able to detect AprilTag markers from the tag16h5 family) - FeatureMatching (to be able to match AprilTag markers) - SfmTransform (to be able to use AprilTag markers, e.g., for the auto_from_markers transform) - StructureFromMotion (to be able to compute the 3D positions of AprilTag markers) * Added a new input to sfmTransform: markerDistances, which is a pair of marker IDs associated with the distance between them. Added a corresponding new transform: from_marker_distances, which scales the model according to the given distances between pairs of markers. Added another transform: auto_from_markers, which uses the existing markers parameter (ignoring their x,y,z positions) and applies the auto_from_... function only based on these given markers. The latter transform can, e.g., be used to align a set of markers with the ground plane. * Revert "Added a new input to sfmTransform: markerDistances, which is a pair of marker IDs associated with the distance between them." This reverts commit ed87c68f39b9f144c0a424e1aafc02135b70ab7d. Co-authored-by: jarne Co-authored-by: Fabien Castan --- meshroom/nodes/aliceVision/ConvertSfMFormat.py | 2 +- meshroom/nodes/aliceVision/FeatureExtraction.py | 2 +- meshroom/nodes/aliceVision/FeatureMatching.py | 2 +- meshroom/nodes/aliceVision/SfMTransform.py | 2 +- meshroom/nodes/aliceVision/StructureFromMotion.py | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/meshroom/nodes/aliceVision/ConvertSfMFormat.py b/meshroom/nodes/aliceVision/ConvertSfMFormat.py index a5c71aa7..1c859ea3 100644 --- a/meshroom/nodes/aliceVision/ConvertSfMFormat.py +++ b/meshroom/nodes/aliceVision/ConvertSfMFormat.py @@ -36,7 +36,7 @@ It can also be used to remove specific parts of from an SfM scene (like filter a label='Describer Types', description='Describer types to keep.', value=['dspsift'], - values=['sift', 'sift_float', 'sift_upright', 'dspsift', 'akaze', 'akaze_liop', 'akaze_mldb', 'cctag3', 'cctag4', 'sift_ocv', 'akaze_ocv', 'unknown'], + values=['sift', 'sift_float', 'sift_upright', 'dspsift', 'akaze', 'akaze_liop', 'akaze_mldb', 'cctag3', 'cctag4', 'sift_ocv', 'akaze_ocv', 'tag16h5', 'unknown'], exclusive=False, uid=[0], joinChar=',', diff --git a/meshroom/nodes/aliceVision/FeatureExtraction.py b/meshroom/nodes/aliceVision/FeatureExtraction.py index 5bb38e06..b05b21a3 100644 --- a/meshroom/nodes/aliceVision/FeatureExtraction.py +++ b/meshroom/nodes/aliceVision/FeatureExtraction.py @@ -50,7 +50,7 @@ It is robust to motion-blur, depth-of-field, occlusion. Be careful to have enoug label='Describer Types', description='Describer types used to describe an image.', value=['dspsift'], - values=['sift', 'sift_float', 'sift_upright', 'dspsift', 'akaze', 'akaze_liop', 'akaze_mldb', 'cctag3', 'cctag4', 'sift_ocv', 'akaze_ocv'], + values=['sift', 'sift_float', 'sift_upright', 'dspsift', 'akaze', 'akaze_liop', 'akaze_mldb', 'cctag3', 'cctag4', 'sift_ocv', 'akaze_ocv', 'tag16h5'], exclusive=False, uid=[0], joinChar=',', diff --git a/meshroom/nodes/aliceVision/FeatureMatching.py b/meshroom/nodes/aliceVision/FeatureMatching.py index bef82041..fdd4f634 100644 --- a/meshroom/nodes/aliceVision/FeatureMatching.py +++ b/meshroom/nodes/aliceVision/FeatureMatching.py @@ -64,7 +64,7 @@ then it checks the number of features that validates this model and iterate thro label='Describer Types', description='Describer types used to describe an image.', value=['dspsift'], - values=['sift', 'sift_float', 'sift_upright', 'dspsift', 'akaze', 'akaze_liop', 'akaze_mldb', 'cctag3', 'cctag4', 'sift_ocv', 'akaze_ocv'], + values=['sift', 'sift_float', 'sift_upright', 'dspsift', 'akaze', 'akaze_liop', 'akaze_mldb', 'cctag3', 'cctag4', 'sift_ocv', 'akaze_ocv', 'tag16h5'], exclusive=False, uid=[0], joinChar=',', diff --git a/meshroom/nodes/aliceVision/SfMTransform.py b/meshroom/nodes/aliceVision/SfMTransform.py index ad602c6d..e8caf7e8 100644 --- a/meshroom/nodes/aliceVision/SfMTransform.py +++ b/meshroom/nodes/aliceVision/SfMTransform.py @@ -132,7 +132,7 @@ The transformation can be based on: label='Landmarks Describer Types', description='Image describer types used to compute the mean of the point cloud. (only for "landmarks" method).', value=['sift', 'dspsift', 'akaze'], - values=['sift', 'sift_float', 'sift_upright', 'dspsift', 'akaze', 'akaze_liop', 'akaze_mldb', 'cctag3', 'cctag4', 'sift_ocv', 'akaze_ocv', 'unknown'], + values=['sift', 'sift_float', 'sift_upright', 'dspsift', 'akaze', 'akaze_liop', 'akaze_mldb', 'cctag3', 'cctag4', 'sift_ocv', 'akaze_ocv', 'tag16h5', 'unknown'], exclusive=False, uid=[0], joinChar=',', diff --git a/meshroom/nodes/aliceVision/StructureFromMotion.py b/meshroom/nodes/aliceVision/StructureFromMotion.py index 09914ac0..d029656d 100644 --- a/meshroom/nodes/aliceVision/StructureFromMotion.py +++ b/meshroom/nodes/aliceVision/StructureFromMotion.py @@ -98,7 +98,7 @@ It iterates like that, adding cameras and triangulating new 2D features into 3D label='Describer Types', description='Describer types used to describe an image.', value=['dspsift'], - values=['sift', 'sift_float', 'sift_upright', 'dspsift', 'akaze', 'akaze_liop', 'akaze_mldb', 'cctag3', 'cctag4', 'sift_ocv', 'akaze_ocv'], + values=['sift', 'sift_float', 'sift_upright', 'dspsift', 'akaze', 'akaze_liop', 'akaze_mldb', 'cctag3', 'cctag4', 'sift_ocv', 'akaze_ocv', 'tag16h5'], exclusive=False, uid=[0], joinChar=',',