一种基于三维模型的纹理映射方法、装置及设备与流程

文档序号:21369470发布日期:2020-07-04 04:46阅读:400来源:国知局
一种基于三维模型的纹理映射方法、装置及设备与流程

本申请涉及计算机视觉技术领域,特别是涉及一种基于三维模型的纹理映射方法、装置及设备。



背景技术:

一般来说,通过网格构建得到的三维模型不具有纹理特征,为了使三维模型具有更好的视觉效果,通常需要对三维模型进行纹理映射。现有的纹理映射方案包括:获取三维模型对应的多张纹理图像,该多张纹理图像中包含该三维模型对应的目标,比如车辆目标、人员目标等;从该多张纹理图像中,选择一张视点最近的图像,或者选择一张最清晰的图像;根据所选择纹理图像中像素点与三维模型中网格点的映射关系,将所选择纹理图像中该目标的纹理特征映射到三维模型中。

应用上述方案,如果所选择纹理图像中的目标被遮挡,则无法将该遮挡区域的纹理特征映射到三维模型上,映射效果较差。



技术实现要素:

本申请实施例的目的在于提供一种基于三维模型的纹理映射方法、装置及设备,以提高映射效果。

为达到上述目的,本申请实施例提供一种基于三维模型的纹理映射方法,包括:

获取待处理三维模型、所述待处理三维模型对应的多张纹理深度图像、所述待处理三维模型与所述多张纹理深度图像的映射关系、以及所述映射关系的误差;

将所获取的纹理深度图像组合成多个图像集合,选择满足预设筛选条件的图像集合,作为待映射图像集合;所述预设筛选条件包括:图像集合中的各张纹理深度图像对应的映射关系的误差之和满足预设误差条件;

针对所述待处理三维模型中的每一面片,根据所述映射关系,确定该面片映射到所述待映射图像集合中各张纹理深度图像中的区域片;根据纹理深度图像的深度信息,判断所确定的每个区域片是否存在遮挡;在不存在遮挡的区域片中,选择一个或多个区域片作为待映射区域片;将所述待映射区域片的纹理特征映射到该面片。

可选的,所述预设筛选条件包括:

图像集合中各张纹理深度图像对应的映射关系的误差之和、以及图像集合中纹理深度图像数量之和最小;

图像集合中各张纹理深度图像的位姿旋转角之和不小于360度;其中,纹理深度图像的位姿旋转角为:该张纹理深度图像与其预设方向相邻视点的纹理深度图像之间的位姿旋转角。

可选的,所述预设筛选条件包括:

其中,i表示图像集合,ii表示图像集合中的纹理深度图像,eii表示纹理深度图像ii对应的映射关系的误差,num(ii)表示图像集合中纹理深度图像数量之和;αiij表示ii与其预设方向相邻视点纹理深度图像ij在x轴方向的位姿旋转角,βiij表示ii与其预设方向相邻视点纹理深度图像ij在y轴方向的位姿旋转角,γiij表示ii与其预设方向相邻视点纹理深度图像ij在z轴方向的位姿旋转角。

可选的,所述在不存在遮挡的区域片中,选择一个或多个区域片作为待映射区域片,包括:

针对不存在遮挡的每个区域片,利用预设优化模型,计算该区域片的能量值;其中,所述预设优化模型包括第一参数和第二参数;区域片的面积越大,该区域片的第一参数越小;若该区域片与该区域片所对应面片的相邻面片所对应区域片属于同一图像,则将该区域片的第二参数调小;区域片上的纹理丰富程度越高,该区域片的第二参数的权重越大;

将能量值最小的区域片确定为待映射区域片。

可选的,所述预设优化模型为:

ω=gmi(fi,li),

其中,edata表示第一参数,esmooth表示第二参数,ω表示第二参数的权重;faces表示构成待处理三维模型中的面片集合,fi表示faces中的第i个面片,li表示fi对应的区域片,e(l)表示面片fi所对应区域片li的能量值;edata表示面片fi所对应区域片li的面积归一值,区域片的面积越大,面积归一值越小;fj表示fi的相邻面片,lj表示fj对应的区域片,(fi,fj)∈edges表示fi与fj具有公共边;如果fi与fj所对应区域片属于同一张图像,则esmooth为0,如果fi与fj所对应区域片不属于同一张图像,则esmooth为1,ω表示区域片上的纹理丰富程度,gmi表示求解纹理丰富程度的函数。

可选的,在将所述待映射区域片的纹理特征映射到该面片之后,还包括:

在映射纹理特征后得到的三维模型中,判断是否存在纹理接缝;其中,所述纹理接缝两侧的面片对应的区域片属于不同的纹理深度图像;

如果存在,将纹理接缝两侧区域的rgb数据转换为yuv数据;

基于所述yuv数据,对纹理接缝两侧区域进行亮度及颜色调整。

可选的,所述基于所述yuv数据,对纹理接缝两侧区域进行亮度及颜色调整,包括:

若纹理接缝两侧区域的yuv数据中的y分量差值小于预设第三阈值,则对所述纹理接缝两侧区域进行亮度调整;

若纹理接缝两侧区域的yuv数据中的uv分量差值均小于预设第四阈值,则对所述纹理接缝两侧区域进行颜色调整;所述预设第四阈值小于所述预设第三阈值。

为达到上述目的,本申请实施例还提供一种基于三维模型的纹理映射装置,包括:

