一种深度图压缩方法、装置、系统及存储介质

文档序号:1908553 发布日期:2021-11-30 浏览:9次 >En<

阅读说明:本技术 一种深度图压缩方法、装置、系统及存储介质 (Depth map compression method, device, system and storage medium ) 是由 黄缚鹏 李翔宇 范文新 燕忠亮 于 2021-09-08 设计创作,主要内容包括:本申请公开了一种深度图压缩方法、装置、系统及存储介质,用以使得深度图能够直接通过二维编码设备进行压缩,进而使压缩后的深度图便于进行网络分发。方法包括:获取待压缩的深度图;获取深度图中所有的像素点;确定所有的像素点的信息熵的集中区域;根据集中区域对深度图进行拆分,其中,将集中区域内包含的所有像素点拆分为主图,将集中区域外包含的所有像素点拆分为副图;将主图和副图对应的信息分别输入二维编码设备进行编码,以使二维编码设备输出与深度图对应的视频码流。采用本申请所提供的方案,可以基于信息熵的集中区域这一条件实现对深度图的拆分,使得拆分之后的多张深度图能够直接通过二维编码设备进行压缩,便于进行网络分发。(The application discloses a depth map compression method, a depth map compression device, a depth map compression system and a storage medium, which are used for enabling a depth map to be directly compressed through two-dimensional coding equipment, and further enabling the compressed depth map to be convenient for network distribution. The method comprises the following steps: acquiring a depth map to be compressed; acquiring all pixel points in the depth map; determining a concentrated region of the information entropies of all the pixel points; splitting the depth map according to the concentrated region, wherein all pixel points contained in the concentrated region are split into main maps, and all pixel points contained outside the concentrated region are split into auxiliary maps; and respectively inputting the information corresponding to the main graph and the auxiliary graph into two-dimensional coding equipment for coding so that the two-dimensional coding equipment outputs a video code stream corresponding to the depth graph. By adopting the scheme provided by the application, the splitting of the depth map can be realized based on the condition of the concentration area of the information entropy, so that a plurality of split depth maps can be directly compressed through two-dimensional coding equipment, and the network distribution is facilitated.)

一种深度图压缩方法、装置、系统及存储介质

技术领域

一种深度图压缩方法、装置、系统及存储介质。

背景技术

深度图像也被称为距离影像,是指将从图像采集器到场景中各点的距离(深度)作为像素值的图像,其直接反映了景物可见表面的几何形状。在现有技术中,通常将深度图编码为png格式来实现对深度图的压缩,这样的编码方式虽然降低了空间大小,但是,png格式文件不适合网络分发。

视频编码发展到今时今日已经存在大量的二维编码设备,这些二维编码设备能够提供每秒数百帧的编码速度,现存的传输协议为网络传输视频提供了各种优秀的负载均衡等方法,如果能够通过二维编码设备将深度图编码为对用户透明的视频流,则可以方便地进行网络分发。

然而,目前的深度图难以直接通过二维编码设备进行压缩,以微软相机提供的深度图为例,位深为16位,目前视频协议最高编码位深为12位,而且在这个位深下大多不提供无损压缩,而深度图编码一般要求几何无损。因此,需要提供一种深度图压缩方法,以使得深度图能够直接通过二维编码设备进行压缩,进而使压缩后的深度图便于进行网络分发。

发明内容

本申请提供一种深度图压缩方法、系统及存储介质,用以使得深度图能够直接通过二维编码设备进行压缩。

本申请提供一种深度图压缩方法,包括:

获取待压缩的深度图;

获取所述深度图中所有的像素点;

确定所有的像素点的信息熵的集中区域;

根据所述集中区域对所述深度图进行拆分,其中,将所述集中区域内包含的所有像素点拆分为主图,将所述集中区域外包含的所有像素点拆分为副图;

将所述主图和所述副图对应的信息分别输入二维编码设备进行编码,以使所述二维编码设备输出与所述深度图对应的视频码流。

本申请的有益效果在于:能够确定所有的像素点的信息熵的集中区域,将所述集中区域内包含的所有像素点拆分为主图,将所述集中区域外包含的所有像素点拆分为副图,从而可以基于信息熵的集中区域这一条件实现对深度图的拆分,进而使得拆分之后的多张深度图能够直接通过二维编码设备进行压缩,便于进行网络分发。

在一个实施例中,确定所有的像素点的信息熵的集中区域,包括:

确定所有像素点的值;

将所述所有像素点的值转换为二进制数;

根据所述二进制数对所述深度图中各个像素点的值进行位面统计;

根据位面统计结果确定所有的像素点的信息熵的集中区域。

