纹理图像的生成方法、装置、设备、存储介质及产品转让专利

申请号 : CN202310133949.8

文献号 : CN115830091B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王钦佳乔晨王鹏夏飞王学强

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本申请提供了一种纹理图像的生成方法、装置、电子设备、计算机可读存储介质及计算机程序产品,包括:获取三维模型在初始纹理空间中的初始纹理图像,三维模型的表面包括多个连续的多边形区域;将三维模型的表面在第一纹理空间中进行展开,并确定展开后的各多边形区域的顶点在第一纹理空间中的第一纹理坐标;基于第一纹理坐标,对三维模型的至少一个多边形区域进行区域拉伸,得到区域拉伸后的三维模型;以初始纹理图像为参考,对区域拉伸后的三维模型进行渲染,得到中间纹理图像;获取中间纹理图像与初始纹理图像间的图像差异,并基于图像差异,生成三维模型对应的目标纹理图像。通过本申请,能够提高生成纹理图像的效率和准确度。

权利要求 :

1.一种纹理图像的生成方法,其特征在于,所述方法包括:获取三维模型在初始纹理空间中的初始纹理图像,其中,所述三维模型的表面包括多个连续的多边形区域;

将所述三维模型的表面在第一纹理空间中进行展开,并确定展开后的各所述多边形区域的顶点在所述第一纹理空间中的第一纹理坐标;

基于所述第一纹理坐标,对所述三维模型的至少一个多边形区域进行区域拉伸,得到区域拉伸后的三维模型;

获取所述区域拉伸后的三维模型的各所述顶点在所述第一纹理空间中的第三纹理坐标,并获取各所述顶点在初始纹理空间的第二纹理坐标;

对所述初始纹理图像进行纹理采样,得到各所述第三纹理坐标对应的纹理信息;

对各所述第二纹理坐标进行坐标系转换,得到各所述顶点在标准化设备空间中的标准纹理坐标;

基于所述标准纹理坐标以及所述第三纹理坐标对应的纹理信息,在所述标准化设备空间中,对所述区域拉伸后的三维模型进行渲染,得到中间纹理图像;

获取所述中间纹理图像与所述初始纹理图像间的图像差异,并基于所述图像差异,生成所述三维模型对应的目标纹理图像。

2.如权利要求1所述的方法,其特征在于,所述将所述三维模型的表面在第一纹理空间中进行展开,包括:采用几何拉伸的方式,将所述三维模型的表面在第一纹理空间中进行展开;

其中,所述三维模型的多个所述多边形区域的变化系数相同,所述变化系数,为展开前的多边形区域的大小与展开后的所述多边形区域的大小的比值。

3.如权利要求1所述的方法,其特征在于,所述确定展开后的各所述多边形区域的顶点在所述第一纹理空间中的第一纹理坐标,包括:获取所述三维模型的各所述多边形区域的顶点与所述顶点在所述第一纹理空间中第一纹理坐标的映射关系;

基于所述三维模型的各所述多边形区域的顶点,以及所述映射关系,确定各所述顶点在所述第一纹理空间中的第一纹理坐标。

4.如权利要求1所述的方法,其特征在于,在所述获取所述中间纹理图像与所述初始纹理图像间的图像差异之前,所述方法还包括:对所述中间纹理图像进行图像边缘检测,得到所述中间纹理图像中的初始边界;

获取所述初始边界的掩模;

对所述掩模的边界上的每个像素点,进行多个方向上的颜色填充,得到中间边界;

基于所述中间边界,对所述中间纹理图像的边界进行调整,得到边界调整后的纹理图像;

所述获取所述中间纹理图像与所述初始纹理图像间的图像差异,包括:获取所述初始纹理图像与所述边界调整后的纹理图像间的图像差异。

5.如权利要求1所述的方法,其特征在于,在所述获取所述中间纹理图像与所述初始纹理图像间的图像差异之前,所述方法还包括:在所述第一纹理空间中,获取所述区域拉伸后的三维模型中各所述顶点的第三纹理坐标,并在初始纹理空间中,获取各所述顶点的第二纹理坐标;

对所述中间纹理图像进行采样,得到各所述第二纹理坐标的纹理信息;

基于各所述第三纹理坐标以及各所述第二纹理坐标的纹理信息,对所述区域拉伸后的三维模型进行渲染,得到重建纹理图像;

所述获取所述中间纹理图像与所述初始纹理图像间的图像差异,包括:获取所述重建纹理图像与所述初始纹理图像间的图像差异。

6.如权利要求5所述的方法,其特征在于,所述基于各所述第三纹理坐标以及各所述第二纹理坐标的纹理信息,对所述区域拉伸后的三维模型进行渲染,得到重建纹理图像,包括:对各所述第三纹理坐标进行坐标系转换,得到各所述顶点在标准化设备空间中的标准纹理坐标;

基于所述标准纹理坐标以及各所述第二纹理坐标对应的纹理信息,在所述标准化设备空间中,对所述区域拉伸后的三维模型进行渲染,得到重建纹理图像。

7.如权利要求1所述的方法,其特征在于,在所述获取所述中间纹理图像与所述初始纹理图像间的图像差异之前,所述方法还包括:对各所述第一纹理坐标进行坐标系转换,得到各所述顶点在标准化设备空间中的标准纹理坐标;

基于所述第一纹理坐标,对所述初始纹理图像进行纹理采样,得到各所述第一纹理坐标的纹理信息;

基于所述标准纹理坐标以及所述第一纹理坐标的纹理信息,在所述标准化设备空间中,对所述三维模型进行渲染,得到参考纹理图像;

所述获取所述中间纹理图像与所述初始纹理图像间的图像差异,包括:获取所述中间纹理图像与所述参考纹理图像间的图像差异。

8.如权利要求1所述的方法,其特征在于,所述基于所述图像差异,生成所述三维模型对应的目标纹理图像,包括:获取用于对图像质量进行评价的评估指标;

基于所述图像差异,确定所述评估指标的指标值;

基于所述指标值,生成所述三维模型对应的目标纹理图像。

9.如权利要求8所述的方法,其特征在于,所述基于所述指标值,生成所述三维模型对应的目标纹理图像,包括:获取所述评估指标的预设阈值;

当所述指标值未达到所述预设阈值时,对各所述顶点在所述初始纹理空间中的初始纹理坐标进行迭代更新,直至所述指标值达到所述预设阈值,并将更新后的所述初始纹理坐标作为目标纹理坐标;

基于各所述目标纹理坐标,对所述初始纹理图像进行纹理采样,得到各所述目标纹理坐标对应的纹理信息;

基于各所述目标纹理坐标对应的纹理信息,在所述第一纹理空间中,对所述三维模型进行渲染,得到所述三维模型对应的目标纹理图像。

10.如权利要求9所述的方法,其特征在于,所述评估指标为峰值信噪比,所述基于所述图像差异,确定所述评估指标的指标值,包括:基于所述图像差异,确定所述初始纹理图像中每个像素对应的差异分值;

基于所述差异分值,以及所述初始纹理图像中像素的数量,确定所述峰值信噪比的指标值。

11.一种纹理图像的生成装置,其特征在于,所述装置包括:获取模块,用于获取三维模型在初始纹理空间中的初始纹理图像,其中,所述三维模型的表面包括多个连续的多边形区域;

展开模块,用于将所述三维模型的表面在第一纹理空间中进行展开,并确定展开后的各所述多边形区域的顶点在所述第一纹理空间中的第一纹理坐标;

区域拉伸模块,用于基于所述第一纹理坐标,对所述三维模型的至少一个多边形区域进行区域拉伸,得到区域拉伸后的三维模型;

渲染模块,用于获取所述区域拉伸后的三维模型的各所述顶点在所述第一纹理空间中的第三纹理坐标,并获取各所述顶点在初始纹理空间的第二纹理坐标;对所述初始纹理图像进行纹理采样,得到各所述第三纹理坐标对应的纹理信息;对各所述第二纹理坐标进行坐标系转换,得到各所述顶点在标准化设备空间中的标准纹理坐标;基于所述标准纹理坐标以及所述第三纹理坐标对应的纹理信息,在所述标准化设备空间中,对所述区域拉伸后的三维模型进行渲染,得到中间纹理图像;

生成模块,用于获取所述中间纹理图像与所述初始纹理图像间的图像差异,并基于所述图像差异,生成所述三维模型对应的目标纹理图像。

12.一种电子设备,其特征在于,包括:

存储器,用于存储可执行指令;

处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至10任一项所述的纹理图像的生成方法。

13.一种计算机可读存储介质,存储有计算机可执行指令,其特征在于,所述计算机可执行指令被处理器执行时,实现权利要求1至10任一项所述的纹理图像的生成方法。

说明书 :

纹理图像的生成方法、装置、设备、存储介质及产品

技术领域

[0001] 本申请涉及计算机图形学领域,尤其涉及一种纹理图像的生成方法、装置、电子设备、计算机可读存储介质以及计算机程序产品。

背景技术

[0002] 纹理展开是图形研究和行业应用中一个热门的方向,受到广泛的关注。纹理展开需要将三维模型的表面映射到一个二维的平面中,在各个三维建模软件中作为基本功能提供给用户。
[0003] 相关技术中,基于三维建模软件的纹理展开结果没有考虑实际纹理贴图的区块信号,使得图像空间利用率低,纹理图像的生成效率低、准确性差。