获取模块,用于获取待处理三维模型、所述待处理三维模型对应的多张纹理深度图像、所述待处理三维模型与所述多张纹理深度图像的映射关系、以及所述映射关系的误差;

第一选择模块,用于将所获取的纹理深度图像组合成多个图像集合,选择满足预设筛选条件的图像集合,作为待映射图像集合;所述预设筛选条件包括:图像集合中的各张纹理深度图像对应的映射关系的误差之和满足预设误差条件;

确定模块,用于针对所述待处理三维模型中的每一面片,根据所述映射关系,确定该面片映射到所述待映射图像集合中各张纹理深度图像中的区域片;

第一判断模块,用于根据纹理深度图像的深度信息,判断所确定的每个区域片是否存在遮挡;

第二选择模块,用于在不存在遮挡的区域片中,选择一个或多个区域片作为待映射区域片;

映射模块,用于将所述待映射区域片的纹理特征映射到该面片。

可选的,所述预设筛选条件包括:

图像集合中各张纹理深度图像对应的映射关系的误差之和、以及图像集合中纹理深度图像数量之和最小;

图像集合中各张纹理深度图像的位姿旋转角之和不小于360度;其中,纹理深度图像的位姿旋转角为:该张纹理深度图像与其预设方向相邻视点的纹理深度图像之间的位姿旋转角。

可选的,所述预设筛选条件包括:

其中,i表示图像集合,ii表示图像集合中的纹理深度图像,eii表示纹理深度图像ii对应的映射关系的误差,num(ii)表示图像集合中纹理深度图像数量之和;αiij表示ii与其预设方向相邻视点纹理深度图像ij在x轴方向的位姿旋转角,βiij表示ii与其预设方向相邻视点纹理深度图像ij在y轴方向的位姿旋转角,γiij表示ii与其预设方向相邻视点纹理深度图像ij在z轴方向的位姿旋转角。

可选的,所述第二选择模块,具体用于:

针对不存在遮挡的每个区域片,利用预设优化模型,计算该区域片的能量值;其中,所述预设优化模型包括第一参数和第二参数;区域片的面积越大,该区域片的第一参数越小;若该区域片与该区域片所对应面片的相邻面片所对应区域片属于同一图像,则将该区域片的第二参数调小;区域片上的纹理丰富程度越高,该区域片的第二参数的权重越大;

将能量值最小的区域片确定为待映射区域片。

可选的,所述预设优化模型为:

ω=gmi(fi,li),

其中,edata表示第一参数,esmooth表示第二参数,ω表示第二参数的权重;faces表示构成待处理三维模型中的面片集合,fi表示faces中的第i个面片,li表示fi对应的区域片,e(l)表示面片fi所对应区域片li的能量值;edata表示面片fi所对应区域片li的面积归一值,区域片的面积越大,面积归一值越小;fj表示fi的相邻面片,lj表示fj对应的区域片,(fi,fj)∈edges表示fi与fj具有公共边;如果fi与fj所对应区域片属于同一张图像,则esmooth为0,如果fi与fj所对应区域片不属于同一张图像,则esmooth为1,ω表示区域片上的纹理丰富程度,gmi表示求解纹理丰富程度的函数。

可选的,所述装置还包括:

第二判断模块,用于在映射纹理特征后得到的三维模型中,判断是否存在纹理接缝;其中,所述纹理接缝两侧的面片对应的区域片属于不同的纹理深度图像;如果存在,触发转换模块;

转换模块,用于将纹理接缝两侧区域的rgb数据转换为yuv数据;

调整模块,用于基于所述yuv数据,对纹理接缝两侧区域进行亮度及颜色调整。

可选的,所述调整模块,具体用于:

若纹理接缝两侧区域的yuv数据中的y分量差值小于预设第三阈值,则对所述纹理接缝两侧区域进行亮度调整;

若纹理接缝两侧区域的yuv数据中的uv分量差值均小于预设第四阈值,则对所述纹理接缝两侧区域进行颜色调整;所述预设第四阈值小于所述预设第三阈值。

为达到上述目的,本申请实施例还提供一种电子设备,包括处理器和存储器;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现上述任一种基于三维模型的纹理映射方法。

应用本申请所示实施例,从所获取的纹理深度图像中选择待映射图像集合,针对三维模型中的每一面片,确定该面片映射到该待映射图像集合中各张纹理深度图像中的区域片,选择不存在遮挡的区域片作为待映射区域片,将待映射区域片的纹理特征映射到该面片;可见,本方案中,第一方面,利用纹理深度图像中不存在遮挡的区域片的纹理特征,对三维模型中的面片进行映射,每一面片对应的区域片都不存在遮挡,提高了映射效果;第二方面,所选择的待映射图像集合中的各张纹理深度图像对应的映射关系的误差之和满足预设误差条件,在该待映射图像集合中确定出的区域片映射误差较小,进一步提高了映射效果。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种基于三维模型的纹理映射方法的流程示意图;

图2为本申请实施例提供的一种基于三维模型的纹理映射装置的结构示意图;

图3为本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

为了解决上述技术问题,本申请实施例提供了一种基于三维模型的纹理映射方法、装置及电子设备。该方法及装置可以应用于具有图像处理功能的各种电子设备,比如手机、电脑、或者摄像机等等,具体不做限定。