在一个实施例中,所述根据位面统计结果确定所有的像素点的信息熵的集中区域,包括:

根据所述位面统计结果生成相应的积分图;

确定积分图项最大值对应的位面为所述信息熵的集中区域。

在一个实施例中,将所述主图和所述副图对应的信息分别输入二维编码设备进行编码,包括:

确定所述主图和所述副图中的高位图和低位图;

生成所述低位图所对应的补图;

比较对所述低位图和所述补图编码后的压缩率;

如果对所述低位图编码后的压缩率高于对所述补图编码后的压缩率,将低位图本身和高位图本身输入二维编码设备进行编码;

如果对所述低位图编码后的压缩率低于对所述补图编码后的压缩率,将低位图所对应的补图和高位图本身输入二维编码设备进行编码。

本申请还提供一种深度图压缩装置,包括:

第一获取模块,用于获取待压缩的深度图;

第二获取模块,用于获取所述深度图中所有的像素点;

确定模块,用于确定所有的像素点的信息熵的集中区域;

拆分模块,用于根据所述集中区域对所述深度图进行拆分,其中,将所述集中区域内包含的所有像素点拆分为主图,将所述集中区域外包含的所有像素点拆分为副图;

编码模块,用于将所述主图和所述副图对应的信息分别输入二维编码设备进行编码,以使所述二维编码设备输出与所述深度图对应的视频码流。

在一个实施例中,确定模块,包括:

第一确定子模块,用于确定所有像素点的值;

转换子模块,用于将所述所有像素点的值转换为二进制数;

统计子模块,用于根据所述二进制数对所述深度图中各个像素点的值进行位面统计;

第二确定子模块,用于根据位面统计结果确定所有的像素点的信息熵的集中区域。

在一个实施例中,所述第二确定子模块,具体用于:

根据所述位面统计结果生成相应的积分图;

确定积分图项最大值对应的位面为所述信息熵的集中区域。

在一个实施例中,编码模块,包括:

第三确定子模块,用于确定所述主图和所述副图中的高位图和低位图;

生成子模块,用于生成所述低位图所对应的补图;

比较子模块,用于比较对所述低位图和所述补图编码后的压缩率;

第一输入子模块,用于如果对所述低位图编码后的压缩率高于对所述补图编码后的压缩率,将低位图本身和高位图本身输入二维编码设备进行编码;

第二输入子模块,用于如果对所述低位图编码后的压缩率低于对所述补图编码后的压缩率,将低位图所对应的补图和高位图本身输入二维编码设备进行编码。

本申请还提供一种深度图压缩系统,包括:

至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行以实现上述任一实施例所记载的深度图压缩方法。

本申请还提供了一种计算机可读存储介质,当存储介质中的指令由深度图压缩系统对应的处理器执行时,使得深度图压缩系统能够实现上述任一实施例所记载的深度图压缩方法。

本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

下面通过附图和实施例,对本申请的技术方案做进一步的详细描述。

附图说明

附图用来提供对本申请的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请,并不构成对本申请的限制。在附图中:

图1为本申请一实施例中一种深度图压缩方法的流程图;

图2为本申请另一实施例中一种深度图压缩方法的流程图;

图3为本申请又一实施例中一种深度图压缩方法的流程图;

图4为本申请一实施例中选择低位图正图或补图进行编码的流程图;

图5为本申请一实施例中将外接正方体沿着各面中线切割分为8个正方体a的示意图;

图6为本申请一实施例中将标记为1的正方体a沿着各面中线切割为更小的8个正方体b的示意图;

图7为由切割完成的外接正方体进行转换所得到的m层树结构的示意图;

图8为本申请一实施例中一种深度图压缩装置的框图;

图9为本申请一实施例中一种深度图压缩系统的硬件结构示意图。

具体实施方式

以下结合附图对本申请的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请。

图1为本申请一实施例中一种深度图压缩方法的流程图,如图1所示,该方法可被实施为以下步骤S11-S15:

在步骤S11中,获取待压缩的深度图;

在步骤S12中,获取深度图中所有的像素点;

在步骤S13中,确定所有的像素点的信息熵的集中区域;

在步骤S14中,根据集中区域对深度图进行拆分,其中,将集中区域内包含的所有像素点拆分为主图,将集中区域外包含的所有像素点拆分为副图;

在步骤S15中,将主图和副图对应的信息分别输入二维编码设备进行编码,以使二维编码设备输出与深度图对应的视频码流。

当前民用级深度相机已经渐渐在人们生活中普及,但是民用级深度相机拍摄出来的深度图像往往以png格式保存。本申请旨在针对微软生产的民用级相机拍摄的较为密集深度图进行优化,具体的:

以微软kinect深度相机为例进行深度图的拍摄实验,微软给出的方法是将拍摄的结果存成mkv(一种视频格式)格式,mkv包含两个流,分别是颜色流和深度流。本申请使用微软kinect深度相机拍摄了904张图像制作成一个数据集如下表1所示:

表1帧数:904

从表1中可以看出,深度图以未经压缩的原始数据形式存于mkv格式文件中,故此占用巨大的空间。

假设本申请的待压缩的深度图为上述mkv格式的904帧图像,而当这些深度图是连续拍摄的情况下,则mkv视频格式中的904帧图像内部存在一些连续性,除了边缘,他们总是以一种光滑的观感呈现。对于三维物体,物体表面光滑同样满足连续可导的设想。故此,帧内预测是可行的。视频同样在时间上存在连续性,故此才有帧间预测与双向预测的编码方法。深度图拍的是三维物体在时间上的不同动作与位移,同样存在连续性,因此,帧间预测同样适用深度图编码。

本申请中,获取待压缩的深度图;获取深度图中所有的像素点;确定所有的像素点的信息熵的集中区域;根据集中区域对深度图进行拆分,其中,将集中区域内包含的所有像素点拆分为主图,将集中区域外包含的所有像素点拆分为副图;将主图和副图对应的信息分别输入二维编码设备进行编码,以使二维编码设备输出与深度图对应的视频码流。

其中,确定所有的像素点的信息熵的集中区域,包括:确定所有像素点的值;将所有像素点的值转换为二进制数;根据二进制数对深度图中各个像素点的值进行位面统计;根据位面统计结果确定所有的像素点的信息熵的集中区域。而根据位面统计结果确定所有的像素点的信息熵的集中区域,包括:根据位面统计结果生成相应的积分图;确定积分图项最大值对应的位面为信息熵的集中区域。

举例而言,微软kinect深度相机所拍摄的图像位深为16位,二维编码方案一般只能做到8位的无损编码,即二维编码设备所允许的最大位深为8位,因此,本申请中,可以将位深为16位的待压缩的图像切成一张高8位图像和一张低8位图像。具体的,对于微软kinect深度相机所拍摄的一帧深度图,我们得到位面统计信息如下表2所示:

表2

具体的,该位面统计就是将像素点的值转换为二进制数,而在深度图中,像素值实质上是用于表示画面物体的深度,其取值范围为0-65535,那么,转换为2进制数就是落入0000000000000000-1111111111111111的取值区间内,位面统计则是为了统计二进制数中1所处的位置,例如,得到一低八位十进制像素值为64,转换为二进制则为0000000001000000,也就是说,1落在位面6,则位面6的统计数加1。

位面统计的方法能够给出整张图所有深度在各位上的分布情况,还需要进一步找出一个数据最为集中的8位区间,即熵编码的集中区域,将此区间作为主图的取值依据。即根据位面统计结果生成相应的积分图如下表3所示:

表3

在该表3中,Stat_i为第i位的统计结果;Sigma(i)=∑Stat_k,即0-i位的统计结果求和;积分图Si=Sigma(i)-Sigma(i-7)。

当积分图确定以后,我们只需要遍历上表3,取积分图项最大值即可。于是,我们可以得出结论,以表3为例的情况下,信息熵的集中区域主要是集中在8-15位,因此, 8-15位这个位面区间为主图对应的区间,即主图为高位图。副图的位面区间为0-7,即副图是低位图。

另外,由于此相机拍摄范围有限,故此对所有深度图的分析都能得到高八位为主图的结论。主图确定了以后,显而易见,整张深度图的熵集中在主图上,附图只携带少量信息。而这种分布尤其适合二维编码将多张深度图输入到二维编码设备中,以使二维编码设备将多张深度图压缩为视频流格式。

本申请还包括:获取主图和副图中的低位图;生成低位图所对应的补图;比较对低位图和补图编码后的压缩率;如果对低位图编码后的压缩率高于对补图编码后的压缩率,将低位图作为二维编码设备的输入;如果对低位图编码后的压缩率低于对补图编码后的压缩率,将低位图所对应的补图作为二维编码设备的输入。

假设对低位图编码后的压缩率低于对补图编码后的压缩率,具体编码时,将高位图以及低位图的补图输入到二维编码设备中,二维编码设备在编码时,首先对高位图进行编码,接着对低位图的补图进行编码操作,再对颜色、声音进行编码,最后对数据进行多路复用,看是否结束,没有则继续进行编码。