发明内容

[0004] 本申请实施例提供一种纹理图像的生成方法、装置、电子设备、计算机可读存储介质以及计算机程序产品,能够提高生成纹理图像的效率和准确度,节约相关的存储空间以及计算资源。
[0005] 本申请实施例的技术方案是这样实现的:
[0006] 本申请实施例提供一种纹理图像的生成方法,包括:
[0007] 获取三维模型在初始纹理空间中的初始纹理图像,其中,所述三维模型的表面包括多个连续的多边形区域;
[0008] 将所述三维模型的表面在第一纹理空间中进行展开,并确定展开后的各所述多边形区域的顶点在所述第一纹理空间中的第一纹理坐标;
[0009] 基于所述第一纹理坐标,对所述三维模型的至少一个多边形区域进行区域拉伸,得到区域拉伸后的三维模型;
[0010] 以所述初始纹理图像为参考,对所述区域拉伸后的三维模型进行渲染,得到中间纹理图像;
[0011] 获取所述中间纹理图像与所述初始纹理图像间的图像差异,并基于所述图像差异,生成所述三维模型对应的目标纹理图像。
[0012] 本申请实施例提供一种纹理图像的生成装置,包括:
[0013] 获取模块,用于获取三维模型在初始纹理空间中的初始纹理图像,其中,所述三维模型的表面包括多个连续的多边形区域;
[0014] 展开模块,用于将所述三维模型的表面在第一纹理空间中进行展开,并确定展开后的各所述多边形区域的顶点在所述第一纹理空间中的第一纹理坐标;
[0015] 区域拉伸模块,用于基于所述第一纹理坐标,对所述三维模型的至少一个多边形区域进行区域拉伸,得到区域拉伸后的三维模型;
[0016] 渲染模块,用于以所述初始纹理图像为参考,对所述区域拉伸后的三维模型进行渲染,得到中间纹理图像;
[0017] 生成模块,用于获取所述中间纹理图像与所述初始纹理图像间的图像差异,并基于所述图像差异,生成所述三维模型对应的目标纹理图像。
[0018] 本申请实施例提供一种电子设备,包括:
[0019] 存储器,用于存储可执行指令;
[0020] 处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的纹理图像的生成方法。
[0021] 本申请实施例提供一种计算机可读存储介质,其中存储有计算机可执行指令,当计算机可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的纹理图像的生成方法。
[0022] 本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序或计算机可执行指令,该计算机程序或计算机可执行指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机可执行指令,处理器执行该计算机可执行指令,使得该电子设备执行本申请实施例提供的纹理图像的生成方法。
[0023] 本申请实施例具有以下有益效果:
[0024] 获取三维模型在初始纹理空间中的初始纹理图像,三维模型的表面包括多个连续的多边形区域;将三维模型的表面在第一纹理空间中进行展开,并确定展开后的各多边形区域的顶点在第一纹理空间中的第一纹理坐标;基于第一纹理坐标,对三维模型的至少一个多边形区域进行区域拉伸,得到区域拉伸后的三维模型;以初始纹理图像为参考,对区域拉伸后的三维模型进行渲染,得到中间纹理图像;获取中间纹理图像与初始纹理图像间的图像差异,并基于图像差异,生成三维模型对应的目标纹理图像。通过本申请,能够提高生成纹理图像的效率和准确度,节约相关的存储空间以及计算资源。

附图说明

[0025] 图1是本申请实施例提供的纹理图像的生成系统100的架构示意图;
[0026] 图2是本申请实施例提供的实施纹理图像的生成方法的电子设备500的结构示意图;
[0027] 图3是本申请实施例提供的纹理图像的生成方法的流程示意图;
[0028] 图4是本申请实施例提供的三维模型的表面示意图;
[0029] 图5是本申请实施例提供的中间纹理图像的生成方法;
[0030] 图6是本申请实施例提供的针对中间纹理图像的后处理方法流程图;
[0031] 图7A是本申请实施例提供的重建纹理图像的过程方法流程图;
[0032] 图7B是本申请实施例提供的重建纹理图像的具体实现过程图;
[0033] 图8是本申请实施例提供的参考纹理图像的生成过程示意图;
[0034] 图9是本申请实施例提供的图像差异的确定方式示意图;
[0035] 图10是本申请实施例提供的目标纹理图像的生成方式示意图;
[0036] 图11是本申请实施例提供的纹理学习过程的图表示意图;
[0037] 图12是本申请实施例提供的三维模型的纹理图像的生成过程结构图;
[0038] 图13是本申请实施例提供的基于可微渲染的纹理图像的生成方法流程图;
[0039] 图14是本申请实施例提供的纹理贴图示意图;
[0040] 图15是本申请实施例提供的拉伸贴图示意图;
[0041] 图16是本申请实施例提供的针对拉伸贴图的后处理阶段的示例图。

具体实施方式