下面首先对本申请实施例提供的一种基于三维模型的纹理映射方法进行详细说明。

图1为本申请实施例提供的一种基于三维模型的纹理映射方法的流程示意图,包括:

s101:获取待处理三维模型、待处理三维模型对应的多张纹理深度图像、待处理三维模型与该多张纹理深度图像的映射关系、以及该映射关系的误差。

待处理三维模型即为需要映射纹理特征的网格模型,该待处理三维模型可以为人体模型、车辆模型、或者建筑物模型等等,具体不做限定。

纹理深度图像即为具有深度信息的纹理图像,比如rgbd(red,红;green,绿;blue,蓝;depth,深度)图像。对于每张纹理深度图像来说,其可以为一张同时具有纹理信息及深度信息的图像,也可以包括两张图像,一张为纹理图像,一张为深度图像,该纹理图像与该深度图像中的像素点之间一一对应。

纹理深度图像中包含与该模型相对应的目标,比如,如果待处理三维模型为人体模型,则纹理深度图像包含该人体目标,如果待处理三维模型为车辆模型,则纹理深度图像包含该车辆目标,如果待处理三维模型为建筑物模型,则纹理深度图像包含该建筑物目标。

三维模型与纹理深度图像的映射关系可以根据相机外参和相机内参得到。举例来说,可以通过相机标定算法,比如,张正友平面标定法、圆标定方法、主动视觉摄像机标定方法等等,获取相机外参和相机内参。相机内参可以包括相机主点、焦距等,相机外参可以包括模型到图像的旋转、平移关系等。将该旋转关系记为旋转矩阵r,将该平移关系记为平移矩阵t,将相机主点坐标记为(uo,vo),将相机在x轴方向上的焦距记为fx,将相机在y轴方向上的焦距记为fy。

比如,三维模型与纹理深度图像的映射关系可以包括两部分,第一部分为三维模型与纹理深度图像的相机坐标系之间的映射关系,第二部分为该相机坐标系与纹理深度图像的图像坐标系之间的映射关系。

如果纹理深度图像包括纹理图像与深度图像,则三维模型与纹理深度图像的映射关系可以为三维模型与纹理图像的映射关系。该三维模型与纹理图像的映射关系中,第一部分为三维模型与纹理图像的相机坐标系之间的映射关系,第二部分为该相机坐标系与纹理图像的图像坐标系之间的映射关系。为了方便描述,下面内容以纹理深度图像同时具有纹理信息及深度信息的情况为例进行说明。

第一部分的映射关系可以表示为xc=rxw+t,其中,xc表示纹理深度图像中的像素点在相机坐标系中的坐标值,xw表示待处理三维模型中网格点的坐标值。

假设xc包含坐标值(xc,yc,zc),xw包含坐标值(xw,yw,zw),r为旋转矩阵t为平移矩阵第一部分的映射关系可以表示为:

第二部分的映射关系可以表示为:

或者也可以表示为:

其中,(uc,vc)表示纹理深度图像中的像素点在图像坐标系中的坐标值,(uo,vo)为相机主点坐标,fx为相机在x轴方向上的焦距,fy为相机在y轴方向上的焦距。

通过第二部分的映射关系,便可以将纹理深度图像中像素点在相机坐标系中的坐标值xc进行映射,得到图像坐标系中的坐标值(uc,vc)。可见,通过上述两部分映射关系,可以将待处理三维模型中的网格点映射到纹理深度图像的图像坐标系中,也可以将纹理深度图像的图像坐标系中的像素点映射到待处理三维模型中的网格点。

举例来说,该映射关系的误差可以包括标定误差和/或校验误差。比如,在利用标定图像标定得到该映射关系后,可以基于该映射关系,将真实空间中的点1映射至标定图像中,得到映射的像素点2;而实际上点1对应到标定图像中的像素点为像素点3,计算像素点2与像素点3之间的差值,作为标定误差。

校验误差与标定误差的不同之处在于,标定误差是基于该映射关系在标定图像中计算的误差,而校验误差是基于该映射关系在其他图像中(非标定图像)中计算的误差。

s102:将所获取的纹理深度图像组合成多个图像集合,选择满足预设筛选条件的图像集合,作为待映射图像集合。该预设筛选条件包括:图像集合中的各张纹理深度图像对应的映射关系的误差之和满足预设误差条件。

该预设误差条件可以为:图像集合中的各张纹理深度图像对应的映射关系的误差之和最小;或者也可以为图像集合中的各张纹理深度图像对应的映射关系的误差之和小于设定阈值;等等,具体不做限定。

一种情况下,该预设筛选条件可以包括以下任意一种或多种条件:一、图像集合中各张纹理深度图像对应的映射关系的误差之和最小。二、图像集合中纹理深度图像数量之和最小。三、图像集合中各张纹理深度图像的位姿旋转角之和不小于360度;其中,纹理深度图像的位姿旋转角为:该张纹理深度图像与其预设方向相邻视点的纹理深度图像之间的位姿旋转角。

上述条件三也就是说,图像集合中各张纹理深度图像能够完整覆盖待处理三维模型。举例来说,该预设方向可以为顺时针方向,对于图像集合中的每张纹理深度图像来说,确定该图像与其顺时针方向相邻的图像的位姿旋转角;计算所确定的全部位姿旋转角之和,如果和大于360度,则表示图像集合中各张纹理深度图像360度覆盖了待处理三维模型。或者,该预设方向也可以为逆时针方向。