其中,当将编码后的视频码流发送给终端设备时,终端解码器会对主图和副图进行分别解码,之后将主图和副图进行组合,以将视频码流恢复为深度图。

本申请的有益效果在于:能够确定所有的像素点的信息熵的集中区域,将所述集中区域内包含的所有像素点拆分为主图,将所述集中区域外包含的所有像素点拆分为副图,从而可以基于信息熵的集中区域这一条件实现对深度图的拆分,进而使得拆分之后的多张深度图能够直接通过二维编码设备进行压缩,便于进行网络分发。

在一个实施例中,上述步骤S13可被实施为以下步骤A1-A4:

在步骤A1中,确定所有像素点的值;

在步骤A2中,将所有像素点的值转换为二进制数;

在步骤A3中,根据二进制数对深度图中各个像素点的值进行位面统计;

在步骤A4中,根据位面统计结果确定所有的像素点的信息熵的集中区域。

在一个实施例中,如图2所示,上述步骤A4可被实施为以下步骤S21-S22:

在步骤S21中,根据位面统计结果生成相应的积分图;

在步骤S22中,确定积分图项最大值对应的位面为信息熵的集中区域。

在一个实施例中,如图3所示,方法还可被实施为以下步骤S31-S35:

在步骤S31中,确定所述主图和所述副图中的高位图和低位图;

在步骤S32中,生成低位图所对应的补图;

在步骤S33中,比较对低位图和补图编码后的压缩率;

在步骤S34中,如果对低位图编码后的压缩率高于对补图编码后的压缩率,将低位图作为二维编码设备的输入;

在步骤S35中,如果对低位图编码后的压缩率低于对补图编码后的压缩率,将低位图所对应的补图作为二维编码设备的输入。

本实施例中,如图4所示,生成低八位正图,然后生成低八位图所对应的补图;对低八位正图和低八位补图进行压缩编码,之后比较对低位图和补图编码后的压缩率;如果对低位图编码后的压缩率高于对补图编码后的压缩率,说明低位图正图编码效果更优,则将低位图作为二维编码设备的输入;如果对低位图编码后的压缩率低于对补图编码后的压缩率,说明低位图补图编码效果更优,则将低位图所对应的补图作为二维编码设备的输入。

深度图有很多形态,其中可以粗分为稀疏与密集两种。本申请针对的是相对密集的深度图。也就是在x,y坐标上密集,z方向上不做限制的深度图。微软相机所拍摄的深度图在数据上符合x,y坐标密集的特性,空间点除了边缘在八连通通道上总能找到临近点。z轴上的数据范围为0-65535,也就是说需要用16位二进制整数表示。当深度图为稀疏型深度图时,图像内部的连续性较低,这会导致帧内预测的效果不理想,此时,可以通过更为适合稀疏型深度图的编码方式进行编码,具体如下:

在一个实施例中,方法还可被实施为以下步骤:

当深度图中的特征点的密集程度小于预设密集程度时,将待压缩的深度图转换为预设数据结构。

在一个实施例中,将待压缩的深度图转换为预设数据结构,可被实施为以下步骤B1-B4:

在步骤B1中,获取待处理的深度图;

在步骤B2中,确定深度图中的三维目标对象;

在步骤B3中,构建用于包裹三维目标对象的外接正方体;

在步骤B4中,根据外接正方体中的体素分布情况将外接正方体转换为预设数据结构,以通过预设数据结构表示待处理的深度图,其中,预设数据结构为只包含0和1的数据结构。

在深度图像中,完美的图像往往少之又少,大多数深度图像质量一般,像素点稀疏,空间点位置噪声往往很大。传统的深度图往往无损压缩成png格式,压缩成png格式效率并不是很高,仍然存在着很大的改进空间。有鉴于此,本申请试图将这种图像质量一般,像素点稀疏,空间点位置噪声较大的无损深度图像压缩为只包含0和1的二进制数字的数据结构,以提升压缩率。具体的,获取待处理的深度图,确定深度图中的三维目标对象。在确定深度图中的三维目标对象时,确定深度图的分辨率信息;根据深度图的分辨率信息计算各个像素点的坐标值;获取各个像素点所在位置的深度值;根据像素点的坐标值和深度值将像素点转换为具有深度方向坐标的体素;在体素转换完毕时,确定体素构成的对象为三维目标对象。

其中,上述确定深度图的分辨率信息的步骤具体可实施为以下步骤:

确定图像的宽为w像素,高为h像素;

上述根据深度图的分辨率信息计算各个像素点的坐标值的步骤具体可实施为以下步骤:

根据如下公式计算出各个像素点的二维坐标值:

x= i%w,y=[i/w];

