深度数据生成、提取方法、装置、电子设备及存储介质制造方法及图纸

技术编号:33287602 阅读:18 留言:0更新日期:2022-04-30 23:58
本申请实施例公开了一种深度数据生成、提取方法、装置、电子设备及存储介质,该深度数据生成方法包括:获取三维场景数据所对应的光栅化图像;从所述光栅化图像中获取片元的初始深度数据;对所述初始深度数据进行编码,得到至少两个深度编码值;将所述至少两个深度编码值分别分配至至少两个颜色通道,生成包括所述至少两个深度编码值的纹理图像。本申请实施例实现了使用至少两个颜色通道来表示深度数据,从而提高了生成的深度数据的精度,提高了显存利用率。用率。用率。

【技术实现步骤摘要】
深度数据生成、提取方法、装置、电子设备及存储介质


[0001]本申请实施例涉及图像处理
,特别是涉及一种深度数据生成、提取方法、装置、电子设备及存储介质。

技术介绍

[0002]三维软件最终是将三维场景渲染为一张图片显示到屏幕上,二维图像只能显示物体的宽高大小,同时当两个物体在视线方向发生重叠时,只有距离视点较近的物体才会被渲染至图像上,存储物体与视点相对距离的数据结构称为深度缓冲。正常的深度缓冲是在GPU(Graphics Processing Unit,图形处理器)硬件内部进行使用,但是为了实现一些视觉效果,如物体阴影、可视性分析等效果,需要从GPU中获取深度缓冲数据。
[0003]现有技术中,经常采用的方法是一种称为深度纹理的方法,是通过GPU默认的行为来生成的,即在创建纹理缓冲并给纹理缓冲设置参数时(调用texImage2D方法),显示的声明该纹理缓冲为深度形式(DEPTH_COMPONENT),需要使用纹理时,从纹理的r通道中获取深度缓冲数据。
[0004]通过现有的深度纹理方式获取的深度数据存在较大的精度损失,原因在于GPU内部深度缓冲默认为16位表示,同时某些场景下也可以设置为24位,但深度纹理是将16位或者24位的深度缓冲压缩到了只有8位的r颜色通道中,存在较大的精度损失。

技术实现思路