或者,另一种情况下,上述条件三也可以替换为:图像集合中各张纹理深度图像的位姿旋转角之和不小于720度;其中,纹理深度图像的位姿旋转角为:该张纹理深度图像与其相邻视点的纹理深度图像之间的位姿旋转角。

这种情况下,对于图像集合中的每张纹理深度图像来说,分别确定该图像与其顺时针方向相邻的图像的位姿旋转角、以及该图像与其逆时针方向相邻的图像的位姿旋转角;计算所确定的全部位姿旋转角之和。这种情况下,针对每张图像计算了两次位姿旋转角,因此,该全部位姿旋转角之和应该为上述情况的两倍,也就是720度。也就是说,如果全部位姿旋转角之和大于720度,则表示图像集合中各张纹理深度图像360度覆盖了待处理三维模型。

作为一种实施方式,所述预设筛选条件包括:

图像集合中各张纹理深度图像对应的映射关系的误差之和、以及图像集合中纹理深度图像数量之和最小;

图像集合中各张纹理深度图像的位姿旋转角之和不小于360度;其中,纹理深度图像的位姿旋转角为:该张纹理深度图像与其预设方向相邻视点的纹理深度图像之间的位姿旋转角。

本实施方式中,筛选条件同时包括上述三个条件。该筛选条件可以表示为:

其中,i表示图像集合,ii表示图像集合中的纹理深度图像,eii表示纹理深度图像ii对应的映射关系的误差,num(ii)表示图像集合中纹理深度图像数量之和;αiij表示ii与其预设方向相邻视点纹理深度图像ij在x轴方向的位姿旋转角,βiij表示ii与其预设方向相邻视点纹理深度图像ij在y轴方向的位姿旋转角,γiij表示ii与其预设方向相邻视点纹理深度图像ij在z轴方向的位姿旋转角。

本实施方式中,针对每个图像集合,判断该图像集合是否满足上述筛选条件,如果满足,则将该图像集合确定为待映射图像集合。

应用本实施方式选择的待映射图像集合,图像数量较少、累计误差较小、且图像对三维模型的覆盖程度较高,将该待映射图像集合中的纹理特征映射至三维模型中,可以减少纹理接缝数量以及纹理的错位程度,提高映射效果。

s103:针对待处理三维模型中的每一面片,根据该映射关系,确定该面片映射到该待映射图像集合中各张纹理深度图像中的区域片。

将构成三维模型的最小单元称为面片(face),面片可以为三角形面片,或者,也可以为矩形面片等等,具体不做限定。根据上述映射关系,可以将每一面片映射到该待映射图像集合中的各张纹理深度图像中,本实施例中,将一个面片映射到纹理深度图像中的区域称为一个区域片。在每张纹理深度图像中,面片与区域片一一对应,由于待映射图像集合中包括多张纹理深度图像,因此,一个面片对应多个区域片。

举例来说,假设待映射图像集合中包括纹理深度图像i1、i2和i3;假设待处理三维模型中一三角面片f(△abc),面片f映射到图像i1中的区域片为i11,面片f映射到图像i2中的区域片为i21,面片f映射到图像i3中的区域片为i31;可见,在纹理深度图像i1中,面片f与区域片i11一一对应,在纹理深度图像i2中,面片f与区域片i21一一对应,在纹理深度图像i3中,面片f与区域片i31一一对应,而对于面片f来说,其对应i11、i21和i31三个区域片。

以一个三角面片f为例进行说明,面片f的三个顶点为a、b、c,比如对于顶点a来说,假设顶点a在面片f中的坐标值为xa,xa包含坐标值(xa,ya,za);假设顶点a映射到纹理深度图像i中对应的投影点为a’,a’在相机坐标系中的坐标值为xa’,xa’包含坐标值(xa’,ya’,za’),r为旋转矩阵t为平移矩阵根据上述第一部分的映射关系可得

根据第二部分的映射关系计算投影点a’在纹理深度图像i的图像坐标系中的二维坐标(ua,va):

其中,(uo,vo)为相机主点坐标,fx为相机在x轴方向上的焦距,fy为相机在y轴方向上的焦距。

类似的,对于顶点b和顶点c也进行上述处理,可以确定出顶点b映射到纹理深度图像i中对应的投影点b’在图像坐标系中的二维坐标(ub,vb)、以及顶点c映射到纹理深度图像i中对应的投影点c’在图像坐标系中的二维坐标(uc,vc)。a’、b’、c’均为纹理深度图像i中的像素点,这三个像素点在纹理深度图像i中构成一个区域片,该区域片也就是面片f映射到纹理深度图像i中的区域片。

作为一种实施方式,s103可以包括:针对所述待处理三维模型中的每一面片,根据该面片与该待映射图像集合中多张纹理深度图像的位姿关系,确定该面片对应的候选纹理深度图像;根据所述待处理三维模型与所述候选纹理深度图像的映射关系,确定该面片映射到所述候选纹理深度图像中的区域片。

在这种实施方式,先根据面片与纹理深度图像的位姿关系,对该待映射图像集合中的多张纹理深度图像进行筛选。具体的,可以针对该待映射图像集合中的每张纹理深度图像,计算该面片的法向量与该张纹理深度图像的法向量之间的夹角;若所述夹角小于预设第一阈值,则将该张纹理深度图像确定为该面片对应的候选纹理深度图像。

