基于霍夫曼编码的深度图压缩方法、解压缩方法及编码器转让专利

申请号 : CN201910681225.0

文献号 : CN110473264B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 符样清李骊

申请人 : 北京华捷艾米科技有限公司

摘要 :

本发明公开了基于霍夫曼编码的深度图压缩方法、解压缩方法及编码器,涉及图像压缩技术,属于电通信的技术领域。该方法根据从深度图像中提取的输入数据流创建霍夫曼树,根据所创建的霍夫曼树并通过深度学习算法训练描述深度图输入像素点和实际霍夫曼编码值对应关系的线性回归模型,根据训练后的线性回归模型输出的优化霍夫曼编码构建对应于输入像素点的编码表,通过快速地为输入的像素点计算霍夫曼编码实现了深度图的快速压缩,缩短压缩时间,提高编码效率。

权利要求 :

1.基于霍夫曼编码的深度图压缩方法,其特征在于,根据从深度图像中提取的输入数据流创建霍夫曼树,根据所创建的霍夫曼树并通过深度学习算法训练描述深度图输入像素点和实际霍夫曼编码值对应关系的线性回归模型,根据训练后的线性回归模型输出的优化霍夫曼编码构建对应于输入像素点的编码表;通过深度学习算法训练描述深度图输入像素点和实际霍夫曼编码值对应关系的线性回归模型的过程中,采用梯度下降法拟合使得代价函数最小的线性回归模型参数,所述代价函数为: x为输入的像素点,a和b为线性回归模型的参数,m为训练的数量,y(x)为线性回归模型的计算值,a(x)为实际的霍夫曼值,采用梯度下降法拟合使得代价函数最小的线性回归模型参数的具体方法为:按照表达式 递减线性递归模型参数a直至模型收敛,α为步长,f(a)为纵坐标。

2.根据权利要求1所述基于霍夫曼编码的深度图压缩方法,其特征在于,从深度图像中提取的输入数据流创建霍夫曼树的方法为:将深度图转换为二进制编码的输入数据流,将输入数据流的字符值转换为ascii码后再根据ascii码中各字符的权值构建霍夫曼树。

3.根据权利要求1所述基于霍夫曼编码的深度图压缩方法,其特征在于,存储编码表于输出文件中。

4.根据权利要求2所述基于霍夫曼编码的深度图压缩方法,其特征在于,采用c语言所提供的标准库函数open或者fopen将深度图转换为二进制编码的输入数据流。

5.实现权利要求1所述方法的编码器,其特征在于,包括:

创建模块,根据从深度图像中提取的输入数据流创建霍夫曼树,

编码优化模块,读取创建模块创建的霍夫曼树,通过深度学习算法训练描述深度图输入像素点和实际霍夫曼编码值对应关系的线性回归模型,及,编码表生成模块,读取编码优化模块输出的优化霍夫曼编码,构建对应于输入像素点的编码表。

6.根据权利要求5所述编码器,其特征在于,该编码器还包括存储器,用于存储保存有编码表的输出文件。

7.一种深度图解压缩方法,其特征在于,读取权利要求1所述压缩方法输出的编码表,译码后完成深度图的解压缩。

说明书 :

基于霍夫曼编码的深度图压缩方法、解压缩方法及编码器

技术领域

[0001] 本发明公开了基于霍夫曼编码的深度图压缩方法、解压缩方法及编码器,涉及图像压缩技术,属于电通信的技术领域。

背景技术

