【Let It Be Color!——3D重建之纹理重建】03-基于映射的纹理重建算法(下)

举报
景末 发表于 2020/10/27 11:21:01 2020/10/27
【摘要】 1 引言在上一篇博文中,我们大致介绍了纹理重建算法的主要流程,而暂且搁置了对于接缝的处理方法。对于此类基于映射的方法来说,往往会造成相对严重的接缝问题,因此对于接缝的处理往往是研究着力需要解决的。为了弥补接缝,需要调整接缝两侧的区域颜色,以使二者相接近。论文Waechter2014提出了两种接缝处理的方案,分别是全局颜色调整和局部颜色调整,先后执行。本篇将详细介绍这两种颜色调整方法。2 全局...

1 引言

在上一篇博文中,我们大致介绍了纹理重建算法的主要流程,而暂且搁置了对于接缝的处理方法。对于此类基于映射的方法来说,往往会造成相对严重的接缝问题,因此对于接缝的处理往往是研究着力需要解决的。为了弥补接缝,需要调整接缝两侧的区域颜色,以使二者相接近。

论文Waechter2014提出了两种接缝处理的方案,分别是全局颜色调整和局部颜色调整,先后执行。本篇将详细介绍这两种颜色调整方法。

2 全局颜色调整

直观的想,接缝之所以会形成,是因为左右两个patch所映射到的视角图像不同,而同一物体的同一位置在不同视角下的成像受到光线等因素的影响会呈现出不同的颜色,因此将两个视角下的图像拼接在一起时会存在不连续的效果,从而产生了接缝。因此,一种很自然的解决思路就是同时调整左右两个patch对应的像素颜色,使其更接近,以淡化不连续性。

a. Lempitsky2007方案

若记同一顶点在左右两个不同patch下的颜色分别为f_v_left和f_v_right,对应的颜色调整值分别为g_v_left和g_v_right,要使得左右两边调整后的颜色更接近,则相当于优化目标函数:

image.png

然而,另一方面,考虑到如果同一patch中两个相邻顶点的颜色调整值相差过大,则极易导致patch内部的颜色异常,因此还需要约束同一patch的相邻顶点的颜色调整值,也就是优化另一个目标函数:

image.png

综合来看,最终的目标函数就是将两者结合起来:

image.png

为了方便计算,上式可以简化成矩阵形式:

image.png

其中,f表示存储了所有缝隙顶点在左右两个patch上颜色差值的向量,g则表示所有顶点(同一顶点被拆分成左右两个顶点)的颜色调整值向量,AΓ分别表示选择顶点的稀疏矩阵,仅含有0和±1,A用于选择缝隙上的左右顶点,Γ用于选择同一patch的相邻顶点。

最终针对上述目标函数,使用共轭梯度法求解即可。

b. Waechter2014的改进方案

上述的Lempitsky2007方案对于缝隙颜色的运算仅仅依赖于单一顶点颜色,即前述的f_v_left和f_v_right都仅仅表示当前顶点的颜色值,然而视角位姿往往存在非常轻微的配准误差,这会导致两侧patch不能十分准确的对准,此外,不同patch的尺度若相差过大也可能导致其最终在3D上呈现的效果表现不佳。因此,在Waechter2014中,作者提出在计算优化目标函数时,除了需要考虑顶点颜色以外,考虑边的颜色会得到更为鲁棒的结果。

image.png

如上图所示,依照Lempitsky2007的方案,顶点v1的左右两侧的顶点颜色分别为f_v1_left和f_v1_right,而依照Waechter2014的方案,v1的颜色需要考虑到相邻边的颜色,也就是v0v1和v1v2的颜色,而具体的计算方法则如右图对边界颜色加权求和,v1处的权重为1,v0和v2处的颜色权重则为0,从而最终得到v1处的左右两个patch的加权平均颜色,并以此代替原方案中v1自身的颜色。

3 局部颜色调整

以上方法会将整个网格的所有缝隙全部纳入到优化目标函数统一考量,最终一次性得到所有顶点的颜色调整值,因此被称为全局颜色调整。然而全局颜色调整后的结果并不十分令人满意,虽然总体上淡化了缝隙,但往往没有办法将所有缝隙全部较好的消除。因此除此之外,还将应用一种局部颜色调整的方法,针对每个patch分别执行,以优化最终结果。

a. Gal2010方案

Gal2010使用泊松融合(Poisson Blending或Poisson Editing)来消除接缝。泊松融合是图像处理领域常用的无缝融合两张图像的方法,其核心思想是利用源图像的梯度信息,结合目标图像的边界信息重新构建图像像素,将两者融合起来。具体原理本文不去赘述,请读者参考泊松融合相关论文或博文。具体在颜色调整中,就是将左右两侧的patch所对应的颜色区域中的一个作为源图像,另一个作为目标图像,来调整目标图像区域的边界像素颜色。

b. Waechter2014的改进方案

由于原来的Gal2010方案对整个patch执行泊松调整,需要消耗大量的计算资源,从而也造成了执行速度的下降。但是考虑到,真正有影响的只有边界附近的像素颜色,因此只对边界处的像素颜色执行调整即可。

image.png

Waechter2014提出的改进方法如图,仅仅计算边界附近的像素带,其中深蓝色的外缘使用两侧patch的平均颜色来代替,红色内缘以内使用目标图像自身的原本颜色不变,淡蓝色的区域则用来构建拉普拉斯方程,计算调整后的颜色值。

4 总结

本文总结了消除边界的具体实现方案,介绍了全局颜色调整和局部颜色调整两种不同的思路,并对方法的来源和改进分别进行了描述。至此,基于映射的纹理重建方法的理论已经介绍完毕,整体上还是有些粗糙,后续若有时间可能会结合代码实现来详细的讲解,当然也会对3D重建技术相关的其他子领域进行理论梳理。

参考文献

[1] Lempitsky V, Ivanov D. Seamless mosaicing of image-based texture maps[C]//2007 IEEE Conference on Computer Vision and Pattern Recognition. IEEE, 2007: 1-6.

[2] Waechter M, Moehrle N, Goesele M. Let there be color! Large-scale texturing of 3D reconstructions[C]//European conference on computer vision. Springer, Cham, 2014: 836-850.

[3] Gal R, Wexler Y, Ofek E, et al. Seamless montage for texturing models[C]//Computer Graphics Forum. Oxford, UK: Blackwell Publishing Ltd, 2010, 29(2): 479-486.

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。