实现流程
# 实现流程
# 计算模型之间的相似变换
输入两个要对齐的模型,输出他们之间的相似变换矩阵alignment
设置RANSAC的一些参数,最大误差,和内点率
找到两个模型之间的公共图片
再提取出两份,reconstruction1 中的
使用RANSAC估算两个images集的相似变换
# RANSAC估算俩堆点云的变换
先初始化一个RANSAC,得到最大迭代次数max_num_trials
# RANSAC过程
, sample_count
=0while
sample_count
选择一组样本,并记录它的内点数
计算外点率
e = 1- number_of_inliers/total_number_of_points
计算最大迭代次数
sample_count += 1
# LO-RANSAC过程
, sample_count
=0while
sample_count
选择一组样本,并记录它的内点数
计算外点率
e = 1- number_of_inliers/total_number_of_points
- 随机采样当前最优模型中的内点,估计新的模型(迭代10次),如果优于当前模型,则更新最优模型
计算最大迭代次数
sample_count += 1
# 开始迭代
- 从俩堆点云中随机采样需要的最少点数X_rand, Y_rand
- 从当前的采样中,估算model
Estimate(X_rand, Y_rand)
- 局部优化
# 计算残差
对于每张图像,确定从一个图像正确投影到另一个图像以及从另一个图像正确投影回来的3D点的比率,考虑给定的对齐方式。残差定义为1减去这个比率,即误差阈值为0.3意味着该图像的70%点必须在给定的最大重投影误差阈值内重新投影。
遍历所有公共图像
遍历该图像中所有的特征点,并且该特征点在图像1和图像2都存在对应的3D点,
num_common_points+1
- 计算双向误差,如果小于最大重投影误差,则
num_inliers+1
- 计算外点率
negative_inlier_ratio = 1- num_inliers/num_common_points
- 如果统计外点率
negative_inlier_ratio < max_residual
,则support.num_inliers+1
- 对比内点数,如果内点数相同,则比较外点率,更新当前最优模型
- 随机采样当前最优模型中的内点,估计新的模型
- 再对比新的模型是不是比上一步的最优模型的内点数更多
- 更新最大迭代次数
- 结束迭代,取出最优模型
# Merge
对比传入的reconstruction,生成common_image_ids
和 missing_image_ids
,将missing_image_ids
中的图像注册到当前的reconstruction中,注册很简单,将它本身的位姿乘以俩reconstruction的相似变换
使用以下两种规则进行点云合并
- 复制非冲突的点云到当前重建中,即那些在当前重建中没有被三角化观测到的点。
- 合并无歧义的tracks,即只将两个重建中的点合并,如果它们有一个一对一的映射。
- 遍历传入的点云中的所有3D点
- 遍历这个3D点的track
- 如果当前这个track在common_imgaes中,加入到old_track中
- 如果当前这个track在missing_images中,加入到new_track中
- 遍历这个3D点的track
- 将3D点添加到当前的reconstruction中
- 如果当前的reconstruction中已经存在这个新添加的3D点,那么将它们合并
# Filter
# 计算重投影误差
如果大于一定重投影误差值,则将该3D点删除
# 图割
# Partition
读取所有的边已经边的内点数,作为权重
Datasets | images | COLMAP | TheiaSfM | LUD | Ours | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Nc | Np | T | Nc | Np | T | Nc | Np | T | Nc | Np | T | ||
数学 | 96 | 53153 | 933523 | 353545 | 53153 | 933523 | 353545 | 53153 | 933523 | 353545 | 53153 | 933523 | 353545 |
数学 | 96 | 53153 | 933523 | 353545 | 53153 | 933523 | 353545 | 53153 | 933523 | 353545 | 53153 | 933523 | 353545 |
英语 | 92 | 53153 | 933523 | 353545 | 53153 | 933523 | 353545 | 53153 | 933523 | 353545 | 53153 | 933523 | 353545 |