延续上述例子,第一部分的映射关系可以为xc=rxw+t,或者表示为:

假设纹理深度图像i的法向量为可以通过如下算式计算得到

其中,表示z轴方向上的单位向量;

假设三角面片f(△abc)的法向量可以用表示,其中,a、b、c为面片f的三个顶点。面片f的法向量与纹理深度图像i的法向量之间的夹角为可以针对该夹角设定阈值,为了与下面内容中的阈值相区分,将针对该夹角设定的阈值称为预设第一阈值,举例来说,预设第一阈值可以为小于90度。如果小于90度,则将纹理深度图像i确定为面片f对应的候选纹理深度图像。

可以理解,如果面片f的法向量与纹理深度图像i的法向量之间的夹角大于等于90度,则利用图像i对面片f进行纹理映射的效果较差。举例来说,假设待处理三维模型为人体模型,面片f属于人体正面区域,而纹理深度图像i为人体背面图像,这种情况下,面片f的法向量与纹理深度图像i的法向量大于90度,接近180度,利用人体背面图像对人体正面区域的面片进行纹理映射,效果较差,则不再将纹理深度图像i确定为面片f对应的候选纹理深度图像,不再确定面片f映射到纹理深度图像i中的区域片;可见,应用本实施方式,仅确定该面片映射到所述候选纹理深度图像中的区域片减少了计算量,提高了映射效率。

在本实施方式中,预设第一阈值可以根据实际情况进行设定,比如可以为75度,70度等,具体不做限定。

s104:根据纹理深度图像的深度信息,判断所确定的每个区域片是否存在遮挡。

如上所述,s101中获取的纹理深度图像具有深度信息,可以根据该深度信息,判断s103中所确定的每个区域片是否存在遮挡。举例来说,假设待处理模型为人体模型,在一张纹理深度图像中,人体目标抬起一只手挡在了胸前,手和胸的深度信息是不同的,可以根据该图像的深度信息,判断出手遮挡了胸。

作为一种实施方式,s104可以包括:

针对所确定的每个区域片,根据该区域片的深度信息以及所述映射关系,将该区域片映射到所述待处理三维模型中,生成参考面片;计算所述参考面片与该区域片所对应面片之间的间距,该区域片所对应面片为:根据所述映射关系,映射到该区域片的面片;若所述间距小于预设第二阈值,则该区域片不存在遮挡。

仍以三角面片f为例进行说明,面片f包含三个顶点a、b、c,对于顶点a来说,其映射到纹理深度图像i中的投影点为a’,假设a’在纹理深度图像i中的深度值为d(ua,va);再根据上述映射关系将a’进行反映射,假设投影点a’反映射到三维模型所在坐标系中的点为a”,a”在三维模型所在坐标系中的坐标值为xa”,xa”包含坐标值(xa”,ya”,za”);。

通过如下反映射关系可以得到a”的坐标值:

xa”=rtxa'-rtt

类似的,对于顶点b和顶点c也进行上述处理,可以确定出b”的坐标值和c”的坐标值。a”、b”、c”均为三维模型所在坐标系中的坐标点,这三个坐标点在三维模型所在坐标系中构成一个参考面片。

也就是说,面片f、投影点a’b’c’构成的区域片、以及该参考面片具有对应关系,上述“该区域片所对应面片”也就是面片f,计算该参考面片与面片f的间距。作为一种实施方式,可以分别确定该参考面片的质心、以及面片f的质心,将二者质心之间的距离作为该参考面片与面片f的间距。

举例来说,假设三维模型所在坐标系统的坐标原点为o,面片f的质心为c,参考面片的质心为crefer,则

间距l=||c-crefer||2。

针对间距l设定一阈值,为了区分描述,将该阈值称为预设第二阈值。作为一种实施方式,基于s101中获取的待处理三维模型、映射关系、或者基于该纹理深度图像的深度信息,可以引入误差e,该误差e可以综合考虑模型误差、映射关系的误差、图像的深度误差等等,该预设第二阈值可以大于误差e。另外,该预设第二阈值可以为场景中发生遮挡的最小距离occ,也就是说,e<间距l<occ,occ可以根据实际场景进行设定。

如果l小于该预设第二阈值,表示投影点a’b’c’构成的区域片不存在遮挡。

s105:在不存在遮挡的区域片中,选择一个或多个区域片作为待映射区域片。

假设s103中针对面片f确定出的区域片有3个,则s104中分别判断这3个区域片中是否存在遮挡,假设2个区域片中不存在遮挡,则在这2个区域片中选择1个或2个区域片作为待映射区域片。

一种实施方式中,选择待映射区域片的方式可以包括:

针对不存在遮挡的每个区域片,利用预设优化模型,计算该区域片的能量值;其中,所述预设优化模型包括第一参数和第二参数;区域片的面积越大,该区域片的第一参数越小;若该区域片与该区域片所对应面片的相邻面片所对应区域片属于同一图像,则将该区域片的第二参数调小;将能量值最小的区域片确定为待映射区域片。

举例来说,可以针对第二参数设定两个值:第一值和第二值,第一值大于第二值;如果区域片a与区域片a所对应面片的相邻面片所对应区域片属于同一图像,则将区域片a的第二参数设定为第二值,也就是将区域片a的第二参数调小;如果区域片a与区域片a所对应面片的相邻面片所对应区域片不属于同一图像,则将区域片a的第二参数设定为第一值,也就是将区域片a的第二参数调大。