[0005]本申请实施例提供一种深度数据生成、提取方法、装置、电子设备及存储介质,有助于提高深度数据的精度。
[0006]为了解决上述问题,第一方面,本申请实施例提供了一种深度数据生成方法,包括:
[0007]获取三维场景数据所对应的光栅化图像;
[0008]从所述光栅化图像中获取片元的初始深度数据;
[0009]对所述初始深度数据进行编码,得到至少两个深度编码值;
[0010]将所述至少两个深度编码值分别分配至至少两个颜色通道,生成包括所述至少两个深度编码值的纹理图像。
[0011]第二方面,本申请实施例提供了一种深度数据提取方法,包括:
[0012]获取纹理图像,所述纹理图像通过至少两个颜色通道分别表示至少两个深度编码值;
[0013]从所述纹理图像中获取所述至少两个颜色通道的深度编码值,得到至少两个深度编码值;
[0014]对所述至少两个深度编码值进行解码,得到目标深度数据。
[0015]第三方面,本申请实施例提供了一种深度数据生成装置,包括:
[0016]光栅化图像获取模块,用于获取三维场景数据所对应的光栅化图像;
[0017]初始深度获取模块,用于从所述光栅化图像中获取片元的初始深度数据;
[0018]深度编码模块,用于对所述初始深度数据进行编码,得到至少两个深度编码值;
[0019]纹理图像生成模块,用于将所述至少两个深度编码值分别分配至至少两个颜色通道,生成包括所述至少两个深度编码值的纹理图像。
[0020]第四方面,本申请实施例提供了一种深度数据提取装置,包括:
[0021]纹理图像获取模块,用于获取纹理图像,所述纹理图像通过至少两个颜色通道分别表示至少两个深度编码值;
[0022]深度编码值获取模块,用于从所述纹理图像中获取所述至少两个颜色通道的深度编码值,得到至少两个深度编码值;
[0023]深度解码模块,用于对所述至少两个深度编码值进行解码,得到目标深度数据。
[0024]第五方面,本申请实施例还提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现第一方面所述深度数据生成方法或第二方面所述的深度数据提取方法。
[0025]第六方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面所述深度数据生成方法或第二方面所述的深度数据提取方法。
[0026]本申请实施例提供的深度数据生成、提取方法、装置、电子设备及存储介质,通过获取三维场景数据对应的光栅化图像,从光栅化图像中获取片元的初始深度数据,对初始深度数据进行编码,得到至少两个深度编码值,将至少两个深度编码值分别分配至至少两个颜色通道,生成包括至少两个深度编码值的纹理图像,实现了使用至少两个颜色通道来表示深度数据,从而相对于只使用一个颜色通道,提高了生成的深度数据的精度,提高了显存利用率。
附图说明
[0027]为了更清楚地说明本申请实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0028]图1是本申请实施例一的一种深度数据生成方法流程图;
[0029]图2是本申请实施例二的一种深度数据提取方法流程图;
[0030]图3是本申请实施例中使用提取到的目标深度数据生成的最终图像的效果图;
[0031]图4是本申请实施例三的一种深度数据生成装置结构示意图;
[0032]图5是本申请实施例四的一种深度数据提取装置结构示意图;
[0033]图6是本申请实施例五的一种电子设备的结构示意图。
具体实施方式
[0034]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施
例,都属于本申请保护的范围。
[0035]实施例一
[0036]本实施例提供的一种深度数据生成方法,该深度数据生成方法用于在GPU中生成三维场景中的深度数据,如图1所示,该方法包括:步骤110至步骤140。
[0037]步骤110,获取三维场景数据所对应的光栅化图像。
[0038]在对三维场景数据进行处理后,会生成对应的光栅化图像,保存该光栅化图像,在需要生成深度数据时,从存储位置获取该三维场景数据所对应的光栅化图像。
[0039]步骤120,从所述光栅化图像中获取片元的初始深度数据。
[0040]本申请实施例使用自定义片元着色器来对光栅化图像进行处理,不再使用GPU内的默认片元着色器。从光栅化图像中读取每个片元的z值(gl_FragCood.z),得到光栅化图像中每个片元的初始深度数据。
[0041]步骤130,对所述初始深度数据进行编码,得到至少两个深度编码值。
[0042]对初始深度数据进行编码,以将初始深度数据编码为至少两个深度编码值。具体得到深度编码值的数量可以小于或等于片元的颜色通道的数量,例如在片元的颜色通道为rgba四个颜色通道时,可以将初始深度数据编码为两个深度编码值、三个深度编码值或四个深度编码值,以分别使用两个颜色通道、三个颜色通道或四个颜色通道来存储深度编码值。
[0043]在本本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种深度数据生成方法,其特征在于,包括:获取三维场景数据所对应的光栅化图像;从所述光栅化图像中获取片元的初始深度数据;对所述初始深度数据进行编码,得到至少两个深度编码值;将所述至少两个深度编码值分别分配至至少两个颜色通道,生成包括所述至少两个深度编码值的纹理图像。2.根据权利要求1所述的方法,其特征在于,对所述初始深度数据进行编码,得到至少两个深度编码值,包括:根据所述纹理图像中纹理颜色的表示位数,确定编码基底;根据所述编码基底,对所述初始深度数据进行编码,得到所述至少两个深度编码值。3.根据权利要求1所述的方法,其特征在于,将所述至少两个深度编码值分别分配至至少两个颜色通道,生成包括所述至少两个深度编码值的纹理图像,包括:将所述至少两个深度编码值分别赋值给片元颜色值变量的至少两个颜色通道,生成包括所述至少两个深度编码值的纹理图像。4.根据权利要求1所述的方法,其特征在于,在所述获取三维场景数据所对应的光栅化图像之前,还包括:创建帧缓冲;获取三维场景数据,并创建所述三维场景数据的深度缓冲纹理;对所述深度缓冲纹理进行顶点着色渲染及光栅化处理,得到所述三维场景数据对应的光栅化图像。5.一种深度数据提取方法,其特征在于,包括:获取纹理图像,所述纹理图像通过至少两个颜色通道分别表示至少两个深度编码值;从所述纹理图像中获取所述至少两个颜色通道的深度编码值,得到至少两个深度编码值;对所述至少两个深度编码值进行解码,得到目标深度数据。6.根据权利要求5所述的方法,其特征在于,对所述至少两个深度编码值进行解码,得到目标深度数据,包括:获取所述至少两个深度编码值的编码基底;根据所述编码基底,对所述至少两个深度编码值进行解码,得到目标深度数据。7.根据权利要...

【专利技术属性】
技术研发人员:李泽正李正浩
申请(专利权)人:北京三快在线科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1