其中,i表示任一行的第i个像素点,x表示第i个像素点的横坐标;y表示第i个像素点的纵坐标;%表示取余数;[]表示舍弃掉小数部分,向下取整。

其次,上述根据像素点的坐标值和深度值将像素点转换为具有深度方向坐标的体素可被实施为以下步骤:

在计算出各个像素点的二维坐标值之后,确定各个像素点的深度值;

具体的,在深度图中,假设深度的范围为0-65535,0代表着这个像素位置没有深度数据,如果该点存在着非零值,说明该点存在着深度图数据。因此,在位置坐标(x,y)的基础上,增加一个z表示深度,所以一个点可以用(x,y,z)来表示。即将像素点的深度值作为第三维坐标,得到各个像素点对应的三维坐标值(x,y,z);

根据三维坐标值将各个像素点移动至各个像素点对应的三维坐标值所在位置,其中,移动至各个像素点对应的三维坐标值的像素点为体素。深度图中所有点的集合构成的物体即为三维目标对象。

在确定了三维目标对象之后,构建用于包裹三维目标对象的外接正方体。

之后执行对外接正方体的切割操作,以将外接正方体切割为多个体积相同的第一正方体;对第一正方体进行分析操作,以确定每个第一正方体中是否存在体素;将不存在体素的第一正方体标记为0;将存在体素的第一正方体标记为1;对标记为1的第一正方体继续执行切割和分析操作,直至切割操作的次数达到m次时,确定外接正方体切割完成,其中,m为正整数;将切割完成的外接正方体编码为包含0和1的m层树结构。

下面,结合附图对外接正方体切割过程以及转换为树结构的过程进行详细介绍:

步骤C1:如图5所示,将外接正方体沿着各面中线切割分为8个正方体a,按顺序遍历8个正方体a,如果有点存在于正方体a内,将该正方体a标记为1,将内部不存在点的正方体a标记为0;

步骤C2:如图6所示,在标记为1正方体a重复执行上述步骤B1,即将标记为1的正方体a沿着各面中线切割为更小的8个正方体b,继续按照顺序遍历8个正方体b,如果有点存在于正方体b内,将该正方体b标记为1,将内部不存在点的正方体b标记为0;步骤B1重复执行m次,直至不能向下分为止;

步骤C3:最后得到一个只包含0和1的数据,将其记录成一个树,树包含m层,如图7所示。每一个存在深度值的点都可以在树中得到。也就是说我们将深度图像编码成为一个只包含0和1的树。可以理解的是,由于上述步骤A1可以执行m次,因此,树结构也是m层树结构。

另外,由于需要对外接正方体沿中线切割,因此,在构建用于包裹三维目标对象的外接正方体时,可以先构建用于包裹三维目标对象的最小正方体;如果最小正方体的棱边为L,且L满足L≤2n时,将最小正方体的棱边长度扩大至2n,以构成棱边长度为2n的外接正方体来包裹深度图对应的目标对象,其中,n为正整数。例如,n为1,那么,执行1次上述步骤B1中的切割操作之后,能够保证切割后的最小正方体的边长为正数1,n为2,那么,执行两次上述步骤A1中的切割操作之后,能够保证切割后的最小正方体的边长为正数1。可见,当m≤n时,能够保证整个计算过程中不会出现浮点型数据,因此,该方案中,通过适度扩大棱边长度,使得外接正方体的棱边长度为2n,从而提高了切割后的正方体棱边长度为整数的概率,减少了计算量,提升了计算速度。

另外,在本申请中,确定深度图中的三维目标对象时,还可以通过以下方式确定:

确定深度图的分辨率信息;根据深度图的分辨率信息计算各个像素点的坐标值;获取各个像素点所在位置的深度值;根据像素点的坐标值和深度值将像素点转换为具有深度方向坐标的体素;在体素转换完毕时,生成用于记录同一坐标轴上的体素分布情况的第一表格;根据第一表格判断同一坐标轴上的体素之间是否存在间隙;当存在间隙时,消除体素之间的间隙;确定消除间隙后的体素所构成的对象为三维目标对象,同时生成与第一表格存在映射关系的第二表格,其中,第二表格用于记录消除间隙后的体素的分布情况。举例而言,以z轴为例,z轴表示深度图的深度方向,假设z轴只有4个位置有深度值,分别为87、987、6793和31723这四个位置,如果对着四个深度值进行熵编码,计算量会很大,因此,本申请中,生成用于记录z轴上的体素分布情况的第一表格如下表4所示:

表4

