0%

【笔记】基于图像的三维重建——纹理图像生成

本文主要关于深蓝学院系列课程——基于图像的三维重建的笔记。

课程链接 基于图像的三维重建

1、纹理图像的自动创建

1.1、基础知识

纹理贴图: 同一三维模型采用不同纹理图案进行渲染。

image-20230820170629280

纹理坐标: 三维网格中的面片与纹理图像的映射关系。

基本算法流程:

  1. 输入模型
  2. 模型参数化
  3. 纹理图像绘制
  4. 纹理模型

image-20230820170924489

纹理图像的创建方式:

  • 交互软件
  • 自动计算

image-20230820171004533

1.2、纹理图像的自动创建

算法流程:

  1. 视角选择
  2. 纹理坐标的计算
  3. 全局颜色调整
  4. 柏松图像编辑

image-20230820171701402

视角选择:

选择标准:

  • 图像的尺寸
  • 图像的细节丰富程度
  • 图像的可视化
  • 邻域平滑性

数学模型:

  • 将视角选择建模成多标签的分配问题:为每一个三角形分配一个标签(视角);
  • 将网格上建立 MRF 随机场,每个面片代表随机场的一个顶点;
  • 能量函数分为数据项 $E_{data}$ 和平滑项 $E_{smooth}$

数据项:

  • 图像质量:
    • 纹理细节:投影三角形的平均梯度;
    • 尺度:投影三角形的面积。
  • 可视性:

image-20230820172852183

平滑项:通过保持邻域的平滑性使得相邻三角形有相同的视角,从而可以减少缝隙为后续的处理提供便利。

MRF 视角选择常用优化方法:

  • $\alpha - expansion$
  • $\alpha-\beta \quad swap$

顶点处的视角标签:

视角选择是以 facet 为优化对象,边界上的 Vertex 会具有所有相邻 facet 的标签,即具有多个纹理坐标。

image-20230820173421023

纹理坐标的计算:

  • 投影到对应的图像上,街区最小包围盒范围内的图像作为纹理图像;

  • 投影的坐标归一化后作为纹理坐标;

image-20230820173613701

全局颜色调整:

问题引入:由于不同视角间存在相机曝光或者光照差异导致不同, Texture Patch 边界处存在明显缝隙。

image-20230820173751619

解决思路:每个像素添加一个颜色调整量使得:

  • 缝隙处的颜色差异尽量小;
  • Patch 内部相邻像素的调整尽量近似。

参数量爆炸问题:

  • 每个像素对应一个参数,使得整体参数量过大,计算量太大?
  • 解决:仅考虑顶点处的色彩调整量
    • 首先为每个顶点 $v_i$ ,添加一个调整量 $g_i$ ;
    • 通过插值的方式得到每个像素的调整值

image-20230820174220901

缝隙处顶点的调整量定义问题:

对缝隙处的顶点进行拆分,假设缝隙上的顶点 $v_i$ 的视角标签为 $\boldsymbol{l}_{i}=\{l_{i}^{0},l_{i}^{1},…l_{i}^{n_{v_{i}}-1}\},n_{v_{i}}$ 为标签个数,则顶点 $v_i$ 将被分为 $n_{v_i}$ 个顶点。

相应的颜色调整量 $g_i$ :

变量总个数:

函数能量定义为:$f_{i}^{l_{i}^{j}}$ 表示 $v_i$ 在视角 $l_{i}^j$ 中的颜色

image-20230820175024165

建模后的能量函数一般为 稀疏线性方程 ,针对大规模的线性稀疏方程可以采用 **共轭梯度法(Conjugate Gradient)进行优化。

柏松图像编辑:

问题引入:对于缝隙比较严重的区域,全局颜色调整并不能保证完全去除缝隙,还需要进一步处理。

image-20230820193014328

算法原理:

  • 边界上的像素值与背景图像相同;
  • 前景区域内的梯度与引导梯度场相同。

数学模型:

散度计算:

image-20230820193455794

能量函数通过构建线性系统进行求解:

image-20230820193532145

加速策略:

  • 进行全局颜色调整之后,只需要在缝隙处进行泊松编辑即可;
  • 可以通过控制内部区域的范围,(如由当前边界往前景区域扩充3个像素的作为前景进行计算),从而减少线性系统的规模。

image-20230820193629111

OBJ 文件:

image-20230820193735117

2、基于光度一致性的网格细节优化

离散网格上定义能量函数:

每个顶点的梯度相当于 $1-ring$ 范围内所有点的梯度的加权和。

image-20230820201808554

基于 surface 的光度一致性的度量:

image-20230820202701002

  • $h(I,J)(x_{i})$ 表示在图像 $I$ 和 $J$ 之间在像素 $x_i$ 处的光度一致性;
  • $I_{ij}^{S}=I_{j}\circ\prod_{j}\circ\prod_{i}^{-1}$ 表示将图像 $I_j$ 通过曲面 $S$ 重投影到图像 $I_i$ 上;
  • $\Omega_{ij}^{\mathcal{S}}$ 表示重投影的有效区域;
  • $\prod_i$ 和 $\prod_i^{-1}$ 分别表示第 $i$ 帧图像的投影和逆投影。
  • 其中 $\mathrm{d}x_i=-\mathbf{N}^T\mathbf{d}_i\mathrm{d}x/z_i^3$

得到:

根据$\mathrm{d}x_i=-\mathbf{N}^T\mathbf{d}_i\mathrm{d}x/z_i^3$ :

保持 surface 本身的平滑性(对曲率进行约束):

得到最终梯度:

image-20230820203245661