我们的方法由三个简单部分组成:关键点匹配、运动恢复结构和后处理。我将简要解释每个部分,重点说明与基线方法的差异。
关键点检测与匹配
我们采用了一种将关键点提取和匹配分开进行的方法,而不是能够跨多张图像共享3D模型点的端到端匹配方法。最终,我们只使用了KeyNetAffNetHardNet,但如果我们有更多时间,我们希望能将其与基于SuperPoint的方法进行集成。
通过进行下面列出的简单更改,我们可以提高分数。
- 增加关键点数量(2048→2048*4)。
- 从不同尺寸的调整后的图像中提取关键点。
- 使用代码中编写的adalam和Orinet算法。
- 同时使用基础矩阵和单应性矩阵,并合并两者的结果,以根据几何特征缩小匹配范围。
- 对每对图像的特征点匹配设置上限,以降低3D重建的计算复杂度。
运动恢复结构
我们尝试了多个最小匹配数,并采用能够估计最多图像数量的模型作为最终估计结果。然而,当从最大的最小匹配数开始尝试时,如果可估计图像的比例超过了阈值,我们就不再尝试低于该值的任何最小匹配数。
后处理
对于colmap无法估计的图像,我们使用cv2.solvePnPRansac进行估计。