通过该表4可知,z轴上的体素之间存在间隙,因此,需要消除体素之间的间隙,具体的,将87移动到z轴坐标为0的位置,将987移动到z轴坐标为1的位置,将6793移动到z轴坐标为2的位置,将31723移动到z轴坐标为3的位置。之后对上表4进行映射,生成与第一表格存在映射关系的第二表格,其中,第二表格用于记录消除间隙后的体素的分布情况,第二表格如下表5所示:

表5

不难理解的是,在将压缩后的深度图还原成原始深度图时,可以参考上述表4和表5的映射关系进行还原。

本实施例的有益效果在于:当深度图不符合预设条件时,能够根据外接正方体中的体素分布情况将外接正方体转换为只包含0和1的预设数据结构来表示待处理的深度图,通过对该预设数据结构编码之后得到的深度图压缩数据中只包含0和1,因此,相对于传统的将深度图压缩为其他格式图片的压缩方式而言,提升了压缩率。

在一个实施例中,上述步骤B2可被实施为以下步骤D1-D8:

在步骤D1中,确定深度图的分辨率信息;

在步骤D2中,根据深度图的分辨率信息计算各个像素点的坐标值;

在步骤D3中,获取各个像素点所在位置的深度值;

在步骤D4中,根据像素点的坐标值和深度值将像素点转换为具有深度方向坐标的体素;

在步骤D5中,在体素转换完毕时,生成用于记录同一坐标轴上体素分布情况的第一表格;

在步骤D6中,根据第一表格判断同一坐标轴上的体素之间是否存在间隙;

在步骤D7中,当存在间隙时,减小间隙之后各个体素在坐标轴上的坐标值,以消除体素之间的间隙;

在步骤D8中,确定消除间隙后的体素所构成的对象为三维目标对象。

在一个实施例中,上述步骤B4可被实施为以下步骤E1-E6:

在步骤E1中,执行对外接正方体的切割操作,以将外接正方体切割为多个体积相同的第一正方体;

在步骤E2中,对第一正方体进行分析操作,以确定每个第一正方体中是否存在体素;

在步骤E3中,将不存在体素的第一正方体标记为0;

在步骤E4中,将存在体素的第一正方体标记为1;

在步骤E5中,对标记为1的第一正方体继续执行切割和分析操作,直至切割操作的次数达到m次时,确定外接正方体切割完成,其中,m为正整数;

在步骤E6中,将切割完成的外接正方体编码为包含0和1的m层树结构。

上述将深度图转换为m层树的过程为划分过程,假设体素的数目为p个,上次切割操作执行m次,那么,整个过程的运算规模为p×m次。

例如,p为279664,那么,整个计算过程的处理次数如下表6所示:

表6

可见,上述方式最终需要进行2237312(279664×8)次运算,运算规模较为庞大。因此,鉴于八叉树性能堪忧,而容积视频等需要高度实时要求,我们改变思路,从几何级数的收敛上来考虑这个问题:

若存在数列如下:p1,p1*r,p1*r2,...p1*r(n-1),...;其和为: Sn= ∑ p1*r(n-1);求和公式为:Sn= p1*(rn-1)/(r-1);若0<r<1 则Sn收敛。

基于这样的思想,若将体素由上述划分过程改为归并过程,由至顶向下划分改为至底向上归并,就有可能产生上述几何级数的收敛过程中的衰减因子r,随着归并过程的不断进行,衰减因子会不断减小,从而使得每一层的运算量都会下降,加速完成数据压缩。

基于上述原因,我们提供将体素通过归并过程进行压缩的方案,具体如下:

在一个实施例中,上述步骤B4还可被实施为以下步骤F1-F3:

在步骤F1中,将所述外接正方体内每一个体素确定为单位边长的盒子;

在步骤F2中,基于所述单位边长的盒子进行建堆操作,得到所述点云数据的八叉堆结构;

在步骤F3中,对所述八叉堆结构进行熵编码,得到编码后的点云数据。其中,上述步骤F2可通过以下步骤a1实现:

在步骤a1中,将所述单位边长的盒子作为第一层,以第一层作为初始层,逐层向上归并,直至第n层的盒子的边长等于所述外接正方体的边长,则停止归并,得到所述点云数据的八叉堆结构;其中,n为正整数。

具体的,该步骤a1还可以进一步通过步骤S111-S112实现:

在步骤S111中:针对任一2k*2k*2k的盒子,计算该盒子对应的上一层盒子;其中,上一层盒子的边长为2k+1*2k+1*2k+1

在步骤S112中:令k的取值依次为0、1…n,重复执行步骤S111,直至得到的上一层盒子的边长等于所述外接正方体的边长,则停止执行步骤S111,得到所述点云数据的八叉堆结构;其中,n为整数。

