MVS深度图估计之后,需要融合成点云提交给benchmark来评测,而融合方式和实现版本多种多样,参数也丰俭由人,所以一直是trick高发区。今天来详解一下其中的dypcd融合。
该方法最初应该是由D2HC-RMVSNet提出,这篇文章是ECCV 2020的spotlight。该方法在Tanks and Temples上效果不错,后续逐渐被广泛使用。
这个融合主要有两个函数,一个是filter_depth,一个是check_geometric_consistency。本文会省去读取深度图保存点云等操作的解读,主要讲每个超参数被如何使用,它们怎样影响到点云融合结果。
这套融合方法,细究之下,其实有这些参数:
- s,指从几开始迭代
- e,指迭代到几结束
- dist_base绝对距离误差
- rel_diff_base相对距离误差
filter_depth
读取深度图,但是不是所有pixel都valid,需要判断超过conf置信度的才使用,所以我们首先有这么个光度一致性的mask。
confidence = read_pfm(os.path.join(out_folder, 'confidence/{:0>8}.pfm'.format(ref_view)))[0]
photo_mask = confidence > args.conf
接下来要有几何一致性了。
# compute the geometric mask
geo_mask_sum = 0
dy_range = e
geo_mask_sums = [0]