[0002] 深度图是通过立体照相机或者TOF相机获取的。深度图像又被称作距离影像,是指以从图像采集器到场景中各点的距离作为像素值的图像,它直接反映了景物可见表面的几何形状。深度图像经过坐标转换可以计算为点云数据,有规则及必要信息的点云数据也可以反算为深度图像数据。我们通过深度相机构建交互式空间,多个相机可用于测量较大的交互空间或者解决单个相机的视线限制。但是,我们需要校准相机并且将它们置于同一坐标系中,但是每一台相机只能连接一台pc,因此我们需要多台联网的电脑,通过局域网传输相机数据,将图像处理的任务交给主机,因此深度图压缩技术就起到了作用。
[0003] 联网多个相机的pc传输数据将受到网络带宽的影响,例如单个微软的kinect传感器传输彩色高清图像使用视频传输速率需要超过1.4Gbps的网络带宽,但是使用高质量的压缩方式可以将所需带宽降低到30.7Mbps或15.4Mbps,允许在典型的1Gbps局域网上使用多个摄像头。Kinect的深度图像为512×424,每个深度图像约为424KB或104Mbps。一个典型的1Gbps大约可以支持7个kinect设备,但是通过压缩深度图像可以允许支持七个以上的设备,减少延迟,并为其它要传输的数据保留网络带宽。
[0004] 经典的霍夫曼编码依据字符出现概率来构造异字头的平均长度最短的码字,当创建的霍夫曼树包含较多带权路径时,为输入的像素点寻找对应的霍夫曼编码相对复杂、耗时较大,因而降低编码效率。本申请旨在提出一种能够快速地为输入的像素点寻找霍夫曼编码的深度图压缩方法。

发明内容

[0005] 本发明的发明目的是针对上述背景技术的不足,提供了基于霍夫曼编码的深度图压缩方法、解压缩方法及编码器,通过快速地为输入的像素点计算霍夫曼编码实现了深度图的快速压缩,解决了传统霍夫曼编码效率较低的技术问题。
[0006] 本发明为实现上述发明目的采用如下技术方案:
[0007] 基于霍夫曼编码的深度图压缩方法,根据从深度图像中提取的输入数据流创建霍夫曼树,根据所创建的霍夫曼树并通过深度学习算法训练描述深度图输入像素点和实际霍夫曼编码值对应关系的线性回归模型,根据训练后的线性回归模型输出的优化霍夫曼编码构建对应于输入像素点的编码表。
[0008] 进一步的,基于霍夫曼编码的深度图压缩方法中,通过深度学习算法训练描述深度图输入像素点和实际霍夫曼编码值对应关系的线性回归模型的过程中,采用梯度下降法拟合使得代价函数最小的线性回归模型参数。
[0009] 进一步的,基于霍夫曼编码的深度图压缩方法中,从深度图像中提取的输入数据流创建霍夫曼树的方法为:将深度图转换为二进制编码的输入数据流,将输入数据流的字符值转换为ascii码后再根据ascii码中各字符的权值构建霍夫曼树。
[0010] 进一步的,基于霍夫曼编码的深度图压缩方法中,存储编码表于输出文件中。
[0011] 再进一步的,基于霍夫曼编码的深度图压缩方法中,代价函数为:x为输入的像素点,a和b为线性回归模型的参数,m为训练的数量,y
(x)为线性回归模型的计算值,a(x)为实际的霍夫曼值。
[0012] 再进一步的,基于霍夫曼编码的深度图压缩方法中,采用梯度下降法合使得代价函数最小的线性回归模型参数的具体方法为:按照表达式 递减线性递归模型参数a直至模型收敛,α为步长。
[0013] 更进一步的,基于霍夫曼编码的深度图压缩方法,采用c语言所提供的标准库函数open或者fopen将深度图转换为二进制编码的输入数据流。
[0014] 实现上述方法的编码器,包括:
[0015] 创建模块,根据从深度图像中提取的输入数据流创建霍夫曼树,[0016] 编码优化模块,读取创建模块创建的霍夫曼树,通过深度学习算法训练描述深度图输入像素点和实际霍夫曼编码值对应关系的线性回归模型,及,
[0017] 编码表生成模块,读取编码优化模块输出的优化霍夫曼编码,构建对应于输入像素点的编码表。
[0018] 进一步的,编码器包括存储器,用于存储保存有编码表的输出文件。
[0019] 一种深度图解压缩方法,读取上述压缩方法输出的编码表,译码后完成深度图的解压缩。
[0020] 本发明采用上述技术方案,具有以下有益效果:本发明针对从霍夫曼树查找霍夫曼编码存在的耗时问题,提出了一种利用深度学习训练编码查找过程的线性回归模型,采用梯度下降算法确定使得代价函数最小的模型参数,利用训练后的模型快速地优化输入像素点的霍夫曼编码,有效节省深度图传输所需的带宽,缩短压缩时间并提高编码效率。