而上述步骤S111可以进一步实施为:针对任一2k*2k*2k的盒子,若该盒子不存在对应的上一层盒子,则建立与该盒子对应的上一层盒子;若该盒子存在对应的上一层盒子,则将该盒子归并入对应的上一层盒子。

具体而言:单位边长可视为1,那么,将所述外接正方体内每一个体素确定为单位边长的盒子即将每个体素视为1x1x1的盒子,有如下算法:

第一步:将当前每一个2k*2k*2k盒子,求其落入的高一层边长大一倍的2k+1*2k+1*2k +1父盒子位置。此时,最多可有八个盒子有相同的父盒子。

第二步:令k=k+1, 重复第一步,直到当前盒子等于外接正方体的边长。

这个过程符合堆的思想,结束时产生堆顶。

需要说明的是,k=k+1属于编程思想,并不是数学意义上的公式,k=k+1的意义在于,每次执行一次上述第一步,则k进行一次步长为1的自加操作。

整个归并过程的计算次数如下:

表7:

从上表可以看出,虽然并不存在一个确定的衰减因子,但是大致可以得到一个近似值,使得r≈0.24。

与上述划分过程相比,子盒子数目一共有369861个,因此,归并过程一共执行369861次。也就是说,单纯的划分过程需要运算2237312次,而归并过程则需要运算369861次。从运算次数上来看,归并方案的性能优于划分方案。

表7反映的是体素较为稠密的情况下的衰减因子。而对于体素稀疏的情况,它的衰减形态有可能无法达到表7的衰减效果,在前几层衰减率很小甚至不衰减,具体的,体素系数的情况下,衰减形态可如下表8所示:

表8

从上表8可以看出,第5层以前,衰减效果不佳。这是由于体素在整数空间上的分布非常稀疏,因此,建堆效果在底下几层效果不佳。

针对上述情况,上述步骤F2还可通过以下方式b1-b3实现:

在步骤b1中,基于所述单位边长的盒子,选取部分样本体素作为探测数据,以第一层为起始层,逐层向上归并,得到各层的盒子数量;

在步骤b2中,从第二层开始,针对任一层盒子,计算当前层盒子的数量与当前层的下一层盒子的数量之比,比值为当前层的探测衰减因子;

步骤b1具体可被实施为以下步骤S211-S212:

在步骤S211中:针对选取的部分样本体素中的任一2k*2k*2k的盒子,计算该盒子对应的上一层盒子;其中,上一层盒子的边长为2k+1*2k+1*2k+1

在步骤S212中:令k的取值依次为0、1…n,重复执行步骤S211,并统计各层对应的盒子数量。

在步骤b3中,当所述探测衰减因子低于设定阈值时,将当前探测衰减因子对应的当前层作为初始层,逐层向上归并,直至第n层的盒子的边长等于所述外接正方体的边长,则停止归并,得到所述点云数据的八叉堆结构;其中,n为正整数。

步骤b3具体可被实施为以下步骤S311- S313:

在步骤S311中,根据第一层盒子的边长,计算得到第m层盒子的边长;其中,第m层为所述初始层;

在步骤S312中,针对任一2k*2k*2k的盒子,计算该盒子对应的上一层盒子;其中,上一层盒子的边长为2k+1*2k+1*2k+1

步骤S312具体可被实施为:针对任一2k*2k*2k的盒子,若该盒子不存在对应的上一层盒子,则建立与该盒子对应的上一层盒子;若该盒子存在对应的上一层盒子,则将该盒子归并入对应的上一层盒子。

在步骤S313中,令k的取值依次为m、m+1…n,重复执行步骤S312,直至得到的上一层盒子的边长等于所述外接正方体的边长,则停止执行步骤S312,得到所述点云数据的八叉堆结构;其中,m为初始层的层数、n为整数。

对每一层非空盒子的数量进行统计;根据统计结果确定盒子的衰减率达到预设比率的目标层;从目标层开始根据每一层盒子的位置及其对应的下一层盒子进行建堆操作:而针对目标层以上的盒子:获取目标层以上的每一层盒子的位置;通过划分的方式记录目标层以上的每一层盒子的位置。

具体的,针对体素较为稀疏的情况,可以再定一个探测衰减因子r1,使得:r1=Cur_B_Count/Point_Count;若 r1<T 则从该层开始建堆。其中Cur_B_Count为本层的归并后的父盒子数量,Point_Count为原体素数目。T为经验阈值,通常设定为0.6,从上述表格可知,第8层的衰减因子<0.6,则从第8层开始建堆能迅速衰减。

