论文拜读:大规模3D纹理重建Let There Be Color

论文题目:Let There Be Color! Large-Scale Texturing of 3D Reconstructions

  • 发表于ECCV-2014,第一个用于大规模真实3D重建的综合纹理框架
  • 相关的效率改进有:Efficient convex optimization-based texture mapping for large-scale 3D scene reconstruction(2021)

1 挑战

  • 图像规模 image scale
  • 失焦模糊 (out-of-focus) blur
  • 曝光变化 exposure variation
  • 遮挡 occluders (e.g., moving plants or pedestrians)

2 Texture两步走

2.1 第一步:View Selection

分为blend multiple views per face和 texture each face with
exactly one view:

  • 基于融合的方法可能会因为相机位姿或重建点的误差而造成重影和接缝,另一方面混合时会造成图像模糊、质量变低。一些研究围绕混合权重展开。
  • 基于映射的方法主要使用pairwise Markov random field,以此评估纹理视图的质量和接缝处的平滑度。

2.2 第二步:Color Ajustment

选择视图后,由于曝光和照明差异,甚至不同的相机响应曲线,生成的纹理面片可能具有强烈的颜色不连续性

  • 因此,需要对相邻纹理面片进行测光调整,以便其接缝变得不那么明显。

分为local和global的方法:

  • 图中间Velho的local方法通过将接缝处的颜色设置为左右面片的平均值来进行局部调整。然后,他们使用热扩散来实现向该平均值的平滑颜色过渡,从而显著地使边界处的面片1和3变亮。
  • 图右侧Lempitsky计算global最优亮度校正项,这些项被添加到顶点亮度中,并受到两个直观的约束
    • 调整后接缝处的亮度差应该很小
    • 纹理面片内调整的导数应该很小。

论文拜读:大规模3D纹理重建Let There Be Color_第1张图片

3 本文方法的理论基础

3.1 输入

一组图片、经过SFM重建场景几何体,并经过三角网格化的后处理。

  • SFM解算的相机位姿可能有误差
  • 重建的几何结构可能不能良好表征真实场景
  • 图像包含强光、曝光和比例差异、还有未构建的遮挡物(如行人)

3.2 马尔可夫随机场(Markov random field)来selection

采用Lempitsky, V., Ivanov, D.: Seamless mosaicing of image-based texture maps. In:CVPR (2007) 的基本思路,使用一个pairwise MRF来确定每个待渲染面片最合适的输入视角l:
在这里插入图片描述

  • 等式右侧的data term表示视图对面片纹理贴图的合适度
  • 第二项smmoth term则是面片接缝可见性的平滑度
  • 作者使用 graph cuts and alpha expansion解算上式

3.2.1 data term

①使用观察方向和面法线之间的夹角作为数据项(也就是尽量选择正视图)

  • 忽视了接近程度、分辨率和离焦模糊的问题

②将面片反投影到视图的大小作为数据项(隐含了图像接近度、角度和图像分辨率),类似的做法还有混合权重视图

  • 无法解决失焦模糊问题,可能特写镜头中物体有较大的投影面积,但是纹理却是模糊的

③作者将面片投影上的图像梯度作为数据项,如果投影面积较大(具有高分辨率的近正交图像)或梯度幅度较大(聚焦图像),则该项较大。

3.2.2 smooth term

①有人引入了x、y两个额外的平移自由度来最小化接缝可见性

  • 使得渲染与输入图像不能很好的对应
  • 计算复杂性增加

②CVPR2007使用了面片与面片接缝处的误差积分来表示平滑性(积分越小平滑度越高)

  • 接缝处的判断依赖于精确的位姿和3D网格,由于误差的存在可能真实的接缝有偏移,导致计算错误
  • 计算量大

③作者使用了简单的相邻面片视图标签是否相等来判断,同视图则为1,反之0
在这里插入图片描述

3.3 color ajustment by left and right

从MRF获得面片对应的视图标签后,调整面片的颜色。

一个面片是由三个顶点构成的。

  • 理论上这三个顶点属于本面片
  • 但实际上它是本面片与相邻面片的交汇点,所以也可以属于相邻面片