比如,第一值可以为1,第二值可以为0。或者,也可以为其他数值,具体不做限定。

举例来说,该预设优化模型可以为基于马尔科夫随机场建立的优化模型,比如,可以通过如下算式,计算该区域片的能量值:

其中,edata表示第一参数,esmooth表示第二参数,faces表示构成待处理三维模型中的面片集合,fi表示faces中的第i个面片,li表示fi对应的区域片,e(l)表示面片fi所对应区域片li的能量值;edata表示面片fi所对应区域片li的面积归一值,区域片的面积越大,面积归一值越小;fj表示fi的相邻面片,lj表示fj对应的区域片,(fi,fj)∈edges表示fi与fj具有公共边;如果fi与fj所对应区域片属于同一张图像,则esmooth为0,如果fi与fj所对应区域片不属于同一张图像,则esmooth为1。

将该区域片的面积记作x,将faces中面片所对应最大区域片的面积记作xmax,将faces中面片所对应最小区域片的面积记作xmin,则可以利用如下算式对该区域片的面积进行归一处理:x/xmax;或者(x-xmin)/(xmax-xmin);或者其他算式,具体不做限定。

将能量值最小的区域片确定为待映射区域片,或者,将能量值小于阈值的多个区域片确定为待映射区域片,等等,具体不做限定。

另一种实施方式中,选择待映射区域片的方式可以包括:

针对不存在遮挡的每个区域片,利用预设优化模型,计算该区域片的能量值;其中,所述预设优化模型包括第一参数和第二参数;区域片的面积越大,该区域片的第一参数越小;若该区域片与该区域片所对应面片的相邻面片所对应区域片属于同一图像,则将该区域片的第二参数调小;区域片上的纹理丰富程度越高,该区域片的第二参数的权重越大;将能量值最小的区域片确定为待映射区域片。

举例来说,可以针对第二参数设定两个值:第一值和第二值,第一值大于第二值;如果区域片a与区域片a所对应面片的相邻面片所对应区域片属于同一图像,则将区域片a的第二参数设定为第二值,也就是将区域片a的第二参数调小;如果区域片a与区域片a所对应面片的相邻面片所对应区域片不属于同一图像,则将区域片a的第二参数设定为第一值,也就是将区域片a的第二参数调大。

比如,第一值可以为1,第二值可以为0。或者,也可以为其他数值,具体不做限定。

本实施方式提供的“计算区域片能量值”的方式、与上述实施方式提供的“计算区域片能量值”的方式的区别在于:本实施方式中为第二参数设定了权重。本实施方式中,区域片上的纹理丰富程度越高,则该区域片的第二参数的权重越大。

举例来说,可以采用sobel算子提取区域片的纹理梯度值,以该纹理梯度值衡量区域片上的纹理丰富程度。具体来说,纹理梯度值越大,表示区域片上的纹理丰富程度越高,纹理梯度值越小,表示区域片上的纹理丰富程度越低。

假设区域片a上的纹理丰富程度较高(纹理较稠密),如果区域片a与其所对应面片的相邻面片所对应区域片不属于同一图像,那么纹理接缝会较明显。假设区域片a上的纹理丰富程度较低(纹理较稀疏),如果区域片a与其所对应面片的相邻面片所对应区域片不属于同一图像,那么纹理接缝则不太明显。

而本实施方式中,区域片上的纹理丰富程度越高,则计算该区域片的能量值时,越多地考虑该区域片的第二参数。比如,如果区域片a上的纹理丰富程度较高,并且区域片a其所对应面片的相邻面片所对应区域片不属于同一图像,则其能量值会较大,将该区域片确定为待映射区域片的概率较小。这样,纹理接缝较少地出现在纹理稠密处,减少了纹理接缝的影响,提高了映射效果。

举例来说,该预设优化模型可以为基于马尔科夫随机场建立的优化模型,如下所示:

ω=gmi(fi,li),

其中,edata表示第一参数,esmooth表示第二参数,ω表示第二参数的权重;faces表示构成待处理三维模型中的面片集合,fi表示faces中的第i个面片,li表示fi对应的区域片,e(l)表示面片fi所对应区域片li的能量值;edata表示面片fi所对应区域片li的面积归一值,区域片的面积越大,面积归一值越小;fj表示fi的相邻面片,lj表示fj对应的区域片,(fi,fj)∈edges表示fi与fj具有公共边;如果fi与fj所对应区域片属于同一张图像,则esmooth为0,如果fi与fj所对应区域片不属于同一张图像,则esmooth为1,ω表示区域片上的纹理丰富程度,gmi(gradientmagnitudeintegration,梯度幅度总和)表示求解纹理丰富程度的函数。

将该区域片的面积记作x,将faces中面片所对应最大区域片的面积记作xmax,将faces中面片所对应最小区域片的面积记作xmin,则可以利用如下算式对该区域片的面积进行归一处理:x/xmax;或者(x-xmin)/(xmax-xmin);或者其他算式,具体不做限定。

将能量值最小的区域片确定为待映射区域片,或者,将能量值小于阈值的多个区域片确定为待映射区域片,等等,具体不做限定。