引入堆的概念在稠密点云下具有无可比拟的速度优势,在稀疏点云下依旧能保持良好的速度。这是根据树结构进行压缩编码的方案之外的另一种良性的编码方法。

图8为本申请一实施例中一种深度图压缩装置的框图,如图8所示,该装置包括以下模块:

第一获取模块81,用于获取待压缩的深度图;

第二获取模块82,用于获取深度图中所有的像素点;

确定模块83,用于确定所有的像素点的信息熵的集中区域;

拆分模块84,用于根据集中区域对深度图进行拆分,其中,将集中区域内包含的所有像素点拆分为主图,将集中区域外包含的所有像素点拆分为副图;

编码模块85,用于将主图和副图对应的信息分别输入二维编码设备进行编码,以使二维编码设备输出与深度图对应的视频码流。

在一个实施例中,确定模块,包括:

第一确定子模块,用于确定所有像素点的值;

转换子模块,用于将所有像素点的值转换为二进制数;

统计子模块,用于根据二进制数对深度图中各个像素点的值进行位面统计;

第二确定子模块,用于根据位面统计结果确定所有的像素点的信息熵的集中区域。

在一个实施例中,第二确定子模块,具体用于:

根据位面统计结果生成相应的积分图;

确定积分图项最大值对应的位面为信息熵的集中区域。

在一个实施例中,编码模块,包括:

第三确定子模块,用于确定所述主图和所述副图中的高位图和低位图;

生成子模块,用于生成所述低位图所对应的补图;

比较子模块,用于比较对所述低位图和所述补图编码后的压缩率;

第一输入子模块,用于如果对所述低位图编码后的压缩率高于对所述补图编码后的压缩率,将低位图本身和高位图本身输入二维编码设备进行编码;

第二输入子模块,用于如果对所述低位图编码后的压缩率低于对所述补图编码后的压缩率,将低位图所对应的补图和高位图本身输入二维编码设备进行编码。

图9为本申请提供的一种深度图压缩系统的硬件结构示意图,包括:

至少一个处理器920;以及,

与至少一个处理器通信连接的存储器904;其中,

存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行以实现上述任一实施例所记载的深度图压缩方法。

参照图9,该深度图压缩系统900可以包括以下一个或多个组件:处理组件902,存储器904,电源组件906,多媒体组件908,音频组件910,输入/输出接口912,传感器组件914,以及通信组件916。

处理组件902通常控制深度图压缩系统900的整体操作,处理组件902可以包括一个或多个处理器920来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件902可以包括一个或多个模块,便于处理组件902和其他组件之间的交互。例如,处理组件902可以包括多媒体模块,以方便多媒体组件908和处理组件902之间的交互。

存储器904被配置为存储各种类型的数据以支持在深度图压缩系统900的操作。这些数据的示例包括用于在深度图压缩系统900上操作的任何应用程序或方法的指令,如文字,图片,视频等。存储器904可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。

电源组件906为深度图压缩系统900的各种组件提供电源。电源组件906可以包括电源管理系统,一个或多个电源,及其他与为深度图压缩系统900生成、管理和分配电源相关联的组件。

多媒体组件908包括在深度图压缩系统900和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件908还可以包括一个前置摄像头和/或后置摄像头。当深度图压缩系统900处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。

音频组件910被配置为输出和/或输入音频信号。例如,音频组件910包括一个麦克风(MIC),当深度图压缩系统900处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器904或经由通信组件916发送。在一些实施例中,音频组件910还包括一个扬声器,用于输出音频信号。

输入输出接口912为处理组件902和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。

传感器组件914包括一个或多个传感器,用于为深度图压缩系统900提供各个方面的状态评估。例如,传感器组件914可以包括声音传感器。另外,传感器组件914可以检测到深度图压缩系统900的打开/关闭状态,组件的相对定位,例如组件为深度图压缩系统900的显示器和小键盘,传感器组件914还可以检测深度图压缩系统900或深度图压缩系统900的一个组件的位置改变,用户与深度图压缩系统900接触的存在或不存在,深度图压缩系统900方位或加速/减速和深度图压缩系统900的温度变化。传感器组件914可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件914还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件914还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。

通信组件916被配置为使深度图压缩系统900提供和其他设备以及云平台之间进行有线或无线方式的通信能力。深度图压缩系统900可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件916经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件916还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。

在示例性实施例中,深度图压缩系统900可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述深度图压缩方法。

本申请还提供了一种计算机可读存储介质,当存储介质中的指令由深度图压缩系统对应的处理器执行时,使得深度图压缩系统能够实现上述任一实施例所记载的深度图压缩方法。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

25页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:视频编码、解码方法、装置、电子设备及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类