由于相邻面片有共享顶点, 所以,可以将共享顶点看作两个顶点

  • 属于接缝左侧面片的顶点vleft和属于接缝右侧面片的顶点vright
  • 在color ajustment前,vleft和vright都可以在对应面片的对应label中获取对应的颜色

调整方法就是对每一个面片加一个颜色调整值gv,可以通过最小化下式获得:
在这里插入图片描述

  • 相邻面片如果用的是一个视图label,它们会组成一个pach简化计算
  • 第一项确保接缝左侧(fvleft+gvleft)和右侧(fvright+gvright)的调整颜色尽可能相似
  • 第二项最小化同一纹理面片内相邻顶点之间的调整差异
    • 这有利于在纹理面片中进行尽可能渐进的调整
  • 在找到所有顶点的最佳gv后,使用重心坐标从其周围顶点的 gv插值每个texel的校正
  • 最后,将校正添加到输入图像中,将纹理paches打包到纹理图谱(texture atlases)中,并将纹理坐标附着到顶点

4 Large-Scale Texturing Approach

4.1 预处理

初始面片(face)对应所有视图(view), 是冗余的

  • 使用背面剔除,视图方向背向面片的被筛掉
  • 使用视锥剔除,视图视场内无面片的被筛掉

4.2 view selection

设计data term、smooth term,并引入了Photo-Consistency Check

4.2.1 data term在这里插入图片描述

计算梯度大小∇

  • 使用Sobel算子计算面片Fi投影区域梯度
  • 对Fi的投影区域φ(Fi,li)内的所有像素梯度求和
  • 如果投影包含少于一个像素,在投影的质心处采样梯度大小,并将其与投影区域相乘

4.2.2 Photo-Consistency Check

上面data term倾向于纹理清晰的视图,但是没有考虑遮挡的影响(通常遮挡的梯度都挺大的),为避免这种情况,基于大多数视图都没有遮挡物的假设筛掉遮挡视图:

  • 前人用颜色中位数或平均值来筛
    • 初始视图和筛出来的视图颜色均值方面差别可能很大
  • 作者使用了改进的均值漂移算法:
    论文拜读:大规模3D纹理重建Let There Be Color_第2张图片

4.2.3 smooth term

在这里插入图片描述

4.3 color ajustment

先进行全局优化获得颜色调整值gv,再使用Possion editing局部调整

利用公式二全局优化存在的问题:

  • 不可避免的配准误差,顶点并非可以投影到期望的位置
  • If both images have a different scale the looked up pixels span a different footprint in 3D. (怎么理解呢

针对上述问题,使用Color Lookup Support Region,不仅在顶点投影处查找顶点的颜色值,而且沿着所有相邻接缝边查找,从而缓解了此问题:
论文拜读:大规模3D纹理重建Let There Be Color_第3张图片
即,利用公式三全局优化color:
在这里插入图片描述

  • 使用Eigen’s conjugate gradient
    (CG)求解,终止条件为在这里插入图片描述

4.4 poission editing

论文拜读:大规模3D纹理重建Let There Be Color_第4张图片
将面片的泊松编辑限制为20像素宽的边界条(如图中的浅蓝色所示)。
我们使用该条带的外缘(深蓝色)和内缘(红色)作为泊松方程边界条件:

  • 将每个外缘像素的值固定为指定给面片的图像和指定给相邻面片的图像中像素颜色的平均值
  • 每个内边缘像素的值固定为其当前颜色
  • 如果补片太小,忽略内缘

泊松方程的引导场是条带的拉普拉斯函数

  • 对于所有面片,使用Eigen的SparseLU分解并行求解得到的线性系统
  • 对于每个面片,只计算一次因式分解,并将其用于所有颜色通道,因为系统的矩阵保持不变
  • 仅调整条带比调整整个面片更节省时间和内存
  • 还要注意的是,不混合两幅图像的拉普拉斯算子,因此仍然避免混合。

耗时

论文拜读:大规模3D纹理重建Let There Be Color_第5张图片

你可能感兴趣的:(自动驾驶与三维重建,文献拜读,3d,计算机视觉,人工智能)