[0042] 为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
[0043] 在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
[0044] 在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
[0045] 除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
[0046] 对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
[0047] 1)三维模型:三维模型是几何空间中物体的多边形表示,通常用计算机或其它设备进行显示。显示的物体可以是现实世界的实体,也可以是虚构的物体。三维模型通常使用三维建模工具生成,三维模型可以使用纹理进行覆盖,其中,纹理是一张二维图像,纹理可以让三维模型更加细致并且看起来更加真实。
[0048] 2)纹理展开:将三维模型的表面映射到一个二维的平面中,在各个三维建模软件中作为基本功能提供给用户,其原理通常是基于几何拉伸的纹理展开,在这个基础上对纹理图块的结构和接缝进行优化。其中,几何拉伸,是一种纹理展开方式,其纹理空间三角形大小与几何空间三角形大小呈正比例关系。
[0049] 3)纹理坐标:指三维模型的表面进行纹理展开之后映射到二维平面图形中的坐标。用于定义纹理坐标所对应的纹理坐标系,称为纹理空间,纹理空间又称为UV空间,U对应2维笛卡尔坐标的x轴,V对应y轴。纹理坐标是UV空间中与三维模型的表面的顶点相关联的点。由于纹理坐标范围都是[0,1],因此纹理坐标是介于0到1之间的一个浮点数,采用纹理坐标乘以纹理的高度或宽度,就可以得到顶点在纹理上对应的纹理单元位置。例如,存在一张分辨率为320×200的纹理(纹理可以是任何一张二维图像),即纹理宽度是320,纹理高度是200,对于纹理坐标[0.5,0.1]在纹理中的纹理单元(可理解为像素)位置为(160,20)即(0.5×320 = 160 和 0.1×200 = 20)。可以提供为物体应用纹理时所需要的位置信息,UV作为标记定位点,把纹理图像(也称纹理贴图文件)上的像素点与三维模型表面的顶点相对应,有助于将纹理图像精准映射到三维模型的表面。
[0050] 4)图形处理单元(GPU,Graphics Processing Unit):又称显示核心、视觉处理器、显示芯片,是一种专门在个人计算机、游戏主机和移动设备(比如平板电脑、智能手机等)上做图像和图形相关运算工作的微处理器。
[0051] 5)渲染管线:在GPU中运行的图形渲染流程,包括顶点着色器、光栅化、像素着色器等。通过在着色器中编写代码能够灵活控制GPU对渲染组件进行绘制渲染。
[0052] 6)顶点着色器:GPU渲染管线的一个必选环节,顶点着色器对应的程序会根据代码将三维模型的顶点进行逐个顶点计算,并将结果输出到下一个阶段。
[0053] 7)坐标变换:将一个空间坐标系下的坐标变换到另一个空间坐标系的过程,坐标系之间的变换关系用矩阵表示,将矩阵左乘坐标向量,得到的值就是变换后的坐标。
[0054] 8)片段着色器:GPU渲染管线的一个必选环节,片段着色器对应的程序会根据代码将光栅化后的像素进行着色计算,通过测试之后输出到帧缓冲区,完成一次渲染管线流程。
[0055] 9)光栅化:GPU渲染管线的一个不可编码环节,程序自动将顶点着色器或者几何着色器输出的结果装配成三角形并按照配置光栅化成离散像素点,输出到像素着色器。
[0056] 10)像素着色器:GPU渲染管线的一个必选环节,像素着色器对应的程序会根据代码将光栅化后的像素进行着色计算,通过测试之后输出到帧缓冲区,完成一次渲染管线流程。
[0057] 11)标准化设备空间(NDC,Normalized Device Coordinate):又称统一设备空间,与具体设备平台无关的一套三维坐标系,将四维的裁剪坐标系做透视除法之后可以得到。若三维模型的顶点坐标已经在顶点着色器中处理过,三维模型中可见的所有顶点就被转换成标准化设备坐标,标准化设备坐标是一个x、y和z值在‑1.0到1.0的一小段空间。任何落在范围外的坐标都会被丢弃或裁剪,不会显示在图形处理器的显示屏幕上。也就是说,在对三维模型的顶点进行变换时,每个顶点的x,y,z坐标都应该在‑1.0到1.0之间,超出这个坐标范围的顶点都将不可见。通常会自定义一个坐标的范围,之后再在顶点着色器中将这些坐标变换为标准化设备坐标。然后将这些标准化设备坐标传入光栅器(Rasterizer),将它们变换为屏幕上的二维坐标或像素。
[0058] 12)降采样:将图像从较大分辨率向较小分辨率进行采样的过程。
[0059] 13)卷积:将两个函数以一个固定大小进行移动相乘再相加得到第三个函数的运算过程。
[0060] 基于上述对本申请实施例中涉及的名词和术语的解释,下面说明本申请实施例提供的纹理图像的生成系统。参见图1,图1是本申请实施例提供的纹理图像的生成系统100的架构示意图,为实现支撑一个示例性应用,终端(示例性示出了终端400‑1和终端400‑2)通过网络300连接服务器200,网络300可以是广域网或者局域网,又或者是二者的组合,使用无线或有线链路实现数据传输。
[0061] 在一些实施例中,终端(如终端400‑1和终端400‑2),部署有三维模型展示应用,用于向服务器发送三维模型渲染请求,该三维模型渲染请求中携带三维模型的模型文件以及三维模型的初始纹理图像,并接收服务器返回的具有目标分辨率的目标纹理图像,基于相应的目标纹理图像渲染三维模型,并在人机交互界面中显示渲染完成的三维模型。
[0062] 在一些实施例中,服务器200,用于接收终端发送的三维模型渲染请求,并解析该三维模型渲染请求,获取三维模型在初始纹理空间中的初始纹理图像,其中,三维模型的表面包括多个连续的多边形区域;将三维模型的表面在第一纹理空间中进行展开,并确定展开后的各多边形区域的顶点在第一纹理空间中的第一纹理坐标;基于第一纹理坐标,对三维模型的至少一个多边形区域进行区域拉伸,得到区域拉伸后的三维模型;以初始纹理图像为参考,对区域拉伸后的三维模型进行渲染,得到中间纹理图像;获取中间纹理图像与初始纹理图像间的图像差异,并基于图像差异,生成三维模型对应的目标纹理图像。
[0063] 在实际应用中,服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(CDN,Content Delivery Network)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端(如终端400‑1和终端400‑2)可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能电视、智能手表等,但并不局限于此。终端(如终端400‑1和终端400‑2)以及服务器200可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
[0064] 接下来对实施本申请实施例提供的纹理图像的生成方法的电子设备进行说明。参见图2,图2是本申请实施例提供的实施纹理图像的生成方法的电子设备500的结构示意图。电子设备500可以为图1示出的服务器200,电子设备500还可以是具有实现本申请提供的纹理图像的生成方法能力的终端,以电子设备500为图1示出的服务器为例,对实施本申请实施例的纹理图像的生成方法的电子设备进行说明,本申请实施例提供的电子设备500包括:
至少一个处理器510、存储器550、至少一个网络接口520和用户接口530。电子设备500中的各个组件通过总线系统540耦合在一起。可理解,总线系统540用于实现这些组件之间的连接通信。总线系统540除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统540。
[0065] 处理器510可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
[0066] 用户接口530包括使得能够呈现媒体内容的一个或多个输出装置531,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口530还包括一个或多个输入装置532,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
[0067] 存储器550可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器550可选地包括在物理位置上远离处理器510的一个或多个存储设备。
[0068] 存储器550包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器550旨在包括任意适合类型的存储器。
[0069] 在一些实施例中,存储器550能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
[0070] 操作系统551,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;网络通信模块552,用于经由一个或多个(有线或无线)网络接口520到达其他计算设备,示例性的网络接口520包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;呈现模块553,用于经由一个或多个与用户接口530相关联的输出装置531(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);输入处理模块554,用于对一个或多个来自一个或多个输入装置532之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
[0071] 在一些实施例中,本申请实施例提供的纹理图像的生成装置可以采用软件方式实现,图2示出了存储在存储器550中的纹理图像的生成装置555,其可以是程序和插件等形式的软件,包括以下软件模块:获取模块5551、展开模块5552、区域拉伸模块5553、渲染模块5554和生成模块5555,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分,将在下文中说明各个模块的功能。
[0072] 在另一些实施例中,本申请实施例提供的纹理图像的生成装置可以采用软硬件结合的方式实现,作为示例,本申请实施例提供的纹理图像的生成装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的纹理图像的生成方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field‑Programmable Gate Array)或其他电子元件。
[0073] 在一些实施例中,终端或服务器可以通过运行计算机程序来实现本申请实施例提供的纹理图像的生成方法。举例来说,计算机程序可以是操作系统中的原生程序或软件模块;可以是本地(Native)应用程序(APP,Application),即需要在操作系统中安装才能运行的程序,如即时通信APP、网页浏览器APP;也可以是小程序,即只需要下载到浏览器环境中就可以运行的程序;还可以是能够嵌入至任意APP中的小程序。总而言之,上述计算机程序可以是任意形式的应用程序、模块或插件。
[0074] 基于上述对本申请实施例提供的纹理图像的生成系统及电子设备的说明,下面说明本申请实施例提供的纹理图像的生成方法。在实际实施时,不同的图像处理设备通过纹理图像对三维模型进行渲染处理能力不同,通过本申请实施例提供的纹理图像的生成方法,针对具有初始分辨率的初始纹理图像,可以生成与图像处理设备相适配的具有不同目标分辨率的纹理图像,使用相应分辨率的纹理图像对三维模型进行渲染,能够使得到的目标纹理图像不失真,并能够渲染出尽量还原初始纹理图像的质量的渲染结果。
[0075] 本申请实施例提供的纹理图像的生成方法可以由终端或服务器单独实现,或者由终端及服务器协同实现,以由图1中的服务器200单独执行本申请实施例提供的纹理图像的生成方法为例进行说明。参见图3,图3是本申请实施例提供的纹理图像的生成方法的流程示意图,将结合图3示出的步骤进行说明。
[0076] 在步骤101中,服务器获取三维模型在初始纹理空间中的初始纹理图像,三维模型的表面包括多个连续的多边形区域。
[0077] 在实际实施时,三维模型的表面是一个二维图形,该表面包括多个连续的多边形区域,其中,多边形可以是三角形、四边形等凸多边形。每个多边形区域包括多个顶点,顶点至少携带顶点位置、顶点的纹理坐标等信息。为了使三维模型的表面更具真实感,服务器获取用于对三维模型实现纹理映射的初始纹理图像,初始纹理图像具有初始分辨率,初始纹理图像能够保证三维模型的纹理质量,使得渲染后的三维模型在屏幕中的显示效果更真实。同时,对于图像处理能力高的设备,初始分辨率越高,渲染结果的清晰度越高,资源占用率越高,为了在图像清晰度和资源占用率之间取得平衡,通过本申请实施例提供的纹理图像的生成方法,得到初始纹理图像所对应的不同分辨率的纹理图像,使用这些不同分辨率的纹理图像对三维模型的渲染结果尽量还原使用初始纹理图像对三维模型的渲染结果。纹理可以是任何二维图像,用纹理坐标在二维纹理图像(即纹理)上执行一个采样操作,得到一个像素颜色,三维模型的顶点的纹理坐标用于表征从二维纹理图像的哪部分进行采样。使用纹理坐标获取纹理颜色的过程称为采样(或称为纹理采样)。
[0078] 示例性地,参见图4,图4是本申请实施例提供的三维模型的表面示意图。图中编号1示出的三维模型“狗”的表面是由多个连续的三角形区域组成的,三个不共线的顶点可以构成一个三角形。三维模型的存储格式可以包括多种,如.obj文件、wavefront等,可以使用三维图像处理工具加载三维模型。
[0079] 三维空间中的三维模型经过缩放、旋转、平移,最后投影到终端的屏幕上,根据图像采集设备的位置和方位的不同,呈现的形式有多种,但根据纹理坐标,GPU可以保证最终的纹理映射结果是正确的。
[0080] 在步骤102中,将三维模型的表面在第一纹理空间中进行展开,并确定展开后的每个多边形区域的顶点在第一纹理空间中的第一纹理坐标。
[0081] 在实际实施时,服务器采用相应的展开方式将三维模型的表面展开到二维的纹理空间。从不同的视角(如正面视角、侧面视角等)进行展开可以得到三维模型的表面的顶点在不同纹理空间中的不同纹理坐标,如此能够将针对三维模型的渲染过程,转换到二维纹理空间中进行。本申请实施例中针对三维模型的表面进行展开得到的展开结果满足以下条件:位于纹理空间中得到的应该是完全平铺,且顶点以及相应的多边形区域的数量与几何空间中三维模型的表面的顶点和多边形区域的数量相等。并将满足上述条件的纹理空间作为第一纹理空间。
[0082] 在一些实施例中,服务器可以通过以下方式实现三维模型的展开操作:采用几何拉伸的方式,对三维模型的表面在第一纹理空间中进行展开;其中,三维模型的多个多边形区域的变化系数相同,变化系数,为展开前的多边形区域的大小与展开后的多边形区域的大小的比值。
[0083] 在实际实施时,为了便于计算,在整个纹理图像的生成过程中,服务器采用几何拉伸的方式实现三维模型的展开,将三维几何空间中的顶点映射到二维纹理空间后,发生变化的多边形区域的变化系数相同,这里的变化系数,用于指示针对三维空间中三维模型的表面的任一多边形区域,展开前的多边形区域的大小与展开后的多边形区域的大小之间的比值。
[0084] 在一些实施例中,服务器可以通过以下方式确定顶点在第一纹理空间中的第一纹理坐标:服务器获取三维模型的各多边形区域的顶点与顶点在第一纹理空间中第一纹理坐标的映射关系;基于三维模型的各多边形区域的顶点,以及映射关系,确定各顶点在第一纹理空间中的第一纹理坐标。
[0085] 在实际实施时,服务器确定三维模型的顶点与第一纹理空间中第一纹理坐标的映射关系,根据该映射关系,服务器可以将顶点的坐标代入到该映射关系中,从而得到各顶点在第一纹理空间中对应的第一纹理坐标。即通过映射关系可以将三维模型中的每个顶点与二维纹理空间中的纹理坐标一一对应。
[0086] 在步骤103中,基于第一纹理坐标,对三维模型的至少一个多边形区域进行区域拉伸,得到区域拉伸后的三维模型。
[0087] 在实际实施时,通过对多边形区域进行区域拉伸操作,减少多个多边形区域中像素的数量,从而最终实现初始纹理图像的分辨率的降低,减少存储空间和计算资源。由于三维模型的表面中不同多边形区域的区块信号不同,区块信号,用于指示多边形区域内纹理信息的复杂度,当多边形区域纹理信息的复杂度越高,区块信号的信号量越高。在对多边形区域进行区域拉伸时,可以先确定各区域的区块信号的信号量,当信号量到达信号量阈值时,说明该多边形区域内的信息为三维模型的主要部位(如脸部、眼部等)的信息。基于区块信号的信号量的大小,对多边形区域进行的区域拉伸,能够使得拉伸后的区域模型尽量减少重要信息的损失。其中,区域拉伸包括针对多边形区域的平移、缩放等操作。
[0088] 在步骤104中,以初始纹理图像为参考,对区域拉伸后的三维模型进行渲染,得到中间纹理图像。
[0089] 在实际实施时,服务器从初始纹理图像中进行纹理采样,得到与区域拉伸后的三维模型相适配的各顶点的纹理信息,然后根据各顶点的纹理信息,对区域拉伸后的三维模型进行渲染,得到中间纹理图像。需要说明的是,这里的渲染可以基于可微渲染器实现的可微渲染。
[0090] 在一些实施例中,参见图5,图5是本申请实施例提供的中间纹理图像的生成方法,基于图3,步骤104可以步骤1041‑1043实现。
[0091] 步骤1041,服务器获取区域拉伸后的三维模型的各顶点在第一纹理空间中的第三纹理坐标,并获取各顶点在初始纹理空间的第二纹理坐标。
[0092] 在实际实施时,服务器先确定区域拉伸后的三维模型的各顶点在第一纹理空间中的第三纹理坐标,为了便于区域,第一纹理空间采用UV0表示,并确定各顶点在初始纹理空间的第二纹理坐标,初始纹理空间采用UV1表示,针对三维模型的表面的同一个顶点,在第一纹理空间的纹理坐标与第二纹理空间中的纹理坐标不同。
[0093] 步骤1042,对初始纹理图像进行纹理采样,得到各第三纹理坐标对应的纹理信息。
[0094] 在实际实施时,服务器确定各顶点的第三纹理坐标与第二纹理坐标之间的映射关系,并根据第二纹理坐标以及该映射关系,在初始纹理图像中进行纹理采样,得到第一纹理空间中各第三纹理坐标对应纹理信息,纹理信息至少包括颜色信息。
[0095] 步骤1043,对各第二纹理坐标进行坐标系转换,得到各顶点在标准化设备空间中的标准纹理坐标。
[0096] 在实际实施时,服务器通常是在标准化设备空间中实现图像渲染。因此,服务器首先对初始纹理空间的第二纹理图标进行坐标系转换,得到处于标准化纹理空间中的标准纹理坐标。
[0097] 步骤1044,基于标准纹理坐标以及第三纹理坐标对应的纹理信息,在标准化设备空间中,对区域拉伸后的三维模型进行渲染,得到中间纹理图像。
[0098] 在实际实施时,服务器基于每个顶点从初始纹理图像采样得到的纹理信息,在标准化设备空间中,实现针对区域拉伸后的三维模型的渲染操作,得到中间纹理图像。这里需要说明的是,中间纹理图像相对于初始纹理图像而言,是对初始纹理图像进行降采样得到的,因此,中间纹理图像的分辨率低于初始纹理图像的初始分辨率。服务器获取针对中间纹理图像的目标分辨率,基于目标分辨率对三维模型的表面的多个多边形区域进行拉伸,得到与目标分辨率相适配的纹理坐标。如初始分辨率为2048×2048,中间纹理图像的目标分辨率为1024×1024。由于中间纹理图像相当于是对初始纹理图像进行有损压缩得到的,为了保证中间纹理图像中图像损失的最小化,服务器可以通过确定图像损失,对各顶点在初始纹理空间中的纹理坐标进行多次调整,以使得图像损失得到预设的损失阈值。
[0099] 在一些实施例中,在基于中间纹理图像获取图像差异之前,参见图6,图6是本申请实施例提供的针对中间纹理图像的后处理方法流程图,结合图6示出的步骤,进行说明。
[0100] 步骤201,服务器对中间纹理图像进行图像边缘检测,得到中间纹理图像中的初始边界。
[0101] 在实际实施时,服务器对初始纹理图像进行降采样,生成具有目标分辨率的中间纹理图像时,直接针对生成中间纹理图像中的边界进行着色时,往往会使得边界的像素点离散、清晰度较低。服务器通过对中间纹理图像进行图像边缘检测,得到中间纹理图像中的初始边界,通过初始边界能够明显区分中间纹理图像中的前景和背景,在图像渲染过程中,前景中的区块信号的信号量高于背景中的区块信号的信号量。
[0102] 步骤202,获取初始边界的掩模。
[0103] 在实际实施时,服务器进行边界处理时,为了减少计算过程中的计算资源的消耗,可以对中间纹理图像中除边界外的其他区域进行屏蔽处理,即获取初始边界的掩模,也可将掩模称为掩模图像。
[0104] 步骤203,对掩模的边界上的每个像素点进行多个方向上的颜色填充,得到中间边界。
[0105] 示例性地,服务器设定大小为3x3的卷积核Kernel作为八方向模板。其中,八个方向分别为0°、22.5°、45°、67.5°、90°、112.5°、135°和157.5°。设置kernel = [[1,2,1],[2,4,2],[1,2,1]],然后将kernel在上述八个方向上与掩模中的边界进行卷积操作,得到相应的中间边界,此时的中间边界清晰度高,且边界连续不离散。
[0106] 步骤204,基于中间边界,对中间纹理图像的边界进行调整,得到边界调整后的纹理图像。
[0107] 在实际实施时,服务器将中间边界与中间纹理图像中的边界在相同位置的像素点进行加权求和,完成针对中间纹理图像中边界的调整,得到边界调整后的纹理图像,也可看作是针对中间纹理图像中的边界完成多方向单像素的阔边处理。
[0108] 步骤205,获取初始纹理图像与边界调整后的纹理图像间的图像差异。
[0109] 在实际实施时,边界调整后的纹理图像的边界的清晰度高于中间纹理图像,边界调整后的纹理图像的边界的着色准确度高于中间纹理图像,服务器将确定初始纹理图像与中间纹理图像之间的图像差异,更新为确定初始纹理图像与边界调整后的纹理图像间的图像差异,如此,能够基于清晰度高、着色正确的纹理图像,最大限度的减少由于纹理图像中边界的差异所带来的图像损失。服务器首先通过中间纹理图像,重建得到重建纹理图像后,依次确定重建纹理图像与初始纹理图像中相同位置的像素点的差异,并将重建纹理图像中所有像素点的差异作为整个纹理图像的图像差异。
[0110] 在步骤105中,获取中间纹理图像与初始纹理图像间的图像差异,并基于图像差异,生成三维模型对应的目标纹理图像。
[0111] 在实际实施时,服务器通常在相同的纹理空间中,确定分辨率相同的至少两张图像之间的图像差异,图像差异的确定可以是像素级别的:即基于两张图像中相同位置的像素的差异,最终确定两张图像间的图像差异。因此,服务器在得到中间纹理图像后,继续基于中间纹理图像,重建与初始纹理图像的分辨率相同的重建纹理图像,进而确定重建纹理图像与初始纹理图像之间的图像差异。需要说明的是,当初始纹理图像在初始纹理空间中的初始纹理坐标,是通过几何拉伸展开得到的,则可以直接确定重建纹理图像与初始纹理图像之间的图像差异;当初始纹理图像在初始纹理空间中的初始纹理坐标,是通过其他纹理展开方式得到的,则需要对初始纹理图像进行预处理,由于针对三维模型的渲染过程,是在标准化设备空间中进行的,因此,服务器可以将初始纹理图像中的初始纹理坐标映射到标准化设备空间中,渲染得到用于对三维模型进行渲染的参考纹理图像,然后确定参考纹理图像与重建纹理图像之间的图像差异。
[0112] 在一些实施例中,服务器可以通过以下方式确定图像差异:服务器对中间纹理图像进行图像重建,得到重建纹理图像;获取重建纹理图像与初始纹理图像间的图像差异。针对重建纹理图像的过程进行说明,参见图7A,图7A是本申请实施例提供的重建纹理图像的过程方法流程图,结合图7A示出的步骤进行说明。
[0113] 步骤301,服务器在第一纹理空间中,获取区域拉伸后的三维模型的各顶点的第三纹理坐标,以及各顶点在初始纹理空间的第二纹理坐标。
[0114] 在实际实施时,服务器获取区域拉伸后的三维模型的各顶点在第一纹理空间中的纹理坐标,为了与前述第一纹理坐标进行区分,此处,在第一纹理空间中的纹理坐标称为第三纹理坐标,并确定第三纹理坐标在初始纹理空间中相对应的第二纹理坐标,第一纹理空间与初始纹理空间均为二维的空间,可以通过旋转、平移以及缩放等操作,将第一纹理空间中的第三纹理坐标映射到初始纹理空间中的第二纹理坐标。
[0115] 步骤302,对中间纹理图像进行采样,得到每个第二纹理坐标的纹理信息。
[0116] 在实际实施时,服务器基于初始纹理空间中的每个第二纹理坐标,从中间纹理图像中进行纹理采样,得到各第二纹理坐标对应的纹理信息,纹理信息至少包括颜色信息。然后,基于每个第二纹理坐标对应的纹理信息,在标准化设备空间中,对相应的标准纹理坐标进行着色,完成针对区域拉伸后的三维模型的渲染操作,得到相应的重建纹理图像。
[0117] 步骤303,基于各顶点的第三纹理坐标以及各顶点的第二纹理坐标的纹理信息,对区域拉伸后的三维模型进行渲染,得到重建纹理图像。
[0118] 在一些实施例中,参见图7B,图7B是本申请实施例提供的重建纹理图像的具体实现过程图,结合图7B示出的步骤3031‑步骤3032进行说明。
[0119] 步骤3031,服务器对各第三纹理坐标进行坐标系转换,得到各顶点在标准化设备空间中的标准纹理坐标。
[0120] 在实际实施时,服务器针对三维模型的渲染操作是基于标准化设备空间中的标准纹理坐标进行的,即服务器首先将二维的纹理坐标变化为标准化设备空间中的标准纹理坐标,然后将这些标准纹理坐标传入光栅器(Rasterizer)进行光栅化渲染,以将纹理坐标变换为屏幕上的二维坐标或像素。因此,服务器对每个顶点对应的第三纹理坐标进行坐标系转换,得到第三纹理坐标在标准化设备空间中的标准纹理坐标。需要说明的是,在标准化设备空间中,三维模型的每个顶点的x,y,z坐标都在‑1.0到1.0之间,超出这个坐标范围的顶点都将不可见。
[0121] 步骤3032,基于各顶点的标准纹理坐标以及各顶点的第二纹理坐标的纹理信息,在标准化设备空间中,对区域拉伸后的三维模型进行渲染,得到重建纹理图像。
[0122] 在实际实施时,服务器确定第三纹理坐标在初始纹理空间中对应的第二纹理坐标,以及第三纹理坐标在标准化设备空间中对应的标准纹理坐标,如此,便建立了每个顶点的标准纹理坐标与相应的第二纹理坐标的纹理信息之间的关联关系,针对每个标准纹理坐标,服务器查找相应的第二纹理坐标的纹理信息,并基于与标准纹理坐标对应的纹理信息,在标准化设备空间中,对区域拉伸后的三维模型进行渲染,得到重建纹理图像。
[0123] 针对参考纹理图像的生成过程进行说明,在一些实施例中,参见图8,图8是本申请实施例提供的参考纹理图像的生成过程示意图,结合图8示出的步骤进行说明。
[0124] 步骤401,服务器对各第一纹理坐标进行坐标系转换,得到各顶点在标准化设备空间中的标准纹理坐标。
[0125] 在实际实施时,服务器基于三维模型的顶点在标准化设备空间对应的标准纹理坐标,完成针对三维模型的渲染。并且,为了便于计算,服务器是在第一纹理空间中对三维模型的表面进行纹理展开的,因此,在对顶点进行着色之前,服务器可以根据初始纹理图像,以及三维模型各顶点在第一纹理空间中的纹理坐标,生成初始纹理图像对应的参考纹理图像,以保证在纹理图像的生成过程中,都是基于同一个纹理空间中的纹理坐标进行的。
[0126] 步骤402,基于第一纹理坐标,对初始纹理图像进行纹理采样,得到各第一纹理坐标的纹理信息。
[0127] 在实际实施时,服务器针对各顶点在第一纹理空间中的第一纹理坐标,从初始纹理图像中进行纹理采样,得到每个第一纹理坐标对应的纹理信息,纹理信息至少包括颜色信息。
[0128] 步骤403,基于标准纹理坐标以及第一纹理坐标的纹理信息,在标准化设备空间中,对三维模型进行渲染,得到参考纹理图像。
[0129] 在实际实施时,服务器将第一纹理坐标进行坐标系转换得到在标准化设备空间中的标准纹理坐标,然后,服务器针对标准纹理坐标,使用相应的第一纹理坐标的纹理信息,实现针对三维模型的光栅化渲染,得到参考纹理图像。需要说明的是,参考纹理图像与初始纹理图像的大小相同。
[0130] 针对图像差异的确定方式进行说明,在一些实施例中,参见图9,图9是本申请实施例提供的图像差异的确定方式示意图,结合图9示出的步骤进行说明。
[0131] 步骤501,服务器获取用于对图像质量进行评价的评估指标。
[0132] 在实际实施时,获取用于对图像质量进行评价的评估指标,评估指标包括以下至少之一:峰值信噪比、结构相似度等。峰值信噪比(PSNR,Peak Signal to Noise Ration),取值范围为[0,1],PSNR值越大两张图片越相似,完全相同的图像,PSNP=100。结构相似度(SSIM,Structural Similarity),取值范围为[0,1],SSIM值越大,两张图片越相似,完全相同的图像,SSIM=1。
[0133] 步骤502,基于图像差异,确定评估指标的指标值。
[0134] 在实际实施时,服务器确定基于中间纹理图像所生成的重建纹理图像,与初始纹理图像之间的图像差异,并确定用于表征图像差异的预设的评估指标的指标值。
[0135] 在一些实施例中,评估指标可以为峰值信噪比,服务器还可以通过以下方式确定峰值信噪比的指标值:服务器基于图像差异,确定初始纹理图像中每个像素对应的差异分值;基于差异分值,以及初始纹理图像中像素的数量,确定峰值信噪比的指标值。
[0136] 示例性地,以预设的评估指标是图像的峰值信噪比为例,本申请实施例中峰值信噪比的计算公式如下:
[0137]      (1)
[0138] 上述公式用于确定图像 与图像 之间的峰值信噪比PSNR,图像与图像 中像素点的个数相同。其中,n为图像中像素点的个数,i为n个像素点
中的任意一个像素点, 用于表征图像 中第i个像素点的数据,
用于表征图像 中第i个像素点的数据, 为两张图像中第i个像
素点的对应的差异分值。在本申请实施例中,图像 为基于中间纹理图像生成的重建纹理图像,图像 为初始纹理图像或基于初始纹理图像生成的参考纹理图像。
[0139] 步骤503,基于指标值,生成三维模型对应的目标纹理图像。
[0140] 在实际实施时,服务器计算得到评估指标的指标值之后,可以结合评估指标的预设阈值,判断当前评估指标的指标值是否达到预设阈值,若指标值达到预设阈值且只进行了一轮纹理图像的生成过程,则可以直接将初始纹理坐标作为目标纹理坐标,并通过目标纹理坐标,从所述初始纹理图像中进行纹理采样,得到每个目标纹理坐标的纹理信息,纹理信息至少包括颜色信息,然后根据目标纹理坐标的纹理信息,在初始纹理空间中生成用于对三维模型进行渲染的目标纹理图像。需要说明的是,目标纹理图像的目标分辨率低于初始纹理图像的初始分辨率。目标分辨率可以是从配置文件中读取。采用目标纹理图像对三维模型进行渲染,相比于使用初始纹理图像对三维模型进行渲染,能够大大节约服务器的计算资源以及服务器的存储资源。
[0141] 若执行第一轮的纹理图像的生成过程后,评估指标的指标值未达到相应的预设阈值,可以再次进行新一轮的纹理图像的生成过程,针对纹理图像的生成过程的多轮次的迭代过程进行说明。在一些实施例中,参见图10,图10是本申请实施例提供的目标纹理图像的生成方式示意图,结合图10示出的步骤进行说明。
[0142] 步骤5031,服务器获取评估指标的预设阈值。
[0143] 示例性地,服务器可以通过读取配置文件获取评估指标的预设阈值。以图像的峰值信噪比PSNR为例,可以在相关应用的配置文件中设置图像的峰值信息比阈值,PSNR值越大,表示图像的质量越好,一般来说:(1)高于40dB:说明图像质量极好(即非常接近初始纹理图像);(2)30—40dB:通常表示图像质量是好的(即失真可以察觉但可以接受);(3)20—30dB:说明图像质量差;(4)低于20dB:图像质量不可接受。在实际应用中,可以根据服务器的计算资源情况,设置PSNR的预设阈值为30dB或40dB等。
[0144] 步骤5032,当指标值未达到预设阈值时,对各顶点在初始纹理空间中的初始纹理坐标进行迭代更新,直至指标值达到预设阈值,并将更新后的初始纹理坐标作为目标纹理坐标。
[0145] 在实际实施时,服务器可通过对初始纹理空间中的初始纹理坐标进行迭代更新的方式,使得评估指标的指标值达到预设阈值,最后将更新后的初始纹理坐标作为目标纹理坐标。也就是说,为了让评估指标的指标值达到预设阈值,服务器可以多次迭代执行本申请实施例的纹理图像的生成过程,以通过针对初始纹理坐标的多次调整,得到调整后的初始纹理坐标,并基于调整后的初始纹理图标进行图像重建,得到的重建纹理图像与初始纹理图像之间的图像差异所确定的指标值达到预设阈值,此时,将更新后的初始纹理坐标作为目标纹理坐标。
[0146] 步骤5033,基于各目标纹理坐标,对初始纹理图像进行纹理采样,得到各目标纹理坐标对应的纹理信息。
[0147] 在实际实施时,服务器在初始纹理空间中,依据目标纹理坐标,从初始纹理图像中进行纹理采样,得到每个目标纹理坐标的纹理信息,纹理信息至少包括颜色信息。
[0148] 步骤5034,基于各目标纹理坐标对应的纹理信息,在初始纹理空间中,对三维模型进行渲染,得到三维模型对应的目标纹理图像。
[0149] 在实际实施时,服务器根据每个目标纹理坐标的纹理信息,在经过多轮迭代得到的初始纹理空间中,对三维模型进行光栅化渲染,得到目标纹理图像。
[0150] 为了便于理解,针对上述纹理图像的生成过程进行详细说明,服务器确定各顶点在初始纹理空间中的目标纹理坐标,并将基于目标纹理坐标所生成的纹理图像,与初始纹理图像相比,能够使得纹理图像的图像损失最低。在第一轮迭代时,首先,随机设置各顶点在初始纹理空间的纹理坐标的初始值,并不对各顶点关联的多边形区域做拉伸处理的情况下,而是直接通过降采样的方式得到当前轮次中具有目标分辨率的中间纹理图像,然后,针对中间纹理图像进行图像重建,得到与初始纹理图像尺寸相同的重建纹理图像,确定重建纹理图像与初始纹理图像之间的图像差异,并基于图像差异确定相应的评估指标的指标值(指标值可称为机器学习过程中的损失),在指标值未达到预设阈值时,当由于整个纹理图像的生成过程是基于机器学习实现的,整个过程是可微的,且存在梯度,因此,可以通过调整顶点的每个纹理坐标,使得损失下降,使得指标值尽量接近预设阈值。在第二轮迭代过程中,服务器控制初始纹理空间中各顶点的纹理坐标(可记作UV1)在上下左右各个方向上进行移动,此时,当前轮次的UV1相对于上一轮的UV1存在偏移,服务器重新确定本轮迭代中的相应评估指标的指标值,再次反向传播以调整UV1,迭代执行上述过程,直至相应评估指标的指标值达到预设阈值,纹理图像的生成过程完成。实际上就是服务器通过不断调整三维模型的表面的多个顶点在初始纹理空间中的纹理坐标UV1,得到能够使得评估指标的指标值达到预设阈值的目标纹理坐标,并从初始纹理图像中采样与调整后的UV1对应的纹理信息,然后在初始纹理空间中,根据UV1对应的纹理信息,通过光栅化渲染,生成目标纹理图像。
[0151] 应用本申请上述实施例,服务器基于几何拉伸的纹理展开方式展开三维模型的表面,如此,保证纹理展示时保证顶点的完整性,以及多边形区域的大小的稳定性;并在几何拉伸得到的第一纹理空间中执行针对三维模型的多个多边形区域的拉伸操作,得到区域拉伸后的三维模型,然后在初始纹理空间中,确定区域拉伸后的三维模型中各顶点的纹理坐标,并从初始纹理图像中采样纹理坐标的纹理信息,生成中间纹理图像,如此,能够得到具有目标分辨率的纹理图像,减少计算资源和存储资源的占用率;另外,基于中间纹理图像与初始纹理图像之间的图像差异,迭代调整上述区域拉伸后的三维模型中各顶点的纹理坐标,直至图像差异确定的评估指标的指标值达到预设阈值时,最终重建与初始纹理图像间图像差异最小的目标纹理图像,如此,能够提高生成纹理图像的效率和准确度,节约相关的存储空间以及计算资源。
[0152] 下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
[0153] 纹理展示的原理通常是基于几何拉伸的纹理展开,在这个基础上对纹理图块的结构和接缝进行优化。这种纹理展开方法简单直接,但纹理中不同区块的信号频率(即前文中的区块信号的信号量)不一致,为了确保最终渲染结果尽可能不走样,纹理的分辨率需要参考信号频率最高的区块。在对纹理进行降采样时,不同区块的信号损失也不同,较难在清晰度和图像占用内存之间取得平衡。
[0154] 相关技术中,可以通过衡量三维模型渲染时各个三角形由于纹理发生拉伸造成的误差度量,称为度量张量积分,并给出总误差的计算方法,据此可以得到一个相比几何拉伸更好的信号拉伸纹理展开方法,优化行业应用。同时,近年来在最新的图形研究领域中,可微渲染理论方法被提出,通过改写渲染管线使其可微,可以在渲染过程中不断用渲染差距根据微分信息反向传播给渲染参数,用梯度下降的方法由渲染结果反堆渲染输入参数。纹理坐标也是渲染过程中的参数,因此利用可微渲染机器学习进行纹理坐标学习也是一个新的方向。
[0155] 基于三维建模软件的纹理展开结果没有考虑实际纹理贴图的区块信号,使得纹理贴图可能出现不同区块之间的信号差距较大的问题,使得图像空间利用率低。虽然信号拉伸方法解决了一部分这个问题,但在实际项目中,可能存在由于拉伸损失指标与最终渲染结果误差没有被证明为无偏的,造成程序往往不能够很好收敛。
[0156] 纹理展开会影响到最终渲染结果,一般在应用中希望通过相应的纹理展开方法能够得到适用于不同分辨率的贴图(即前文中的纹理贴图),并能够渲染出尽量还原原有质量的结果。于是,用图像的峰值信噪比相比度量张良积分作为渲染误差度量,能够更好地表示不同渲染之间的结果。当可微渲染器上使用图像的峰值信噪比作为收益函数进行机器学习,往往由于将三维空间降维到二维纹理空间上存在大量的信息丢失,使得优化算法的搜索空间过大,且容易造成局部最优解,机器学习无法正常收敛。
[0157] 基于此,本申请实施例提供一种纹理图像的生成方法,该方法的实现过程可概括为:首先,采用几何拉伸的方式,展开三维模型的表面,得到几何纹理空间(即前文中的第一纹理空间)中各顶点的UV0(即三维模型的表面的每个顶点在几何纹理空间中的纹理坐标),后续可将几何纹理空间称为UV0空间,在UV0空间上使用原有UV1(即前文中的初始纹理空间中的纹理坐标,后续的初始纹理空间称为UV1空间)采样原始贴图(即前文中的初始纹理图像)输出渲染结果作为参考贴图(即前文中的参考纹理图像),接着使用可微分渲染器设计一个双层渲染学习结构,对三维模型的UV1和降采样纹理贴图进行机器学习,最后输出在降采样环境下的三维模型纹理展开和对应纹理贴图的优化解。也就是说,使用图像的峰值信噪比作为收益函数,将三维模型的表面基于几何拉伸的纹理展开方式解构到UV0空间(即几何拉伸的纹理空间)中,然后调用可微分渲染器对三维模型进行渲染,直接在二维空间中完成相应的反向传播,不仅能够避免渲染过程中用二维的收益函数向三维的渲染结果中反向传播,而且能够使得纹理展开能够基于信号进行拉伸,且能够通过采用无偏的损失或收益函数,从而带来更精确的优化效果。
[0158] 在一些实施例中,可以通过python脚本程序实现本申请实施例的纹理图像的生成方法,将三维模型的资源打包成.obj文件,与对应的原始贴图(即前文中的初始纹理图像)一同作为资源,通过运行相应的python脚本程序:{python  ./uvoptimize.py  ./model.obj ./texture.png}读取三维模型以及原始贴图。其中,脚本程序中的model.obj为三维模型的资源对应的文件名,texture.png为原始贴图的文件名,之后用于实现本申请实施例提供的纹理图像的生成方法的应用程序,根据输入的三维模型所关联的资源进行机器学习,并输出当前的学习进度和损失率。
[0159] 最后,经过上述应用程序中多轮迭代,生成训练好的三维模型的资源对应的文件以及相应的目标贴图(即前文中的目标纹理图像),同时输出一份学习过程的图表,参见图11,图11是本申请实施例提供的纹理学习过程的图表示意图,图中上半部分描述纹理展开学习过程,横轴为学习迭代次数,纵轴为损失率,其中,图中编号1示出的虚线用于表征为可微渲染器原生渲染的损失率,这个渲染结果也作为对照数据(即前文中的参考纹理图像),而图中编号2示出的虚线用于表征将原始贴图降采样到一半分辨率之后再进行渲染得到的损失率、图中编号3示出的虚线用于表征将原始贴图降采样到四分之一分辨率之后再进行渲染得到的损失率、图中编号4示出的虚线用于表征将原始贴图降采样到八分之一分辨率之后再进行渲染得到的损失率,图中编号5示出的曲线用于表征采用一半分辨率进行纹理学习过程的损失率,图中编号7示出的点对应的值为将学习结果降采样到四分之一损失率,图中编号8示出的点对应的值为将学习结果降采样到八分之一的损失率。
[0160] 接下来,从技术侧说明本申请实施例提供的纹理图像的生成方法,即基于可微渲染器进行三维模型纹理展开学习的过程。其中,整个生成过程实际上是模拟一个三维模型的具有初始分辨率的原始贴图Raw2048(即前文中的初始纹理图像)进行UV1变换拉伸成具有目标分辨率的拉伸贴图Stretch1024(即前文中的中间纹理图像),然后再基于拉伸贴图Stretch1024,在UV1纹理空间中重新渲染得到重建贴图Final2048(即前文中的重建纹理图像)。对上述过程的具体实现方式进行说明。
[0161] 参见图12,图12是本申请实施例提供的三维模型的纹理图像的生成过程结构图,图中示出了纹理图像的生成过程,其中Raw2048为输入的原始贴图,UV0为几何拉伸纹理空间(即前文中的第一纹理空间)中三维模型的表面基于几何拉伸展开得到各顶点的纹理坐标(即前文中的第一纹理坐标),UV1为初始纹理空间中三维模型的各顶点的初始纹理坐标,Render为光栅化方式渲染,Diff‑Render为可微渲染方式,Stretch1024为第一渲染阶段得到的拉伸贴图,Final2048为第二渲染阶段得到的最终渲染结果,这个结果与参考图像Ground‑Truth(即前文中的参考纹理图像)对比可以得到图像的PSNR Loss,然后基于PSNR Loss沿可微渲染流程(图中编号1示出的过程)反向传播至UV1,以对三维模型中的各顶点在初始纹理空间中为纹理坐标UV1进行迭代训练,达到对UV1的优化效果。
[0162] 参见图13,图13是本申请实施例提供的基于可微渲染的纹理图像的生成方法流程图,基于图12,具体的实现过程可由步骤601‑605实现,具体实现过程:
[0163] 步骤601、获取三维模型以及三维模型的原始贴图。
[0164] 在实际实施时,任何三维模型的表面都是二维图形,每个二维图像包括多个多边形区域,其中,多边形可以是三角形、四边形等,例如,参见图4示编号1示出三维模型“狗”,“狗”的表面包括多个三角形区域。针对三维模型采用不同的纹理展示方式进行展开,可以得到不同视角的多个初始纹理图像。纹理展开方式可以包括信号拉伸展开方式、几何拉伸展开方式。而为了能够在相同二维纹理空间中进行图像渲染操作,本申请实施例针对三维模型的纹理展开方式为基于几何拉伸的纹理展开方式。
[0165] 步骤602、基于几何拉伸的纹理展开方式,将三维模型的表面在几何拉伸纹理空间中进行展开,并获取三维模型中各顶点在几何拉伸纹理空间中的纹理坐标。
[0166] 在实际实施时,按照上文的纹理学习结构设计,最终的图像损失是在二维的图像空间中进行,但三维模型渲染成为二维图像的过程涉及到三维模型的几何结构、观测视角、投影关系等影响,可能给纹理学习模型的训练过程带来困难,因此这里选择将三维模型表明的多个三角形按照其几何结构变换到二维平面空间中,使三维模型顶点的切面平行于二维空间平面。针对三维模型的几何拉伸纹理展开恰好满足这一要求,实现方式为:调用三维建模软件,将三维模型根据顶点信息进行几何拉伸的纹理展开,作为三维模型与目标观测视角相对应的在几何纹理空间的纹理坐标UV0。部分模型的纹理坐标本身满足几何拉伸展开,也可以直接作为UV0,提供后续步骤使用。如,参见图4,图中编号1示出的是一个三维模型、以及编号2示出的三维模型基于几何拉伸进行纹理展开的结果。
[0167] 步骤603、在几何拉伸纹理空间中,通过原始贴图,渲染得到参考贴图。
[0168] 在实际实施时,由于原始贴图(即前文中的初始纹理图像)对应的初始纹理空间可能是通过其他纹理展示方式得到的,为了与三维模型的平面的展开结果采用相同的纹理空间,需要对原始贴图进行在几何拉伸纹理空间中的渲染操作,得到参考贴图(即前文中的参考纹理图像)。
[0169] 首先,图像的渲染过程是基于标准化设备空间进行的,由于纹理坐标的取值范围为0到1,而标准化设备空间中坐标的取值范围为‑1到1。因此,需要对三维模型的各顶点的纹理坐标UV0进行坐标系变化,得到在标准化设备空间中的纹理坐标(即前文中的标准纹理坐标),转换方式可以为:Pos = float4 。
[0170] 而在着色器中进行像素着色时,着色的结果是三维模型的各顶点在初始文理空间的纹理坐标即UV1,采样原始贴图,相应的python脚本程序如下:Color = tex2D(MainTex,UV1.xy),其中,MainTex是原始贴图。参见图14,图14是本申请实施例提供的纹理贴图示意图,图中编号1示出的是原始贴图,编号2示出的是参考贴图。
[0171] 步骤604、根据原始贴图、初始纹理空间,构建用于生成具有目标分辨率的纹理图像的机器学习模型。
[0172] 在实际实施时,UV1经过预处理之后进行第一阶段可微渲染,得到拉伸贴图,然后对拉伸贴图进行后处理之后的结果与UV1预处理之后的结果一同进行第二阶段的可微渲染得到目标贴图,按照PSNR的方式结算Loss。学习过程全程可微,这使得最后的Loss能够将微分信息反向传播到UV1,对UV1进行迭代训练。
[0173] 针对UV1的预处理进行说明,机器学习模型待训练的参数UV1是一个纹理坐标,因此在实际的机器学习过程需要一个预处理过程进行限制。纹理坐标的有效范围为0到1,UV1的初始值处于0‑1之间,但是不能保证每次迭代时UV1的值都处于0‑1之间,因此,在使用UV1时,可以对UV1进行预处理,即对UV1进行Clamp到[0,1]区间的操作,得到UV1Post,相应的python脚本程序:UV1Post = 。
[0174] 针对第一阶段可微渲染进行说明,通过第一阶段可微渲染能够将三维模型拉伸采样到二维纹理空间中,实现三维到二维的映射。具体的实现过程:首先按照渲染参考贴图的方式将UV1Post变换到标准化设备空间,得到Pos;接着进行可微渲染,用Pos作为标准化设备空间中的坐标,用UV0采样原始贴图进行着色,输出得到原始贴图的一半分辨率(或其他分辨率)大小的拉伸贴图中,相应的python脚本程序如下:Stretch1024 = DiffRender(Pos,UV0,Raw2048)。参见图15,图15是本申请实施例提供的拉伸贴图示意图,当原始贴图的初始分辨率为2048×2048时,该拉伸贴图的目标分辨率为1024×1024。
[0175] 需要说明的是,当UV1为初始值的时候,Stretch1024类似于Ref2048进行降采样的结果,但在进行迭代学习之后,UV1会发生变化,Stretch1024也会开始进行拉伸变换。
[0176] 针对拉伸贴图的后处理阶段进行说明,由于采样贴图的过程有线性过滤,渲染过程在贴图采样着色时在几何边界时可能出现采样超出区块边界1个像素。由于原始贴图Raw2048本身在贴图边界有做颜色蔓延填充,这里需要将Stretch也做阔边处理,保证后续步骤着色正确。
[0177] 示例性地,参见图16,图16是本申请实施例提供的针对拉伸贴图的后处理阶段的示例图,渲染时可以得到几何的质心坐标,实现光栅化渲染的相应的python脚本程序如下:
[0178] rast_out = dr.rasterize(vbo,ibo),此时rast_out的结果如图16中编号1示出。将rast_out进行Clamp可以得到绘制结果蒙版,如图16中编号2示出,相应的python脚本程序如下:
[0179] Mask = torch.clamp(rast_out, 0, 1)
[0180] 然后,从Mask贴图中寻找边界并进行颜色填充。这里设定一个3x3的卷积核Kernel如下:kernel = [[1,2,1],[2,4,2],[1,2,1]];并将拉伸贴图Stretch1024与Kernel做卷积,再将Mask与Kernel做卷积,两个结果进行计算的python脚本程序如下:
[0181] blur = conv2d(Stretch1024,kernel);
[0182] weight = conv2d(Mask,kernel);
[0183] PadTex = (1 ‑ Mask) * blur / torch.clamp(weight,1,16);
[0184] 得到的结果PadTex如下:
[0185] 将PadTex叠加回Stretch1024即可完成八方向单像素的阔边处理,如图16中编号3示出,如此,能够提高生成的Stretch1024的边界的清晰度。
[0186] 针对第二阶段的可微渲染过程进行说明,首先按照与第一阶段可微渲染中的变换方法,将UV0变换到标准化设备空间中,由于,这里用的UV0是基于几何拉伸的展开方式得到的,所以不需要进行预处理,得到Pos,python脚本程序如下:
[0187] pad = torch.nn.ZeroPad2d((0,1,0,0));
[0188] Pos = pad(UV0 * 2 ‑ 1);
[0189] Pos = torch.nn.functional.pad(Pos,(0,1,0,0),"constant",1);
[0190] 接着进行可微渲染,用Pos作为标准化设备空间坐标,用UV1采样拉伸贴图进行着色,输出到与原始贴图一样大的重建贴图Final2048(即前文中的重建纹理图像)中,相应的python脚本程序如下:
[0191] Final2048 = DiffRender(Pos,UV1,Stretch1024);
[0192] 步骤605、根据机器学习模型输出的重建贴图与参考贴图的图像差异,对初始纹理空间中各顶点的纹理坐标进行迭代更新,直至图像差异满足收敛条件。
[0193] 示例性地,以图像差异确定图像的峰值信噪比为例,PSNR计算方法以其中一个图像为原始信号基准,另一个图像为噪声图像,衡量其信噪比。具体的计算公式如前述公式(1)所示即:
[0194] ;
[0195] 相应的python脚本程序如下:
[0196] mse = torch.mean(Final2048,Ref2048)** 2)
[0197] PSNR = 10 * torch.log10(1.0 / mse)
[0198] 至此该用于进行纹理学习的机器学习模型(与可称为纹理学习模型)建立完成。
[0199] 针对纹理学习模型的训练过程进行说明,原始贴图的纹理坐标作为UV1的初始值,用自适应矩估计优化器进行迭代训练。取“渲染、计算Loss、反向传播、优化迭代”为一个迭代循环,不断自动调整UV1使Loss下降,直到Loss稳定,即可推出训练过程。
[0200] 步骤606,输出生成的具有目标分辨率的目标贴图。
[0201] 当纹理学习模型收敛时,得到的UV1取代UV0,移除UV1,即可得到拉伸后的最终纹理坐标(即前文中目标纹理坐标)。用最终纹理坐标按照第一阶段渲染进行光栅化渲染,取得拉伸贴图即为最终纹理贴图(即前文中目标纹理贴图)。同时输出学习过程的Loss变化图像,参见图11,从图11中可以看出,进行迭代训练学习之后,降采样到1024大小的图像的峰值信噪比从原始的32db左右提升到了37db,而最终512大小的图像的峰值信噪比(图中编号7示出的点)已经超越图中编号6的线条中示出的PSNR,同样的图中编号8示出的点所指示的PSNR也超越图中编号6的线条中示出的PSNR,这意味着进行纹理坐标优化之后,能够用四分之一大小的图像达到优化之前相同的图像质量,能够给渲染过程带来很大的性能提升。
[0202] 应用本申请上述实施例,具有以下有益效果:
[0203] 基于可微渲染器的三维模型纹理展开学习方法,通过设计两个阶段的可微渲染模拟贴图被拉伸再被重新采样渲染出最终结果的可微过程,运用机器学习方法在几何拉伸纹理空间上完成纹理展开的自动学习,并计算相应变换后的纹理贴图,使得平面模型得到更优的纹理展开。这个过程相比于美术人员进行重新绘制有更高的精确度,能够提供确切的拉伸损失量作为指标,同时节省人力成本,有较大的应用研究价值。
[0204] 需要指出,在本申请实施例中,涉及到与用户的属性相关的数据,当本申请实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
[0205] 下面继续说明本申请实施例提供的纹理图像的生成装置555的实施为软件模块的示例性结构,在一些实施例中,如图3所示,存储在存储器550的纹理图像的生成装置555中的软件模块可以包括:
[0206] 获取模块5551,用于获取三维模型在初始纹理空间中的初始纹理图像,其中,所述三维模型的表面包括多个连续的多边形区域;
[0207] 展开模块5552,用于将所述三维模型的表面在第一纹理空间中进行展开,并确定展开后的各所述多边形区域的顶点在所述第一纹理空间中的第一纹理坐标;
[0208] 区域拉伸模块5553,用于基于所述第一纹理坐标,对所述三维模型的至少一个多边形区域进行区域拉伸,得到区域拉伸后的三维模型;
[0209] 渲染模块5554,用于以所述初始纹理图像为参考,对所述区域拉伸后的三维模型进行渲染,得到中间纹理图像;
[0210] 生成模块5555,用于获取所述中间纹理图像与所述初始纹理图像间的图像差异,并基于所述图像差异,生成所述三维模型对应的目标纹理图像。
[0211] 在一些实施例中,所述展开模块,还用于采用几何拉伸的方式,对所述三维模型的表面在第一纹理空间中进行展开;其中,所述三维模型的多个所述多边形区域的变化系数相同,所述变化系数,为展开前的多边形区域的大小与展开后的所述多边形区域的大小的比值。
[0212] 在一些实施例中,所述展开模块,还用于获取所述三维模型的各所述多边形区域的顶点与所述顶点在所述第一纹理空间中第一纹理坐标的映射关系;基于所述三维模型的各所述多边形区域的顶点,以及所述映射关系,确定各所述顶点在所述第一纹理空间中的第一纹理坐标。
[0213] 在一些实施例中,所述渲染模块,还用于获取所述区域拉伸后的三维模型的各所述顶点在所述第一纹理空间中的第三纹理坐标,并获取各所述顶点在初始纹理空间的第二纹理坐标;对所述初始纹理图像进行纹理采样,得到各所述第三纹理坐标对应的纹理信息;对各所述第二纹理坐标进行坐标系转换,得到各所述顶点在标准化设备空间中的标准纹理坐标;基于所述标准纹理坐标以及所述第三纹理坐标对应的纹理信息,在所述标准化设备空间中,对所述区域拉伸后的三维模型进行渲染,得到中间纹理图像。
[0214] 在一些实施例中,所述生成模块,还用于对所述中间纹理图像进行图像边缘检测,得到所述中间纹理图像中的初始边界;获取所述初始边界的掩模;对所述掩模的边界上的每个像素点,进行多个方向上的颜色填充,得到中间边界;基于所述中间边界,对所述中间纹理图像的边界进行调整,得到边界调整后的纹理图像;相应的,获取所述初始纹理图像与所述边界调整后的纹理图像间的图像差异。
[0215] 在一些实施例中,所述生成模块,还用于在所述第一纹理空间中,获取所述区域拉伸后的三维模型中各所述顶点的第三纹理坐标,并在初始纹理空间中,获取各所述顶点的第二纹理坐标;对所述中间纹理图像进行采样,得到各所述第二纹理坐标对应的纹理信息;基于所述第三纹理坐标以及各所述第二纹理坐标对应的纹理信息,对所述区域拉伸后的三维模型进行渲染,得到重建纹理图像;相应的,获取所述重建纹理图像与所述初始纹理图像间的图像差异。
[0216] 在一些实施例中,所述生成模块,还用于对各所述第三纹理坐标进行坐标系转换,得到各所述顶点在标准化设备空间中的标准纹理坐标;基于所述标准纹理坐标以及各所述第二纹理坐标对应的纹理信息,在所述标准化设备空间中,对所述区域拉伸后的三维模型进行渲染,得到重建纹理图像。
[0217] 在一些实施例中,所述生成模块,还用于对各所述第一纹理坐标进行坐标系转换,得到各所述顶点在标准化设备空间中的标准纹理坐标;基于所述标准纹理坐标,对所述初始纹理图像进行纹理采样,得到各所述第一纹理坐标的纹理信息;基于所述标准纹理坐标以及所述第一纹理坐标的纹理信息,在所述标准化设备空间中,对所述三维模型进行渲染,得到参考纹理图像;相应的,获取所述中间纹理图像与所述参考纹理图像间的图像差异。
[0218] 在一些实施例中,所述生成模块,还用于获取用于对图像质量进行评价的评估指标;基于所述图像差异,确定所述评估指标的指标值;基于所述指标值,生成所述三维模型对应的目标纹理图像。
[0219] 在一些实施例中,所述生成模块,还用于获取所述评估指标的预设阈值;当所述指标值未达到所述预设阈值时,对各所述顶点在所述初始纹理空间中的初始纹理坐标进行迭代更新,直至所述指标值达到所述预设阈值,并将更新后的所述初始纹理坐标作为目标纹理坐标;基于各所述目标纹理坐标,对所述初始纹理图像进行纹理采样,得到各所述目标纹理坐标对应的纹理信息;基于各所述目标纹理坐标对应的纹理信息,在所述第一纹理空间中,对所述三维模型进行渲染,得到所述三维模型对应的目标纹理图像。
[0220] 在一些实施例中,所述评估指标为峰值信噪比,所述生成模块,还用于基于所述图像差异,确定所述初始纹理图像中每个像素对应的差异分值;
[0221] 基于所述差异分值,以及所述初始纹理图像中像素的数量,确定所述峰值信噪比的指标值。
[0222] 本申请实施例提供了一种计算机程序产品,包括计算机程序或计算机可执行指令,该计算机程序产品存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机程序或计算机可执行指令,处理器执行该计算机程序或计算机可执行指令,使得该电子设备执行本申请实施例上述的纹理图像的生成方法。
[0223] 本申请实施例提供一种存储有计算机可执行指令的计算机可读存储介质,其中存储有计算机可执行指令,当计算机可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的纹理图像的生成方法,例如,如图3示出的纹理图像的生成方法。
[0224] 在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD‑ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
[0225] 在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
[0226] 作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper Text Markup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
[0227] 作为示例,可执行指令可被部署为在一个电子设备上执行,或者在位于一个地点的多个电子设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个电子设备上执行。
[0228] 综上所述,通过本申请实施例具有以下有益效果:能够提高生成纹理图像的效率和准确度,节约相关的存储空间以及计算资源。
[0229] 以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。