在获取了每个 frame 的相机位姿之后, 使用 COLMAP(一种 MVS 算法) 恢复每个 frame 的深度图
因为数据是从网络上获取的, 包含了一些噪声(motion blur, shadows, reflections, MVS 算法本身的要求(不能有动的物体, 背景不能是后期电脑合成的)等), 需要对 COLMAP 算法获取的深度图进行过滤
定义 depth value 过滤器1, 不符合的像素对应的 depth = 0
- \(D_{MVS}\) 表示使用 COLMAP 算法得到的深度图
\(D_{pp}\) 表示两个 frame 的 motion paralax(该论文首次提出), 通过 FlowNet2.0 计算出整张图的 \(D_{pp}\)
使用公式计算每个 frame 的 normalized error \(\Delta{(p)}\) , 其中 \(p\) 为像素
\[ \Delta(p)={{|D_{MVS}(p)-D_{pp}(p)|}\over{D_{MVS}(p)+D_{pp}(p)}} \]
- 如果 \(\Delta(p)>0.2\) 则 \(p\) 对应的 depth = 0, 意味着该 pixcel 距离我们无限远, 不关心该像素的深度
一张 MVS 的深度图经过第 3 点的过滤器之后, 如果保留的非 0 的个数占总共的比例小于 20% 则不要这个 frame 和对应的深度图
定义过滤器2
- 如果估计出相机内参数的径向畸变系数 \(|k_1|>0.1\) 或者焦距 \(focal\ length \le 0.6\) 或者 \(focal\ length \ge 1.2\) 则去掉该 frame 和对应的深度图
保证视频的帧数至少 30, 宽高比为 16:9, 宽至少为 1600px
对剩下的 frame 和深度图, 采用人工的方法去掉明显错误的 frame
\(I^{r}\) reference image
\(M\) 人的分割图
\(D_{pp}\) non-human regions 的 depth map which estimated from motion parallax w.r.t another view of the scene
- \(D_{pp}\) 需要通过两个 frame 计算, 一个 \(I^{r}\), 另外一个是 \(I^{r}\) , 当确定了 \(I^{r}\) 之后, 使用 Keyframe selection 计算出 \(I^{r}\) 对应的 \(I^{s}\)
- 使用 FlowNet2.0 网络估计出 \(I^{r}\) 和 \(I^{s}\) 的 optical flow field
- 根据两个相机在两个 view 中的相对坐标以及估计出来的 optical flow field 通过 Plane-Plus-Parallax(P+P) 表示
\(C\) confidence map
optional: human keypoint map \(K\)
a full depth map for the entire scene
在输入时, \(C\) 和 \(D_{pp}\) 都没有人的区域, 但是因为 GT 有人的深度信息, 为了匹配上 GT 的 depth 的值, 网络学习人的信息, 优化没有人的区域(\(D_{pp}\))
公式
\[
L_{si}=L_{MSE}+\alpha_1L_{grad}+\alpha_2L_{sm}
\]
\(L_{MSE}\)
\(L_{grad}\)
\(L_{sm}\)
Learning the Depths of Moving People by Watching Frozen
原文:https://www.cnblogs.com/megachen/p/11216076.html