如果选择出多个区域片作为待映射区域片,可以为这多个区域片分配权重,根据该权重将该多个区域片进行融合,将融合后的区域片作为待映射区域片。如果根据上述能量值分配权重,则能量值越小,所分配的权重越大。

s106:将该待映射区域片的纹理特征映射到该面片。

待映射区域片属于纹理深度图像,因此待映射区域片中包括纹理特征;待映射区域片与面片存在对应关系,针对三维模型中的每个面片,都将该面片对应的待映射区域片的纹理特征映射到该面片,这样便得到了纹理映射后的三维模型。

作为一种实施方式,在s106之后,还可以包括:在映射纹理特征后得到的三维模型中,判断是否存在纹理接缝;其中,所述纹理接缝两侧的面片对应的区域片属于不同的纹理深度图像;如果存在,将纹理接缝两侧区域的rgb数据转换为yuv数据;基于所述yuv数据,对纹理接缝两侧区域进行亮度及颜色调整。

本实施例中,针对模型中的每个面片,在多张纹理深度图像中选择该面片对应的待映射区域片,也就是说,每个面片对应的待映射区域片可能属于不同的图像。可以理解,由于光照变化或者其他影响,利用不同图像对同一模型进行纹理映射,会产生纹理接缝。纹理接缝两侧的面片对应的区域片属于不同的纹理深度图像。

在本实施方式中,在映射纹理特征后得到的三维模型中,判断是否存在纹理接缝,也就是判断是否利用多张纹理深度图像映射得到该三维模型。或者,在上述计算能量值的实施方式中,可以通过每个区域片对应的esmooth判断是否存在纹理接缝,如果全部区域片的esmooth都为0,则表示利用一张纹理深度图像映射得到该三维模型,不存在纹理接缝,如果存在esmooth为1的区域片,则表示利用多张纹理深度图像映射得到该三维模型,存在纹理接缝。

如果存在纹理接缝,可以对纹理接缝两侧区域进行亮度及颜色调整,这样,可以提高三维模型的视觉效果。

本实施方式中,将纹理接缝两侧区域的rgb(red,红;green,绿;blue,蓝)数据转换为yuv(y表示亮度,u和v表示色度、浓度)数据,比如,可以利用如下转换公式,将rgb数据转换为yuv数据:

对yuv数据中的y分量进行调整,也就是对纹理接缝两侧区域进行亮度调整;对yuv数据中的uv分量进行调整,也就是对纹理接缝两侧区域进行颜色调整。

作为一种实施方式,若纹理接缝两侧区域的yuv数据中的y分量差值小于预设第三阈值,则对所述纹理接缝两侧区域进行亮度调整;若纹理接缝两侧区域的yuv数据中的uv分量差值均小于预设第四阈值,则对所述纹理接缝两侧区域进行颜色调整;所述预设第四阈值小于所述预设第三阈值。

本实施方式中,针对y分量差值设定的阈值大于针对uv分量设定的阈值,可以这样理解,如果纹理接缝两侧区域的uv分量差值较大(大于预设第四阈值),则不进行颜色调整,而如果纹理接缝两侧区域的y分量差值较大(大于预设第四阈值小于预设第三阈值),则进行亮度调整。

如果纹理接缝两侧区域的uv分量差值较大,表示纹理接缝两侧区域的颜色差别较大,这种情况可能是由于纹理接缝两侧区域所对应目标的颜色本身就是不同的。比如,三维模型为人体模型,纹理深度图像中包含人体目标,纹理接缝两侧区域中,一侧区域对应人手,另一侧区域对应衣服袖口,人手与衣服袖口颜色本身不同,这种情况下,不对纹理接缝两侧区域进行颜色调整,减少了误调整的情况。

如果纹理接缝两侧区域的y分量差值较大,表示纹理接缝两侧区域的亮度差别较大。而人眼对于亮度变化较敏感,如果亮度差别较大,则对纹理接缝两侧区域进行亮度调整,提高视觉效果。而且对亮度的调整不容易引起纹理失真,也就是说,预设第三阈值设定的稍大些,不容易引起纹理失真。

可见,本实施方式中,对纹理接缝两侧区域的颜色和亮度两方面进行区别处理,一方面减少了颜色误调整的情况,另一方面提高了视觉效果,且不容易引起纹理失真。

应用本申请图1所示实施例,从所获取的纹理深度图像中选择待映射图像集合,针对三维模型中的每一面片,确定该面片映射到该待映射图像集合中各张纹理深度图像中的区域片,选择不存在遮挡的区域片作为待映射区域片,将待映射区域片的纹理特征映射到该面片;可见,本方案中,第一方面,利用纹理深度图像中不存在遮挡的区域片的纹理特征,对三维模型中的面片进行映射,每一面片对应的区域片都不存在遮挡,提高了映射效果;第二方面,所选择的待映射图像集合中的各张纹理深度图像对应的映射关系的误差之和满足预设误差条件,在该待映射图像集合中确定出的区域片映射误差较小,进一步提高了映射效果。

与上述方法实施例相对应,本申请实施例还提供了一种基于三维模型的纹理映射装置,如图2所示,包括:

获取模块201,用于获取待处理三维模型、所述待处理三维模型对应的多张纹理深度图像、所述待处理三维模型与所述多张纹理深度图像的映射关系、以及所述映射关系的误差;