附图说明

[0021] 图1为根据字符“ffwqaffaawe”的权值所构建的霍夫曼树。
[0022] 图2为本发明的流程图。

具体实施方式

[0023] 下面结合附图对发明的技术方案进行详细说明。
[0024] 首先我们需要使用深度相机获得深度图片,例如微软的kinect相机。然后通过c语言所提供的标准库函数open或者fopen将获取到的深度图转换为输入流,通过输入流计算其中各字符出现的频率获取每一个字符的权值,通过获取到的权值构建霍夫曼树。例如,如果输入流的字符值由二进制转为ascii码表示的字符为“ffwqaffaawe”,则其中f的权值为4,w的权值为2,q的权值为1,a的权值为3,e的权值为1,则通过权值构建的霍夫曼树就如图1所示。我们用0和1分别表示左节点和右结点的值,其中,e的值为0000,q的值为0001,w的值为001,a的值为01,f的值为1,则“ffwqaffaawe”的霍夫曼编码为
110010001011101010010000,我们通过创建一个结构体并且存储它的权值,左结点和右结点的指针构建一个链表再通过得到的权值创建霍夫曼树,然后我们通过霍夫曼树进行递归之后得到出字符的霍夫曼编码,并且通过得到的霍夫曼编码构建编码表,方便验证并且进行译码,之后将得到的霍夫曼编码存储到输出文件中。解码就是编码过程的逆过程,对于确定的一串霍夫曼编码,从根节点开始沿着编码中的二进制顺序找到叶子节点获取字符,应用前缀编码的特性,解码出一个字符又重新开始从根节点进行下一次解码,不存在错误路径或是冗余操作。
[0025] 使用深度学习算法进行霍夫曼编码的优化,主要是让它能够快速的找到深度图像素点对应的霍夫曼编码值,因此输入就是深度图的像素点,输出是像素点经过霍夫曼编码后的对应数值,隐含层就是基于霍夫曼编码的训练算法,首先我们创建其线性回归模型:y=ax+b,其中,x是为深度图的像素点,y是它经过霍夫曼编码后转换的值,我们需要找到一个能精准描述数据之间关系的线性回归模型,就需要用到代价函数,代价函数是是用来描述线性回归模型和正式数据的差异,如果完全没有差异则这个线性回归模型能完整表述数据之间的关系,如果要找到最佳拟合的线性回归模型就需要代价函数足够的小,代价函数为 其中,m为训练的数量,y(x)为模型算出的值,a(x)为实际的霍夫曼值,为了使得代价函数足够小,我们可以采用梯度下降算法,就是不断地进行下面的操作直到f(a,b)收敛, 其中,α为步长,我们可以将其简化为 横
坐标是a,纵坐标是f(a),经过不断的循环可以将式子向最低点移动从而得到代价函数的最小值,从而能够通过像素点算出对应的霍夫曼值,大大减小压缩时间。
[0026] 如图2所示,对于待压缩的深度图像,本申请首先创建霍夫曼树,然后将创建后的霍夫曼树输入线性回归模型,通过深度学习算法循环训练模型,循环训练的过程通过梯度下降法获得模型收敛时的参数,训练后的线性模型能够根据输入的像素点快速计算出接近于实际霍夫曼值的优化霍夫曼编码,相对于传统的霍夫曼编码技术,大大减小压缩时间。根据线性回归模型输出的优化霍夫曼编码构建对应于输入像素点的编码表,将编码表存储在输出文件中以供验证、译码调用。
[0027] 经过测验,本申请公开的霍夫曼编码压缩一张640×480的深度图所需要的时间为11ms,它将一张614400字节的深度图压缩为148280字节,原来需要的带宽为600kb经过霍夫曼编码压缩后需要的带宽为140kb,实现了节省带宽的目的。经过500张深度图的不断训练后深度学习算法优化后需要的时间为2ms。虽然压缩大小被没有改变,但是压缩的时间大大缩短。并且本申请公开的深度图压缩方法适用于华捷艾米A100/A200,微软kinect等只要是获得深度图的设备都可以。