第一选择模块202,用于将所获取的纹理深度图像组合成多个图像集合,选择满足预设筛选条件的图像集合,作为待映射图像集合;所述预设筛选条件包括:图像集合中的各张纹理深度图像对应的映射关系的误差之和满足预设误差条件;

确定模块203,用于针对所述待处理三维模型中的每一面片,根据所述映射关系,确定该面片映射到所述待映射图像集合中各张纹理深度图像中的区域片;

第一判断模块204,用于根据纹理深度图像的深度信息,判断所确定的每个区域片是否存在遮挡;

第二选择模块205,用于在不存在遮挡的区域片中,选择一个或多个区域片作为待映射区域片;

映射模块206,用于将所述待映射区域片的纹理特征映射到该面片。

作为一种实施方式,所述预设筛选条件包括:

图像集合中各张纹理深度图像对应的映射关系的误差之和、以及图像集合中纹理深度图像数量之和最小;

图像集合中各张纹理深度图像的位姿旋转角之和不小于360度;其中,纹理深度图像的位姿旋转角为:该张纹理深度图像与其预设方向相邻视点的纹理深度图像之间的位姿旋转角。

作为一种实施方式,所述预设筛选条件包括:

其中,i表示图像集合,ii表示图像集合中的纹理深度图像,eii表示纹理深度图像ii对应的映射关系的误差,num(ii)表示图像集合中纹理深度图像数量之和;αiij表示ii与其预设方向相邻视点纹理深度图像ij在x轴方向的位姿旋转角,βiij表示ii与其预设方向相邻视点纹理深度图像ij在y轴方向的位姿旋转角,γiij表示ii与其预设方向相邻视点纹理深度图像ij在z轴方向的位姿旋转角。

作为一种实施方式,第二选择模块205具体用于:

针对不存在遮挡的每个区域片,利用预设优化模型,计算该区域片的能量值;其中,所述预设优化模型包括第一参数和第二参数;区域片的面积越大,该区域片的第一参数越小;若该区域片与该区域片所对应面片的相邻面片所对应区域片属于同一图像,则将该区域片的第二参数调小;区域片上的纹理丰富程度越高,该区域片的第二参数的权重越大;

将能量值最小的区域片确定为待映射区域片。

作为一种实施方式,所述预设优化模型为:

ω=gmi(fi,li),

其中,edata表示第一参数,esmooth表示第二参数,ω表示第二参数的权重;faces表示构成待处理三维模型中的面片集合,fi表示faces中的第i个面片,li表示fi对应的区域片,e(l)表示面片fi所对应区域片li的能量值;edata表示面片fi所对应区域片li的面积归一值,区域片的面积越大,面积归一值越小;fj表示fi的相邻面片,lj表示fj对应的区域片,(fi,fj)∈edges表示fi与fj具有公共边;如果fi与fj所对应区域片属于同一张图像,则esmooth为0,如果fi与fj所对应区域片不属于同一张图像,则esmooth为1,ω表示区域片上的纹理丰富程度,gmi表示求解纹理丰富程度的函数。

作为一种实施方式,所述装置还包括:第二判断模块、转换模块和调整模块(图中未示出),其中,

第二判断模块,用于在映射纹理特征后得到的三维模型中,判断是否存在纹理接缝;其中,所述纹理接缝两侧的面片对应的区域片属于不同的纹理深度图像;如果存在,触发转换模块;

转换模块,用于将纹理接缝两侧区域的rgb数据转换为yuv数据;

调整模块,用于基于所述yuv数据,对纹理接缝两侧区域进行亮度及颜色调整。

作为一种实施方式,所述调整模块,具体用于:

若纹理接缝两侧区域的yuv数据中的y分量差值小于预设第三阈值,则对所述纹理接缝两侧区域进行亮度调整;

若纹理接缝两侧区域的yuv数据中的uv分量差值均小于预设第四阈值,则对所述纹理接缝两侧区域进行颜色调整;所述预设第四阈值小于所述预设第三阈值。

应用本申请图2所示实施例,第一方面,利用纹理深度图像中不存在遮挡的区域片的纹理特征,对三维模型中的面片进行映射,每一面片对应的区域片都不存在遮挡,提高了映射效果。第二方面,所选择的待映射图像集合中的各张纹理深度图像对应的映射关系的误差之和满足预设误差条件,在该待映射图像集合中确定出的区域片映射误差较小,进一步提高了映射效果。第三方面,一种实施方式中,选择的待映射图像集合,图像数量较少、累计误差较小、且图像对三维模型的覆盖程度较高,将该待映射图像集合中的纹理特征映射至三维模型中,可以减少纹理接缝数量以及纹理的错位程度,提高映射效果。第四方面,一种实施方式中,区域片上的纹理丰富程度越高,则该区域片的预设优化模型中的第二参数的权重越大,这样,纹理接缝较少地出现在纹理稠密处,减少了纹理接缝的影响,提高了映射效果。第五方面,一种实施方式中,对纹理接缝两侧区域的颜色和亮度两方面进行区别处理,既减少了颜色误调整的情况,又提高了视觉效果,且不容易引起纹理失真。

本申请实施例还提供了一种电子设备,如图3所示,包括处理器301和存储器302,

存储器302,用于存放计算机程序;

处理器301,用于执行存储器302上所存放的程序时,实现上述任一种基于三维模型的纹理映射方法。

上述电子设备提到的存储器可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一种基于三维模型的纹理映射方法。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例、设备实施例、以及上述计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1