基于小波变换的图像编解码方法及装置转让专利

申请号 : CN201910639304.5

文献号 : CN112235583B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吴枫马海川刘东杨海涛

申请人 : 华为技术有限公司中国科学技术大学

摘要 :

本发明公开了计算机领域中的一种图像编解码技术,具体涉及一种基于小波变换图像编解码方法,包括:在编码时,根据小波变换模型对待编码图像进行N次小波变换,以得到小波系数,所述小波变换模型是基于CNN实现的,对小波系数进行量化,以得到量化后的小波系数;对量化后的小波系数进行熵编码,得到压缩码流。在解码时,对压缩码流进行熵解码,以得到重构的小波系数;对重构的小波系数进行反量化,以得到反量化后的小波系数;根据小波变换模型对反量化后的小波系数进行N次小波反变换,以得到重建图像,其中,小波变换模型是基于CNN实现的。采用本发明实施例有利于提高图像的编解码性能。

权利要求 :

1.一种基于小波变换的图像编码方法,其特征在于,包括:根据小波变换模型对待编码图像进行N次小波变换,以得到小波系数,所述小波变换中的预测操作和/或更新操作是基于卷积神经网络CNN实现的,所述N为大于0的整数;

对所述小波系数进行量化,以得到量化后的小波系数;

对所述量化后的小波系数进行熵编码,得到压缩码流;

其中,所述对所述量化后的小波系数进行熵编码,得到压缩码流,包括:根据熵编码模型对所述量化后的小波系数进行编码,以得到所述压缩码流,所述小波系数包括3N+1个子带,所述熵编码模型是基于深度神经网络得到实现的;具体包括:将第s个子带输入所述熵编码模型中计算得到待编码系数的累积概率分布函数的参数,所述待编码系数为所述第s个子带中任一个系数,所述第s个子带为所述3N+1个子带中的任意一个子带;

根据所述待编码系数的累积概率分布函数的参数得到所述累积概率分布函数;

根据所述待编码系数及其累积概率分布函数获取所述待编码系数的概率分布;

根据所述待编码系数的概率分布,采用算术编码器对所述待编码系数进行熵编码,以得到所述待编码系数对应的码流,所述压缩码流包括所述待编码系数对应的码流。

2.根据权利要求1所述的方法,其特征在于,所述根据小波变换模型对待编码图像进行N次小波变换,以得到小波系数,包括:在进行第i次小波变换时,对子带X进行分解,以得到奇数采样分量和偶数采样分量,其中,所述奇数采样分量由所述子带X中奇数行系数或奇数列系数构成,所述偶数采样分量由所述子带X中偶数行系数或偶数列系数构成,对所述偶数采样分量和奇数采样分量进行更新操作和预测操作,以得到中间近似分量和中间细节分量;

对所述中间近似分量进行分解,以得到第一采样分量和第二采样分量;其中,所述第一采样分量由所述中间近似分量的奇数列的系数或奇数行的系数,所述第二采样分量由所述中间近似分量的偶数列的系数或偶数行的系数构成;

对所述中间细节分量进行分解,以得到第三采样分量和第四采样分量;其中,所述第三采样分量由所述中间细节分量的奇数行的系数或奇数行的系数构成,第四采样分量由所述中间细节分量的偶数列的系数或偶数行的系数构成;

对所述第一采样分量和第二采样分量进行所述更新操作和所述预测操作,以得到近似子带Pi和细节子带Ii1;

对所述第三采样分量和第四采样分量进行所述更新操作和所述预测操作,以得到细节子带Ii2和细节子带Ii3;

其中,所述小波系数包括近似子带Pi、细节子带Ii1、细节子带Ii2和细节子带Ii3;当所述第i次小波变换为第一次小波变换时,所述子带X为所述待编码图像;当所述第i次小波变换不是第一次小波变换时,子带X为近似子带Pi‑1,所述近似子带Pi‑1为进行i‑1次小波变换后得到的近似子带。

3.根据权利要求1或2所述的方法,其特征在于,当所述第s个子带为所述3N+1个子带中的第一个子带时,所述熵编码模型是基于逐像素卷积神经网络pixelCNN实现的,所述熵编码模型包括M个卷积层,所述M为大于0的整数,所述将所述第s个子带输入所述熵编码模型中计算得到待编码系数的累积概率分布函数的参数,包括:当M=1时,根据第1个卷积层对应的窗函数对所述第1个卷积层对应的卷积核进行加窗操作,得到第一加窗后的卷积核;

根据所述第一加窗后的卷积核对所述第s个子带进行卷积操作,得到所述待编码系数的累积概率分布函数的参数;

当M大于1时,在进行第j个卷积层的运算时,根据第j个卷积层对应的窗函数对第j个卷积层对应的卷积核进行加窗操作,得到第二加窗后的卷积核;

根据所述第二加窗后的卷积核对所述第j个卷积层的输入数据进行卷积操作,得到第j个输出数据;

其中,当j=1时,所述第j个卷积层的输入数据为所述第一个子带;当j大于1且不大于M时,所述第j个卷积层的输入数据为第j‑1个卷积层的输出数据;当j=M时,所述第j个输出数据包括所述待编码系数的累积概率分布函数的参数。

4.根据权利要求1或2所述的方法,其特征在于,当所述第s个子带不为所述3N+1个子带中的第一个子带时,所述熵编码模型包括第一熵编码模型、第二熵编码模型和第三熵编码模型,所述第一熵编码模型和第二熵编码模型均是基于逐像素卷积神经网络实现的,所述第三熵编码模型是基于循环神经网络RNN实现的,所述第一熵编码模型包括T1个卷积层,所述第二熵编码模型包括T2个卷积层,所述T1和T2均为大于0的整数,所述将所述第s个子带输入所述熵编码模型中计算得到待编码系数的累积概率分布函数的参数,包括:将第s‑1个子带输入到所述第三熵编码模型中进行计算,以得到第一输出结果;所述第一输出结果为所述第二熵编码模型的输入数据;所述第s个子带为所述第一熵编码模型的输入数据;

当所述T1和T2均等于1时,根据卷积层C1和卷积层C2对所述第一输出结果和所述第s个子带进行融合操作,得到第二输出结果,所述第二输出结果为所述待编码系数的累积概率分布函数的参数,所述卷积层C1和所述卷积层C2分别为所述第一熵编码模型和第二熵编码模型中的卷积层;或者

当所述T1大于1且所述T2等于1时,根据卷积层C1和卷积层C2对所述第一输出结果和所述第s个子带进行融合操作,得到所述第二输出结果,所述卷积层C1为所述第一熵编码模型中的第q个卷积层,所述卷积层C2为所述第二熵编码模型中的卷积层;若所述q=T1,则所述第二输出结果为所述待编码系数的累积概率分布函数的参数;若q大于0且小于T1,则所述第二输出结果为所述第一熵编码模型中的第q+1个卷积层的输入数据;或者,当所述T1和T2均大于1时,根据卷积层C1和卷积层C2对所述第一输出结果和所述第s个子带进行融合操作,得到所述第二输出结果;所述卷积层C1为所述第一熵编码模型中的第q1个卷积层,所述卷积层C2为第二熵编码模型中的第q2个卷积层;若所述q1=T1且q2=T2,则所述第二输出结果为所述待编码系数的累积概率分布函数的参数,若所述q1大于0且小于T1,所述q2大于0且小于T2,则所述第二输出结果为所述第一熵编码模型中的第q1+1个卷积层的输入数据,所述卷积层C2的输出结果为所述第二熵编码模型中的第q2+1个卷积层的输入数据。

5.根据权利要求4所述的方法,其特征在于,当所述第s‑1个子带的分辨率与第s个子带的分辨率不相同时,所述将第s‑1个子带输入到所述第三熵编码模型中进行计算,以得到第一输出结果,包括:

根据所述第三熵编码模型及第三熵编码模型的状态变量对所述第s‑1个子带进行卷积运算,以得到卷积结果;

对所述卷积结果进行上采样,以得到所述第一输出结果,所述第一输出结果的分辨率与所述第s个子带的分辨率相同;

所述对所述卷积结果进行上采样,以得到所述第一输出结果之后,所述方法还包括:对卷积之后的状态变量进行上采样,以得到采样后的状态变量,所述采样后的状态变量与所述第s个子带的分辨率相同。

6.根据权利要求4所述的方法,其特征在于,所述根据卷积层C1和卷积层C2对所述第一输出结果和所述第s个子带进行融合操作,包括:根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,所述第一卷积核为所述卷积层C1对应的卷积核;

根据所述加窗后的第一卷积核对第一输入数据进行卷积操作,以得到第一卷积结果;

当所述卷积层C1为所述第一熵编码模型中的第1个卷积层时,所述第一输入数据为所述第s个子带,当所述卷积层C1为所述第一熵编码模型中的非第1个卷积层时,所述第一输入数据是对所述第s个子带进行卷积操作得到的,将第二输入数据输入到第二子卷积层进行卷积操作,以得到第二卷积结果;当所述卷积层C2为所述第二熵编码模型中的第1个卷积层时,所述第二输入数据为所述第一输出结果,当所述卷积层C2为所述第二熵编码模型中的非第1个卷积层时,所述第二输入数据是对所述第一输出结果进行卷积操作得到的;

对所述第一卷积结果和第二卷积结果进行相加或堆叠操作,以得到所述第二输出结果。

7.根据权利要求5所述的方法,其特征在于,所述根据卷积层C1和卷积层C2对所述第一输出结果和所述第s个子带进行融合操作,包括:根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,所述第一卷积核为所述卷积层C1对应的卷积核;

根据所述加窗后的第一卷积核对第一输入数据进行卷积操作,以得到第一卷积结果;

当所述卷积层C1为所述第一熵编码模型中的第1个卷积层时,所述第一输入数据为所述第s个子带,当所述卷积层C1为所述第一熵编码模型中的非第1个卷积层时,所述第一输入数据是对所述第s个子带进行卷积操作得到的,将第二输入数据输入到第二子卷积层进行卷积操作,以得到第二卷积结果;当所述卷积层C2为所述第二熵编码模型中的第1个卷积层时,所述第二输入数据为所述第一输出结果,当所述卷积层C2为所述第二熵编码模型中的非第1个卷积层时,所述第二输入数据是对所述第一输出结果进行卷积操作得到的;

对所述第一卷积结果和第二卷积结果进行相加或堆叠操作,以得到所述第二输出结果。

8.根据权利要求4所述的方法,其特征在于,所述根据卷积层C1和卷积层C2对所述第一输出结果和所述第s个子带进行融合操作,以得到第二输出结果,包括:根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,所述第一卷积核为所述卷积层C1对应的卷积核;

根据第二窗函数对第二卷积核进行加窗操作,以得到加窗后的第二卷积核,所述第二卷积核为所述卷积层C2对应的卷积核,所述第一窗函数和第二窗函数互补;

根据所述加窗后的第一卷积核对第s个子带进行卷积操作,以得到第一卷积结果;当所述卷积层C1为所述第一熵编码模型中的第1个卷积层时,所述第一输入数据为所述第s个子带,当所述卷积层C1为所述第一熵编码模型中的非第1个卷积层时,所述第一输入数据是对所述第s个子带进行卷积操作得到的;

根据所述加窗后的第二卷积核对第一输出结果进行卷积操作,以得到第二卷积结果;

当所述卷积层C2为所述第二熵编码模型中的第1个卷积层时,所述第二输入数据为所述第一输出结果,当所述卷积层C2为所述第二熵编码模型中的非第1个卷积层时,所述第二输入数据是对所述第一输出结果进行卷积操作得到的;

对所述第一卷积结果和第二卷积结果进行相加或堆叠操作,以得到所述第二输出结果。

9.根据权利要求5所述的方法,其特征在于,所述根据卷积层C1和卷积层C2对所述第一输出结果和所述第s个子带进行融合操作,以得到第二输出结果,包括:根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,所述第一卷积核为所述卷积层C1对应的卷积核;

根据第二窗函数对第二卷积核进行加窗操作,以得到加窗后的第二卷积核,所述第二卷积核为所述卷积层C2对应的卷积核,所述第一窗函数和第二窗函数互补;

根据所述加窗后的第一卷积核对第s个子带进行卷积操作,以得到第一卷积结果;当所述卷积层C1为所述第一熵编码模型中的第1个卷积层时,所述第一输入数据为所述第s个子带,当所述卷积层C1为所述第一熵编码模型中的非第1个卷积层时,所述第一输入数据是对所述第s个子带进行卷积操作得到的;

根据所述加窗后的第二卷积核对第一输出结果进行卷积操作,以得到第二卷积结果;

当所述卷积层C2为所述第二熵编码模型中的第1个卷积层时,所述第二输入数据为所述第一输出结果,当所述卷积层C2为所述第二熵编码模型中的非第1个卷积层时,所述第二输入数据是对所述第一输出结果进行卷积操作得到的;

对所述第一卷积结果和第二卷积结果进行相加或堆叠操作,以得到所述第二输出结果。

10.一种基于小波变换的图像解码方法,其特征在于,包括:对压缩码流进行熵解码,以得到重构的小波系数;

对所述重构的小波系数进行反量化,以得到反量化后的小波系数;

根据小波变换模型对所述反量化后的小波系数进行N次小波反变换,以得到重建图像,其中,所述小波反变换中的预测操作和/或更新操作是基于卷积神经网络CNN实现的,所述N为大于0的整数;

其中,所述对压缩码流进行熵解码,以得到重构的小波系数,包括:根据熵解码模型对所述压缩码流进行熵解码,得到所述重构的小波系数,所述熵解码模型是基于深度神经网络实现的,所述压缩码流包括3N+1个子带的码流,具体包括:将第s个子带对应的重构子带输入到所述熵解码模型中计算得到待解码系数的累积概率分布函数的参数,所述待解码系数的码流为所述第s个子带的码流的一部分,所述第s个子带对应的重构子带为所述3N+1个重构子带中的任一个;

根据待解码系数的累积概率分布函数的参数获取所述待解码系数的累积概率分布函数;

根据待解码系数及其累积概率分布函数获取待解码系数的概率分布;

根据所述待解码系数的概率分布,采用算术解码器对所述待解码系数的码流进行熵解码,以得到所述待解码系数,所述3N+1个重构子带包括所述待解码系数。

11.根据权利要求10所述的方法,其特征在于,当所述第s个子带为所述3N+1个子带中的第一个子带时,所述熵解码模型是基于逐像素卷积神经网络pixelCNN实现的,所述熵解码模型包括M个卷积层,所述M为大于0的整数,所述将所述第s个子带对应的重构子带输入到熵解码模型中计算得到待解码系数的累积概率分布函数的参数,包括:当M=1时,根据第1个卷积层对应的窗函数对所述第1个卷积层对应的卷积核进行加窗操作,得到第一加窗后的卷积核;

根据所述第一加窗后的卷积核对所述第s个子带对应的重构子带进行卷积操作,得到所述待解码系数的累积概率分布函数的参数;

当M大于1时,在进行第j个卷积层的运算时,根据第j个卷积层对应的窗函数对第j个卷积层对应的卷积核进行加窗操作,得到第二加窗后的卷积核;

根据所述第二加窗后的卷积核对所述第j个卷积层的输入数据进行卷积操作,得到第j个输出数据;

其中,当j=1时,所述第j个卷积层的输入数据为所述第1个子带对应的重构子带;当j不大于M且大于1时,所述第j个卷积层的输入数据为第j‑1个卷积层的输出数据;当j=M时,所述第j个输出数据包括所述待解码系数的累积概率分布函数的参数。

12.根据权利要求10所述的方法,其特征在于,当所述第s个子带不为所述3N+1个子带中的第一个子带时,所述熵解码模型是包括第一熵解码模型、第二熵解码模型和第三熵解码模型,所述第一熵解码模型和第三熵解码模型均是基于逐像素卷积神经网络实现的,所述第三熵解码模型是基于循环神经网络RNN实现的,所述第一熵解码模型包括T1个卷积层,所述第二熵解码模型包括T2卷积层,所述T1和T2均为大于0的整数,所述将所述第s个子带对应的重构子带输入到熵解码模型中计算得到待解码系数的累积概率分布函数的参数,包括:

将第s‑1个子带对应的重构子带输入到第三熵解码模型中进行计算,以得到第一输出结果,所述第s‑1个子带对应的重构子带是对第s‑1个子带的码流进行熵解码得到的,所述第一输出结果为所述第二熵解码模型的输入数据;所述第s个子带对应的重构子带为所述第一熵解码模型的输入数据;

当所述T1和T2均等于1时,根据卷积层C1和卷积层C2对所述第一输出结果和所述第s个子带对应的重构子带进行融合操作,得到第二输出结果,所述第二输出结果为所述待解码系数的累积概率分布函数的参数,所述卷积层C1和所述卷积层C2分别为所述第一熵解码模型和第二熵解码模型中的卷积层;或者当所述T1大于1且所述T2等于1时,根据卷积层C1和卷积层C2对所述第一输出结果和所述第s个子带对应的重构子带进行融合操作,得到所述第二输出结果,所述卷积层C1为所述第一熵解码模型中的第q个卷积层,所述卷积层C2为所述第二熵解码模型中的卷积层;若所述q=T1,则所述第二输出结果为所述待解码系数的累积概率分布函数的参数;若q大于0且小于T1,则所述第二输出结果为所述第一熵解码模型中的第q+1个卷积层的输入数据;或者当所述T1和T2均大于1时,根据卷积层C1和卷积层C2对所述第一输出结果和所述第s个子带对应的重构子带进行融合操作,得到所述第二输出结果;所述卷积层C1为所述第一熵解码模型中的第q1个卷积层,所述卷积层C2为第二熵解码模型中的第q2个卷积层;若所述q1=T1且q2=T2,则所述第二输出结果为所述待解码系数的累积概率分布函数的参数,若所述q1大于0且小于T1,所述q2大于0且小于T2,则所述第二输出结果为所述第一熵解码模型中的第q1+1个卷积层的输入数据,所述卷积层C2的输出结果为所述第二熵解码模型中的第q2+1个卷积层的输入数据。

13.根据权利要求12所述的方法,其特征在于,当所述第s‑1个子带对应的重构子带的分辨率与所述第s个子带对应的重构子带的分辨率不相同时,所述将第s‑1个子带对应的重构子带输入到所述第三熵解码模型中进行计算,以得到第一输出结果,包括:根据所述第三熵解码模型及第三熵编码模型的状态变量对第s‑1个子带对应的重构子带进行卷积运算,得到卷积结果;

对所述卷积结果进行上采样,以得到所述第一输出结果,所述第一输出结果的分辨率与所述第s个子带对应的重构子带的分辨率相同;

所述对所述卷积结果进行上采样,以得到所述第一输出结果,所述方法还包括:对卷积之后的状态变量进行上采样,以得到采样后的状态变量,所述采样后的状态变量与ss第s个子带的分辨率相同。

14.根据权利要求12或13所述的方法,其特征在于,所述根据卷积层C1和卷积层C2对所述第一输出结果和所述第s个子带对应的重构子带进行融合操作,以得到第二输出结果,包括:

根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,所述第一卷积核为所述卷积层C1对应的卷积核;

根据所述加窗后的第一卷积核对第一输入数据进行卷积操作,以得到第一卷积结果;

当所述卷积层C1为所述第一熵解码模型中的第1个卷积层时,所述第一输入数据为所述第s个子带对应的重构子带,当所述卷积层C1为所述第一熵解码模型中的非第1个卷积层时,所述第一输入数据是对所述第s个子带对应的重构子带进行卷积操作得到的;

将所述第二输入数据输入到第二子卷积层进行卷积操作,以得到第二卷积结果;当所述卷积层C2为第二熵解码模型中的第1个卷积层时,所述第二输入数据为所述第一输出结果,当所述卷积层C2为所述第二熵解码模型中的非第1个卷积层时,所述第二输入数据是对所述第一输出结果进行卷积操作得到的;

对所述第一卷积结果和第二卷积结果进行相加或堆叠操作,以得到所述第二输出结果。

15.根据权利要求12或13所述的方法,其特征在于,所述根据卷积层C1和卷积层C2对所述第一输出结果和所述第s个子带对应的重构子带进行融合操作,以得到第二输出结果,包括:

根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,所述第一卷积核为所述卷积层C1对应的卷积核;

根据第二窗函数对第二卷积核进行加窗操作,以得到加窗后的第二卷积核,所述第二卷积核为所述卷积层C2对应的卷积核,所述第一窗函数和第二窗函数互补;

根据所述加窗后的第一卷积核对第一输入数据进行卷积操作,以得到第一卷积结果;

当所述卷积层C1为所述第一熵解码模型中的第1个卷积层时,所述第一输入数据为所述第s个子带对应的重构子带,当所述卷积层C1为所述第一熵解码模型中的非第1个卷积层时,所述第一输入数据是对所述第s个子带对应的重构子带进行卷积操作得到的根据所述加窗后的第二卷积核对第二输入数据进行卷积操作,以得到第二卷积结果;

当所述卷积层C2为第二熵解码模型中的第1个卷积层时,所述第二输入数据为所述第一输出结果,当所述卷积层C2为所述第二熵解码模型中的非第1个卷积层时,所述第二输入数据是对所述第一输出结果进行卷积操作得到的;

对所述第一卷积结果和第二卷积结果进行相加或堆叠操作,以得到所述第二输出结果。

16.根据权利要求10‑13任一项所述的方法,其特征在于,所述根据小波变换模型对所述反量化后的小波系数进行N次小波反变换,以得到重建图像,包括:在进行第t次小波反变换时,对近似子带PN+1‑t和细节子带I(N+1‑t)1进行更新操作和预测操作,得到第一处理子带和第二处理子带,根据所述第一处理子带和第二处理子带获取中间近似分量,所述中间近似分量的奇数列的系数或奇数行的系数来自所述第一处理子带,所述中间近似分量的偶数列的系数或偶数行的系数来自所述第二处理子带;

对细节子带I(N+1‑t)2和细节子带I(N+1‑t)3进行所述更新操作和所述预测操作,得到第三处理子带和第四处理子带,根据所述第三处理子带和第四处理子带获取中间细节分量,所述中间细节分量的奇数列的系数或偶数行的系数来自所述第三处理子带,所述中间细节分量的偶数列的系数或偶数行的系数来自所述第四处理子带;

对所述中间细节分量和中间近似分量进行所述更新操作和所述预测操作,第五处理子带和第六处理子带,根据所述第五处理子带和第六处理子带获取近似子带Pt‑1,所述近似子带Pt‑1的奇数行的系数或奇数列的系数来自所述第五处理子带,所述近似子带Pt‑1的偶数行的系数或偶数列的系数来自所述第六处理子带;

其中,所述细节子带I(N+1‑t)1、细节子带I(N+1‑t)2和细节子带I(N+1‑t)3的分辨率与所述近似子带PN+1‑t的分辨率相同;当第t次小波反变换为最后一次小波变换时,所述近似子带Pt‑1为所述重建图像。

17.根据权利要求14所述的方法,其特征在于,所述根据小波变换模型对所述反量化后的小波系数进行N次小波反变换,以得到重建图像,包括:在进行第t次小波反变换时,对近似子带PN+1‑t和细节子带I(N+1‑t)1进行更新操作和预测操作,得到第一处理子带和第二处理子带,根据所述第一处理子带和第二处理子带获取中间近似分量,所述中间近似分量的奇数列的系数或奇数行的系数来自所述第一处理子带,所述中间近似分量的偶数列的系数或偶数行的系数来自所述第二处理子带;

对细节子带I(N+1‑t)2和细节子带I(N+1‑t)3进行所述更新操作和所述预测操作,得到第三处理子带和第四处理子带,根据所述第三处理子带和第四处理子带获取中间细节分量,所述中间细节分量的奇数列的系数或偶数行的系数来自所述第三处理子带,所述中间细节分量的偶数列的系数或偶数行的系数来自所述第四处理子带;

对所述中间细节分量和中间近似分量进行所述更新操作和所述预测操作,第五处理子带和第六处理子带,根据所述第五处理子带和第六处理子带获取近似子带Pt‑1,所述近似子带Pt‑1的奇数行的系数或奇数列的系数来自所述第五处理子带,所述近似子带Pt‑1的偶数行的系数或偶数列的系数来自所述第六处理子带;

其中,所述细节子带I(N+1‑t)1、细节子带I(N+1‑t)2和细节子带I(N+1‑t)3的分辨率与所述近似子带PN+1‑t的分辨率相同;当第t次小波反变换为最后一次小波变换时,所述近似子带Pt‑1为所述重建图像。

18.根据权利要求15所述的方法,其特征在于,所述根据小波变换模型对所述反量化后的小波系数进行N次小波反变换,以得到重建图像,包括:在进行第t次小波反变换时,对近似子带PN+1‑t和细节子带I(N+1‑t)1进行更新操作和预测操作,得到第一处理子带和第二处理子带,根据所述第一处理子带和第二处理子带获取中间近似分量,所述中间近似分量的奇数列的系数或奇数行的系数来自所述第一处理子带,所述中间近似分量的偶数列的系数或偶数行的系数来自所述第二处理子带;

对细节子带I(N+1‑t)2和细节子带I(N+1‑t)3进行所述更新操作和所述预测操作,得到第三处理子带和第四处理子带,根据所述第三处理子带和第四处理子带获取中间细节分量,所述中间细节分量的奇数列的系数或偶数行的系数来自所述第三处理子带,所述中间细节分量的偶数列的系数或偶数行的系数来自所述第四处理子带;

对所述中间细节分量和中间近似分量进行所述更新操作和所述预测操作,第五处理子带和第六处理子带,根据所述第五处理子带和第六处理子带获取近似子带Pt‑1,所述近似子带Pt‑1的奇数行的系数或奇数列的系数来自所述第五处理子带,所述近似子带Pt‑1的偶数行的系数或偶数列的系数来自所述第六处理子带;

其中,所述细节子带I(N+1‑t)1、细节子带I(N+1‑t)2和细节子带I(N+1‑t)3的分辨率与所述近似子带PN+1‑t的分辨率相同;当第t次小波反变换为最后一次小波变换时,所述近似子带Pt‑1为所述重建图像。

19.根据权利要求10所述的方法,其特征在于,所述根据小波变换模型对所述反量化后的小波系数进行N次小波反变换,以得到重建图像之后,所述方法还包括:根据后处理模型对所述重建图像进行后处理,以得到处理后的重建图像,其中,所述后处理模型是基于深度神经网络实现的。

20.一种图像编码装置,其特征在于,包括:变换模块,用于根据小波变换模型对待编码图像进行N次小波变换,以得到小波系数,所述小波变换中的预测操作和/或更新操作是基于卷积神经网络CNN实现的,所述N为大于0的整数;

量化模块,用于对所述小波系数进行量化,以得到量化后的小波系数;

熵编码模块,用于对所述量化后的小波系数进行熵编码,得到压缩码流;

其中,所述熵编码模块具体用于:

根据熵编码模型对所述量化后的小波系数进行编码,以得到所述压缩码流,所述小波系数包括3N+1个子带,所述熵编码模型是基于深度神经网络得到实现的,具体包括:将第s个子带输入所述熵编码模型中计算得到待编码系数的累积概率分布函数的参数,所述待编码系数为所述第s个子带中任一个系数,所述第s个子带为所述3N+1个子带中的任意一个子带;

根据所述待编码系数的累积概率分布函数的参数得到所述累积概率分布函数;

根据所述待编码系数及其累积概率分布函数获取所述待编码系数的概率分布;

根据所述待编码系数的概率分布,采用算术编码器对所述待编码系数进行熵编码,以得到所述待编码系数对应的码流,所述压缩码流包括所述待编码系数对应的码流。

21.根据权利要求20所述的装置,其特征在于,所述变换模块具体用于:在进行第i次小波变换时,对子带X进行分解,以得到奇数采样分量和偶数采样分量,其中,所述奇数采样分量由所述子带X中奇数行系数或奇数列系数构成,所述偶数采样分量由所述子带X中偶数行系数或偶数列系数构成,对所述偶数采样分量和奇数采样分量进行更新操作和预测操作,以得到中间近似分量和中间细节分量;

对所述中间近似分量进行分解,以得到第一采样分量和第二采样分量;其中,所述第一采样分量由所述中间近似分量的奇数列的系数或奇数行的系数,所述第二采样分量由所述中间近似分量的偶数列的系数或偶数行的系数构成;

对所述中间细节分量进行分解,以得到第三采样分量和第四采样分量;其中,所述第三采样分量由所述中间细节分量的奇数行的系数或奇数行的系数构成,第四采样分量由所述中间细节分量的偶数列的系数或偶数行的系数构成;

对所述第一采样分量和第二采样分量进行所述更新操作和所述预测操作,以得到近似子带Pi和细节子带Ii1;

对所述第三采样分量和第四采样分量进行所述更新操作和所述预测操作,以得到细节子带Ii2和细节子带Ii3;

其中,所述小波系数包括近似子带Pi、细节子带Ii1、细节子带Ii2和细节子带Ii3;当所述第i次小波变换为第一次小波变换时,所述子带X为所述待编码图像;当所述第i次小波变换不是第一次小波变换时,子带X为近似子带Pi‑1,所述近似子带Pi‑1为进行i‑1次小波变换后得到的近似子带。

22.根据权利要求20或21所述的装置,其特征在于,当所述第s个子带为所述3N+1个子带中的第一个子带时,所述熵编码模型是基于逐像素卷积神经网络(pixelCNN)实现的,所述熵编码模型包括M个卷积层,所述M为大于0的整数,在所述将所述第s个子带输入所述熵编码模型中计算得到待编码系数的累积概率分布函数的参数的方面,所述熵编码模块具体用于:

当M=1时,根据第1个卷积层对应的窗函数对所述第1个卷积层对应的卷积核进行加窗操作,得到第一加窗后的卷积核;

根据所述第一加窗后的卷积核对所述第s个子带进行卷积操作,得到所述待编码系数的累积概率分布函数的参数;

当M大于1时,在进行第j个卷积层的运算时,根据第j个卷积层对应的窗函数对第j个卷积层对应的卷积核进行加窗操作,得到第二加窗后的卷积核;

根据所述第二加窗后的卷积核对所述第j个卷积层的输入数据进行卷积操作,得到第j个输出数据;

其中,当j=1时,所述第j个卷积层的输入数据为所述第一个子带;当j大于1且不大于M时,所述第j个卷积层的输入数据为第j‑1个卷积层的输出数据;当j=M时,所述第j个输出数据包括所述待编码系数的累积概率分布函数的参数。

23.根据权利要求20或21所述的装置,所述熵编码模块具体用于,其特征在于,当所述第s个子带不为所述3N+1个子带中的第一个子带时,所述熵编码模型是包括第一熵编码模型、第二熵编码模型和第三熵编码模型,所述第一熵编码模型和第二熵编码模型均是基于逐像素卷积神经网络实现的,所述第三熵编码模型是基于循环神经网络RNN实现的,所述第一熵编码模型包括T1个卷积层,所述第二熵编码模型包括T2个卷积层,所述T1和T2均为大于0的整数,在所述将所述第s个子带输入所述熵编码模型中计算得到待编码系数的累积概率分布函数的参数的方面,所述熵编码模块具体用于:将第s‑1个子带输入到所述第三熵编码模型中进行计算,以得到第一输出结果;所述第一输出结果为所述第二熵编码模型的输入数据;所述第s个子带为所述第一熵编码模型的输入数据;

当所述T1和T2均等于1时,根据卷积层C1和卷积层C2对所述第一输出结果和所述第s个子带进行融合操作,得到第二输出结果,所述第二输出结果为所述待编码系数的累积概率分布函数的参数,所述卷积层C1和所述卷积层C2分别为所述第一熵编码模型和第二熵编码模型中的卷积层;或者

当所述T1大于1且所述T2等于1时,根据卷积层C1和卷积层C2对所述第一输出结果和所述第s个子带进行融合操作,得到所述第二输出结果,所述卷积层C1为所述第一熵编码模型中的第q个卷积层,所述卷积层C2为所述第二熵编码模型中的卷积层;若所述q=T1,则所述第二输出结果为所述待编码系数的累积概率分布函数的参数;若q大于0且小于T1,则所述第二输出结果为所述第一熵编码模型中的第q+1个卷积层的输入数据;或者当所述T1和T2均大于1时,根据卷积层C1和卷积层C2对所述第一输出结果和所述第s个子带进行融合操作,得到所述第二输出结果;所述卷积层C1为所述第一熵编码模型中的第q1个卷积层,所述卷积层C2为第二熵编码模型中的第q2个卷积层;若所述q1=T1且q2=T2,则所述第二输出结果为所述待编码系数的累积概率分布函数的参数,若所述q1大于0且小于T1,所述q2大于0且小于T2,则所述第二输出结果为所述第一熵编码模型中的第q1+1个卷积层的输入数据,所述卷积层C2的输出结果为所述第二熵编码模型中的第q2+1个卷积层的输入数据。

24.根据权利要求23所述的装置,其特征在于,当所述第s‑1个子带的分辨率与第s个子带的分辨率不相同时,在所述将第s‑1个子带输入到所述第三熵编码模型中进行计算,以得到第一输出结果的方面,所述熵编码模块具体用于:根据所述第三熵编码模型及第三熵编码模型的状态变量对所述第s‑1个子带进行卷积运算,以得到卷积结果;

对所述卷积结果进行上采样,以得到所述第一输出结果,所述第一输出结果的分辨率与所述第s个子带的分辨率相同;

在所述对所述卷积结果进行上采样,以得到所述第一输出结果之后,所述熵编码模块还用于:

对卷积之后的状态变量进行上采样,以得到采样后的状态变量,所述采样后的状态变量与所述第s个子带的分辨率相同。

25.根据权利要求23所述的装置,其特征在于,在所述根据卷积层C1和卷积层C2对所述第一输出结果和所述第s个子带进行融合操作的方面,所述熵编码模块具体用于:根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,所述第一卷积核为所述卷积层C1对应的卷积核;

根据所述加窗后的第一卷积核对第一输入数据进行卷积操作,以得到第一卷积结果;

当所述卷积层C1为所述第一熵编码模型中的第1个卷积层时,所述第一输入数据为所述第s个子带,当所述卷积层C1为所述第一熵编码模型中的非第1个卷积层时,所述第一输入数据是对所述第s个子带进行卷积操作得到的,将第二输入数据输入到所述第二子卷积层进行卷积操作,以得到第二卷积结果;当所述卷积层C2为所述第二熵编码模型中的第1个卷积层时,所述第二输入数据为所述第一输出结果,当所述卷积层C2为所述第二熵编码模型中的非第1个卷积层时,所述第二输入数据是对所述第一输出结果进行卷积操作得到的;

对所述第一卷积结果和第二卷积结果进行相加或堆叠操作,以得到所述第二输出结果。

26.根据权利要求24所述的装置,其特征在于,在所述根据卷积层C1和卷积层C2对所述第一输出结果和所述第s个子带进行融合操作的方面,所述熵编码模块具体用于:根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,所述第一卷积核为所述卷积层C1对应的卷积核;

根据所述加窗后的第一卷积核对第一输入数据进行卷积操作,以得到第一卷积结果;

当所述卷积层C1为所述第一熵编码模型中的第1个卷积层时,所述第一输入数据为所述第s个子带,当所述卷积层C1为所述第一熵编码模型中的非第1个卷积层时,所述第一输入数据是对所述第s个子带进行卷积操作得到的,将第二输入数据输入到所述第二子卷积层进行卷积操作,以得到第二卷积结果;当所述卷积层C2为所述第二熵编码模型中的第1个卷积层时,所述第二输入数据为所述第一输出结果,当所述卷积层C2为所述第二熵编码模型中的非第1个卷积层时,所述第二输入数据是对所述第一输出结果进行卷积操作得到的;

对所述第一卷积结果和第二卷积结果进行相加或堆叠操作,以得到所述第二输出结果。

27.根据权利要求23所述的装置,其特征在于,在所述根据卷积层C1和卷积层C2对所述第一输出结果和所述第s个子带进行融合操作,以得到第二输出结果的方面,所述熵编码模块具体用于:

根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,所述第一卷积核为所述卷积层C1对应的卷积核;

根据第二窗函数对第二卷积核进行加窗操作,以得到加窗后的第二卷积核,所述第二卷积核为所述卷积层C2对应的卷积核,所述第一窗函数和第二窗函数互补;

根据所述加窗后的第一卷积核对第s个子带进行卷积操作,以得到第一卷积结果;当所述卷积层C1为所述第一熵编码模型中的第1个卷积层时,所述第一输入数据为所述第s个子带,当所述卷积层C1为所述第一熵编码模型中的非第1个卷积层时,所述第一输入数据是对所述第s个子带进行卷积操作得到的;

根据所述加窗后的第二卷积核对第一输出结果进行卷积操作,以得到第二卷积结果;

当所述卷积层C2为所述第二熵编码模型中的第1个卷积层时,所述第二输入数据为所述第一输出结果,当所述卷积层C2为所述第二熵编码模型中的非第1个卷积层时,所述第二输入数据是对所述第一输出结果进行卷积操作得到的;

对所述第一卷积结果和第二卷积结果进行相加或堆叠操作,以得到所述第二输出结果。

28.根据权利要求24所述的装置,其特征在于,在所述根据卷积层C1和卷积层C2对所述第一输出结果和所述第s个子带进行融合操作,以得到第二输出结果的方面,所述熵编码模块具体用于:

根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,所述第一卷积核为所述卷积层C1对应的卷积核;

根据第二窗函数对第二卷积核进行加窗操作,以得到加窗后的第二卷积核,所述第二卷积核为所述卷积层C2对应的卷积核,所述第一窗函数和第二窗函数互补;

根据所述加窗后的第一卷积核对第s个子带进行卷积操作,以得到第一卷积结果;当所述卷积层C1为所述第一熵编码模型中的第1个卷积层时,所述第一输入数据为所述第s个子带,当所述卷积层C1为所述第一熵编码模型中的非第1个卷积层时,所述第一输入数据是对所述第s个子带进行卷积操作得到的;

根据所述加窗后的第二卷积核对第一输出结果进行卷积操作,以得到第二卷积结果;

当所述卷积层C2为所述第二熵编码模型中的第1个卷积层时,所述第二输入数据为所述第一输出结果,当所述卷积层C2为所述第二熵编码模型中的非第1个卷积层时,所述第二输入数据是对所述第一输出结果进行卷积操作得到的;

对所述第一卷积结果和第二卷积结果进行相加或堆叠操作,以得到所述第二输出结果。

29.一种图像解码装置,其特征在于,包括:熵解码模块,用于对压缩码流进行熵解码,以得到重构的小波系数;

反量化模块,用于对所述重构的小波系数进行反量化,以得到反量化后的小波系数;

反变换模块,用于根据小波变换模型对所述反量化后的小波系数进行N次小波反变换,以得到重建图像,其中,所述小波反变换中的预测操作和/或更新操作是基于卷积神经网络CNN实现的,所述N为大于0的整数;

所述熵解码模块具体用于:

根据熵解码模型对所述压缩码流进行熵解码,得到所述重构的小波系数,所述熵解码模型是基于深度神经网络实现的,所述压缩码流包括3N+1个子带的码流,具体包括:将第s个子带对应的重构子带输入到所述熵解码模型中计算得到待解码系数的累积概率分布函数的参数,所述待解码系数的码流为所述第s个子带的码流的一部分,所述第s个子带对应的重构子带为所述3N+1个重构子带中的任一个;

根据待解码系数的累积概率分布函数的参数获取所述待解码系数的累积概率分布函数;

根据待解码系数及其累积概率分布函数获取待解码系数的概率分布;

根据所述待解码系数的概率分布,采用算术解码器对所述待解码系数的码流进行熵解码,以得到所述待解码系数,所述3N+1个重构子带包括所述待解码系数。

30.根据权利要求29所述的装置,其特征在于,当所述第s个子带为所述3N+1个子带中的第一个子带时,所述熵解码模型是基于逐像素卷积神经网络pixelCNN实现的,所述熵解码模型包括M个卷积层,所述M为大于0的整数,在所述将所述第s个子带对应的重构子带输入到熵解码模型中计算得到待解码系数的累积概率分布函数的参数的方面,所述熵解码模块具体用于:

当M=1时,根据第1个卷积层对应的窗函数对所述第1个卷积层对应的卷积核进行加窗操作,得到第一加窗后的卷积核;

根据所述第一加窗后的卷积核对所述第s个子带对应的重构子带进行卷积操作,得到所述待解码系数的累积概率分布函数的参数;

当M大于1时,在进行第j个卷积层的运算时,根据第j个卷积层对应的窗函数对第j个卷积层对应的卷积核进行加窗操作,得到第二加窗后的卷积核;

根据所述第二加窗后的卷积核对所述第j个卷积层的输入数据进行卷积操作,得到第j个输出数据;

其中,当j=1时,所述第j个卷积层的输入数据为所述第1个子带对应的重构子带;当j不大于M且大于1时,所述第j个卷积层的输入数据为第j‑1个卷积层的输出数据;当j=M时,所述第j个输出数据包括所述待解码系数的累积概率分布函数的参数。

31.根据权利要求29所述的装置,其特征在于,当所述第s个子带不为所述3N+1个子带中的第一个子带时,所述熵解码模型是包括第一熵解码模型、第二熵解码模型和第三熵解码模型,所述第一熵解码模型和第三熵解码模型均是基于逐像素卷积神经网络实现的,所述第三熵解码模型是基于循环神经网络RNN实现的,所述第一熵解码模型包括T1个卷积层,所述第二熵解码模型包括T2卷积层,所述T1和T2均为大于0的整数,在所述将所述第s个子带对应的重构子带输入到熵解码模型中计算得到待解码系数的累积概率分布函数的参数的方面,所述熵解码模块具体用于:

将第s‑1个子带对应的重构子带输入到第三熵解码模型中进行计算,以得到第一输出结果,所述第s‑1个子带对应的重构子带是对第s‑1个子带的码流进行熵解码得到的,所述第一输出结果为所述第二熵解码模型的输入数据;所述第s个子带对应的重构子带为所述第一熵解码模型的输入数据;

当所述T1和T2均等于1时,根据卷积层C1和卷积层C2对所述第一输出结果和所述第s个子带对应的重构子带进行融合操作,得到第二输出结果,所述第二输出结果为所述待解码系数的累积概率分布函数的参数,所述卷积层C1和所述卷积层C2分别为所述第一熵解码模型和第二熵解码模型中的卷积层;或者当所述T1大于1且所述T2等于1时,根据卷积层C1和卷积层C2对所述第一输出结果和所述第s个子带对应的重构子带进行融合操作,得到所述第二输出结果,所述卷积层C1为所述第一熵解码模型中的第q个卷积层,所述卷积层C2为所述第二熵解码模型中的卷积层;若所述q=T1,则所述第二输出结果为所述待解码系数的累积概率分布函数的参数;若q大于0且小于T1,则所述第二输出结果为所述第一熵解码模型中的第q+1个卷积层的输入数据;或者当所述T1和T2均大于1时,根据卷积层C1和卷积层C2对所述第一输出结果和所述第s个子带对应的重构子带进行融合操作,得到所述第二输出结果;所述卷积层C1为所述第一熵解码模型中的第q1个卷积层,所述卷积层C2为第二熵解码模型中的第q2个卷积层;若所述q1=T1且q2=T2,则所述第二输出结果为所述待解码系数的累积概率分布函数的参数,若所述q1大于0且小于T1,所述q2大于0且小于T2,则所述第二输出结果为所述第一熵解码模型中的第q1+1个卷积层的输入数据,所述卷积层C2的输出结果为所述第二熵解码模型中的第q2+1个卷积层的输入数据。

32.根据权利要求31所述的装置,其特征在于,当所述第s‑1个子带对应的重构子带的分辨率与所述第s个子带对应的重构子带的分辨率不相同时,在所述将第s‑1个子带对应的重构子带输入到所述第三熵解码模型中进行计算,以得到第一输出结果的方面,所述熵解码模块具体用于:

根据所述第三熵解码模型及第三熵编码模型的对第s‑1个子带对应的重构子带进行卷积运算,得到卷积结果;

对所述卷积结果进行上采样,以得到所述第一输出结果,所述第一输出结果的分辨率与所述第s个子带对应的重构子带的分辨率相同;

在所述对所述卷积结果进行上采样,以得到所述第一输出结果之后,所述熵解码模块还具体用于:

对卷积之后的状态变量进行上采样,以得到采样后的状态变量,所述采样后的状态变量与ss第s个子带的分辨率相同。

33.根据权利要求31或32所述的装置,其特征在于,所述根据卷积层C1和卷积层C2对所述第一输出结果和所述第s个子带对应的重构子带进行融合操作,以得到第二输出结果,所述熵解码模块具体用于:

根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,所述第一卷积核为所述卷积层C1对应的卷积核;

根据所述加窗后的第一卷积核对第一输入数据进行卷积操作,以得到第一卷积结果;

当所述卷积层C1为所述第一熵解码模型中的第1个卷积层时,所述第一输入数据为所述第s个子带对应的重构子带,当所述卷积层C1为所述第一熵解码模型中的非第1个卷积层时,所述第一输入数据是对所述第s个子带对应的重构子带进行卷积操作得到的;

将所述第二输入数据输入到第二子卷积层进行卷积操作,以得到第二卷积结果;当所述卷积层C2为第二熵解码模型中的第1个卷积层时,所述第二输入数据为所述第一输出结果,当所述卷积层C2为所述第二熵解码模型中的非第1个卷积层时,所述第二输入数据是对所述第一输出结果进行卷积操作得到的;

对所述第一卷积结果和第二卷积结果进行相加或堆叠操作,以得到所述第二输出结果。

34.根据权利要求31或32所述的装置,其特征在于,在所述根据卷积层C1和卷积层C2对所述第一输出结果和所述第s个子带对应的重构子带进行融合操作,以得到第二输出结果的方面,所述熵解码模块具体用于:

根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,所述第一卷积核为所述卷积层C1对应的卷积核;

根据第二窗函数对第二卷积核进行加窗操作,以得到加窗后的第二卷积核,所述第二卷积核为所述卷积层C2对应的卷积核,所述第一窗函数和第二窗函数互补;

根据所述加窗后的第一卷积核对第一输入数据进行卷积操作,以得到第一卷积结果;

当所述卷积层C1为所述第一熵解码模型中的第1个卷积层时,所述第一输入数据为所述第s个子带对应的重构子带,当所述卷积层C1为所述第一熵解码模型中的非第1个卷积层时,所述第一输入数据是对所述第s个子带对应的重构子带进行卷积操作得到的根据所述加窗后的第二卷积核对第二输入数据进行卷积操作,以得到第二卷积结果;

当所述卷积层C2为第二熵解码模型中的第1个卷积层时,所述第二输入数据为所述第一输出结果,当所述卷积层C2为所述第二熵解码模型中的非第1个卷积层时,所述第二输入数据是对所述第一输出结果进行卷积操作得到的;

对所述第一卷积结果和第二卷积结果进行相加或堆叠操作,以得到所述第二输出结果。

35.根据权利要求29‑32任一项所述的装置,其特征在于,所述反变换模块具体用于,包括:

在进行第t次小波反变换时,对近似子带PN+1‑t和细节子带I(N+1‑t)1进行更新操作和预测操作,得到第一处理子带和第二处理子带,根据所述第一处理子带和第二处理子带获取中间近似分量,所述中间近似分量的奇数列的系数或奇数行的系数来自所述第一处理子带,所述中间近似分量的偶数列的系数或偶数行的系数来自所述第二处理子带;

对细节子带I(N+1‑t)2和细节子带I(N+1‑t)3进行所述更新操作和所述预测操作,得到第三处理子带和第四处理子带,根据所述第三处理子带和第四处理子带获取中间细节分量,所述中间细节分量的奇数列的系数或偶数行的系数来自所述第三处理子带,所述中间细节分量的偶数列的系数或偶数行的系数来自所述第四处理子带;

对所述中间细节分量和中间近似分量进行所述更新操作和所述预测操作,第五处理子带和第六处理子带,根据所述第五处理子带和第六处理子带获取近似子带Pt‑1,所述近似子带Pt‑1的奇数行的系数或奇数列的系数来自所述第五处理子带,所述近似子带Pt‑1的偶数行的系数或偶数列的系数来自所述第六处理子带;

其中,所述细节子带I(N+1‑t)1、细节子带I(N+1‑t)2和细节子带I(N+1‑t)3的分辨率与所述近似子带PN+1‑t的分辨率相同;当第t次小波反变换为最后一次小波变换时,所述近似子带Pt‑1为所述重建图像。

36.根据权利要求33所述的装置,其特征在于,所述反变换模块具体用于,包括:在进行第t次小波反变换时,对近似子带PN+1‑t和细节子带I(N+1‑t)1进行更新操作和预测操作,得到第一处理子带和第二处理子带,根据所述第一处理子带和第二处理子带获取中间近似分量,所述中间近似分量的奇数列的系数或奇数行的系数来自所述第一处理子带,所述中间近似分量的偶数列的系数或偶数行的系数来自所述第二处理子带;

对细节子带I(N+1‑t)2和细节子带I(N+1‑t)3进行所述更新操作和所述预测操作,得到第三处理子带和第四处理子带,根据所述第三处理子带和第四处理子带获取中间细节分量,所述中间细节分量的奇数列的系数或偶数行的系数来自所述第三处理子带,所述中间细节分量的偶数列的系数或偶数行的系数来自所述第四处理子带;

对所述中间细节分量和中间近似分量进行所述更新操作和所述预测操作,第五处理子带和第六处理子带,根据所述第五处理子带和第六处理子带获取近似子带Pt‑1,所述近似子带Pt‑1的奇数行的系数或奇数列的系数来自所述第五处理子带,所述近似子带Pt‑1的偶数行的系数或偶数列的系数来自所述第六处理子带;

其中,所述细节子带I(N+1‑t)1、细节子带I(N+1‑t)2和细节子带I(N+1‑t)3的分辨率与所述近似子带PN+1‑t的分辨率相同;当第t次小波反变换为最后一次小波变换时,所述近似子带Pt‑1为所述重建图像。

37.根据权利要求34所述的装置,其特征在于,所述反变换模块具体用于,包括:在进行第t次小波反变换时,对近似子带PN+1‑t和细节子带I(N+1‑t)1进行更新操作和预测操作,得到第一处理子带和第二处理子带,根据所述第一处理子带和第二处理子带获取中间近似分量,所述中间近似分量的奇数列的系数或奇数行的系数来自所述第一处理子带,所述中间近似分量的偶数列的系数或偶数行的系数来自所述第二处理子带;

对细节子带I(N+1‑t)2和细节子带I(N+1‑t)3进行所述更新操作和所述预测操作,得到第三处理子带和第四处理子带,根据所述第三处理子带和第四处理子带获取中间细节分量,所述中间细节分量的奇数列的系数或偶数行的系数来自所述第三处理子带,所述中间细节分量的偶数列的系数或偶数行的系数来自所述第四处理子带;

对所述中间细节分量和中间近似分量进行所述更新操作和所述预测操作,第五处理子带和第六处理子带,根据所述第五处理子带和第六处理子带获取近似子带Pt‑1,所述近似子带Pt‑1的奇数行的系数或奇数列的系数来自所述第五处理子带,所述近似子带Pt‑1的偶数行的系数或偶数列的系数来自所述第六处理子带;

其中,所述细节子带I(N+1‑t)1、细节子带I(N+1‑t)2和细节子带I(N+1‑t)3的分辨率与所述近似子带PN+1‑t的分辨率相同;当第t次小波反变换为最后一次小波变换时,所述近似子带Pt‑1为所述重建图像。

38.根据权利要求29所述的装置,其特征在于,所述装置还包括:后处理模块,用于在所述反变换模块根据小波变换模型对所述反量化后的小波系数进行N次小波反变换,以得到重建图像之后,根据后处理模型对所述重建图像进行后处理,以得到处理后的重建图像,其中,所述后处理模型是基于深度神经网络实现的。

说明书 :

基于小波变换的图像编解码方法及装置

技术领域

[0001] 本发明涉及图像编解码领域,尤其涉及一种基于小波变换的图像编解码方法及装置。

背景技术

[0002] 数字图像是以数字信号方式记录的图像信息。数字图像(以下简称图像)可看作一个M行N列的二维阵列,包含M×N个采样,每个采样的位置称为采样位置,每个采样的数值称
为采样值。
[0003] 在图像存储、传输等应用中,通常需要对图像做编码操作,以减少存储容量和传输带宽。一个典型的图像编码流程一般包括变换、量化和熵编码三个步骤。针对一幅待编码图
像,第一步通过变换对待编码图像进行去相关,得到能量分布更加集中的变换系数;第二步
对变换系数进行量化,得到量化系数;第三步对量化系数进行熵编码得到压缩码流。
[0004] 图像编码中常用的变换方式有离散余弦变换,小波变换等。小波变换是一种局部变换方法,能对图像进行局部化、多尺度分析,聚焦到信号的变化细节,非常适合于图像编
码任务。
[0005] 不同的小波变换指的是滤波器系数的不同。传统的小波变换的滤波器系数一般从信号处理角度出发,是在理想假设之下设计的,这样得到的小波变换无法适应自然图像的
复杂性和多样性。同时,二维小波变换通过行和列方向的一维小波变换组合而成,适合处理
具有行和列方向的特征,对于其他方向的特征以及非方向特征,处理能力较弱。
[0006] 针对以上缺点,现有技术提出了一些解决方法。比如在信号处理领域,有很多针对性设计的方向小波被提出,例如:Curvelet,Ridgelet,Contourlet,Bandelet,Shearlet等。
在编码时,首先通过方向小波对图像进行小波变换,得到小波系数;然后对小波系数进行量
化和熵编码得到压缩码流。在图像解码时,首先对压缩码流进行熵解码和反量化得到重构
的小波系数,然后进行方向小波反变换得到重建图像。方向小波的基本思路是设计一组有
限数量的方向基函数,无法从本质上紧致表达任意方向的空间相关性。其次,方向小波一般
生成数量冗余的系数,应用在图像编码中不利于压缩比的提高。最后,方向小波只针对性的
处理图像中的不同方向特征,没有根本上解决自然图像特征的多样性和复杂性与人工设计
的小波基函数的理想性和简单性之间的矛盾。因此方向小波应用于图像编码效率不高。
[0007] 再比如基于自适应方向小波的图像编码方法,该方法借助了图像编码中分块的思路,在编码一个图像块时,通过尝试多种方向的小波变换,选择最适合该图像块的方向参
数,然后将小波基函数旋转到对应的方向,以针对性的处理该图像块中特定方向的特征,完
成变换步骤,得到小波系数,小波系数将通过子带编码方法,得到压缩码流。同时方向参数
也将被写入压缩码流,以支持正常的解码过程;在解码时,首先对压缩码流进行熵解码和反
量化,得到重构小波系数,同时从压缩码流中提取出方向参数。利用重构小波系数和方向参
数,进行自适应方向小波反变换,得到重建图像。虽然自适应方向小波可以针对图像本身的
方向特征自适应选择对应方向的小波基函数,克服了方向小波只能使用有限数量的基函数
的缺点。然而,基于块划分的方向参数选择依赖于多次编码决策过程,极大的增加了编码复
杂度。同时自适应方向小波仍然没有解决自然图像特征的多样性和复杂性与人工设计的小
波基函数的理想性和简单性之间的矛盾。
[0008] 综上所述,现在技术的图像编解码效率低下,无法解决自然图像特征的多样性和复杂性与人工设计的小波基函数的理想性和简单性之间的矛盾。

发明内容

[0009] 本发明实施例提供一种基于小波变换的图像编解码方法及装置,采用本发明实施例有利于图像编解码的效率,解决了自然图像特征的多样性和复杂性与人工设计的小波基
函数的理想性和简单性之间的矛盾。
[0010] 第一方面,本发明实施例提供一种基于小波变换的图像编解码方法,包括:
[0011] 根据小波变换模型对待编码图像进行N次小波变换,以得到小波系数,小波变换模型是基于卷积神经网路CNN实现的,N为大于0的整数;对小波系数进行量化,以得到量化后
的小波系数;对量化后的小波系数进行熵编码,得到压缩码流。
[0012] 采用基于CNN实现的小波变换模型对待编码图像进行小波变换,由于基于深度神经网络的小波变换模型是使用大量自然图像通过训练方法优化得到,因此可以比传统的小
波变换提供更加紧致的变换域表达,从而显著提高编解码性能。
[0013] 在一个可行的实施例中,小波系数包括3N+1个子带,根据小波变换模型对待编码图像进行N次小波变换,以得到小波系数,包括:
[0014] 在进行第i次小波变换时,对子带X进行分解,以得到奇数采样分量和偶数采样分量,其中,奇数采样分量由子带X中奇数行系数或奇数列系数构成,偶数采样分量由子带X中
偶数行系数或偶数列系数构成;
[0015] 对偶数采样分量和奇数采样分量进行更新操作和预测操作,以得到中间近似分量和中间细节分量;
[0016] 对中间近似分量进行分解,以得到第一采样分量和第二采样分量;其中,第一采样分量由中间近似分量的奇数列的系数或奇数行的系数,第二采样分量由中间近似分量的偶
数列的系数或偶数行的系数构成;
[0017] 对中间细节分量进行分解,以得到第三采样分量和第四采样分量;其中,第三采样分量由中间细节分量的奇数行的系数或奇数行的系数构成,第四采样分量由中间细节分量
的偶数列的系数或偶数行的系数构成;
[0018] 对第一采样分量和第二采样分量进行更新操作和预测操作,以得到近似子带Pi和细节子带Ii1;对第三采样分量和第四采样分量进行更新操作和预测操作,以得到细节子带
Ii2和细节子带Ii3;
[0019] 其中,小波系数包括近似子带Pi、细节子带Ii1、细节子带Ii2和细节子带Ii3;当第i次小波变换为第一次小波变换时,子带X为待编码图像;当第i次小波变换不是第一次小波
变换时,子带X为近似子带Pi‑1,近似子带Pi‑1为进行i‑1次小波变换后得到的近似子带。
[0020] 基于CNN实现的小波变换模型对待编码图像进行小波变换,在借助GPU实现该小波变换模型的功能时,具有与传统的小波变换相当的速度,与自适应方向小波通过多次编码
尝试选择最优的方向参数相比,具有时间复杂度低的优势,解决了自然图像特征的多样性
和复杂性与人工设计的小波基函数的理想性和简单性之间的矛盾。
[0021] 在一个可行的实施例中,预测操作是基于CNN实现的;或者更新操作是基于CNN实现的;或者预测操作和更新操作均是基于CNN实现的。
[0022] 在一个可行的实施例中,对量化后的小波系数进行熵编码,得到压缩码流,包括:
[0023] 根据熵编码模型对量化后的小波系数进行编码,以得到压缩码流,熵编码模型是基于深度神经网络得到实现的。
[0024] 在一个可行的实施例中,小波系数包括3N+1个子带,根据熵编码模型对量化后的小波系数进行编码,以得到压缩码流,包括:
[0025] 将第s个子带输入熵编码模型中计算得到待编码系数的累积概率分布函数的参数,待编码系数为第s个子带中任一个系数,第s个子带为3N+1个子带中的任意一个子带;根
据待编码系数的累积概率分布函数的参数得到累积概率分布函数;根据待编码系数及其累
积概率分布函数获取待编码系数的概率分布;根据待编码系数的概率分布,采用算术编码
器对待编码系数进行熵编码,以得到待编码系数对应的码流,压缩码流包括待编码系数对
应的码流。
[0026] 在对量化后的小波系数进行编码时,采样基于深度神经网络的熵编码模型进行的,与现有技术相比,可提高图像的压缩比性能。
[0027] 在一个可行的实施例中,当第s个子带为3N+1个子带中的第一个子带时,熵编码模型是基于逐像素卷积神经网络pixelCNN实现的,熵编码模型包括M个卷积层,M为大于0的整
数,将s个子带输入熵编码模型中计算得到待编码系数的累积概率分布函数的参数,包括:
[0028] 当M=1时,根据第1个卷积层对应的窗函数对第1个卷积层对应的卷积核进行加窗操作,得到第一加窗后的卷积核;根据第一加窗后的卷积核对第s个子带进行卷积操作,得
到待编码系数的累积概率分布函数的参数;当M大于1时,在进行第j个卷积层的运算时,根
据第j个卷积层对应的窗函数对第j个卷积层对应的卷积核进行加窗操作,得到第二加窗后
的卷积核;根据第二加窗后的卷积核对第j个卷积层的输入数据进行卷积操作,得到第j个
输出数据;
[0029] 其中,当j=1时,第j个卷积层的输入数据为第一个子带;当j大于1且不大于M时,第j个卷积层的输入数据为第j‑1个卷积层的输出数据;当j=M时,第j个输出数据包括待编
码系数的累积概率分布函数的参数。
[0030] 在一个可行的实施例中,当第s个子带不为3N+1个子带中的第一个子带时,熵编码模型是包括第一熵编码模型、第二熵编码模型和第三熵编码模型,第一熵编码模型和第二
熵编码模型均是基于逐像素卷积神经网络实现的,第三熵编码模型是基于循环神经网络
RNN实现的,第一熵编码模型包括T1个卷积层,第二熵编码模型包括T2个卷积层,T1和T2均
为大于0的整数,将s个子带输入熵编码模型中计算得到待编码系数的累积概率分布函数的
参数,包括:
[0031] 将第s‑1个子带输入到第三熵编码模型中进行计算,以得到第一输出结果;该第一输出结果为第二熵编码模型的输入数据;第s个子带为第一熵编码模型的输入数据;
[0032] 当T1和T2均等于1时,根据卷积层C1和卷积层C2对第一输出结果和第s个子带进行融合操作,得到第二输出结果,该第二输出结果为待编码系数的累积概率分布函数的参数,
卷积层C1和卷积层C2分别为第一熵编码模型和第二熵编码模型中的卷积层;或者
[0033] 当T1大于1且T2等于1时,根据卷积层C1和卷积层C2对第一输出结果和第s个子带进行融合操作,得到第二输出结果,卷积层C1为第一熵编码模型中的第q个卷积层,卷积层
C2为第二熵编码模型中的卷积层;若q=T1,则第二输出结果为待编码系数的累积概率分布
函数的参数;若q大于0且小于T1,则第二输出结果为第一熵编码模型中的第q+1个卷积层的
输入数据;或者
[0034] 当T1和T2均大于1时,根据卷积层C1和卷积层C2对第一输出结果和第s个子带进行融合操作,得到第二输出结果;卷积层C1为第一熵编码模型中的第q1个卷积层,卷积层C2为
第二熵编码模型中的第q2个卷积层;若q1=T1且q2=T2,则第二输出结果为待编码系数的
累积概率分布函数的参数,若q1大于0且小于T1,q2大于0且小于T2,则第二输出结果为第一
熵编码模型中的第q1+1个卷积层的输入数据,卷积层C2的输出结果为第二熵编码模型中的
第q2+1个卷积层的输入数据。
[0035] 在一个可行的实施例中,当第s‑1个子带的分辨率与第s个子带的分辨率不相同时,将第s‑1个子带输入到第三熵编码模型中进行计算,以得到第一输出结果,包括:
[0036] 根据第三熵编码模型及第三熵编码模型的状态变量对第s‑1个子带进行卷积运算,以得到卷积结果;
[0037] 对卷积结果进行上采样,以得到第一输出结果,该第一输出结果的分辨率与第s个子带的分辨率相同;
[0038] 对卷积结果进行上采样,以得到第一输出结果之后,该方法还包括:
[0039] 对卷积之后的状态变量进行上采样,以得到采样后的状态变量,所述采样后的状态变量与所述第s个子带的分辨率相同。
[0040] 在一个可行的实施例中,根据卷积层C1和卷积层C2对第一输出结果和第s个子带进行融合操作,包括:
[0041] 根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,第一卷积核为卷积层C1对应的卷积核;根据加窗后的第一卷积核对第一输入数据进行卷积操
作,以得到第一卷积结果;当卷积层C1为第一熵编码模型中的第1个卷积层时,第一输入数
据为第s个子带,当卷积层C1为第一熵编码模型中的非第1个卷积层时,第一输入数据是对
第s个子带进行卷积操作得到的,将第二输入数据输入到第二子卷积层进行卷积操作,以得
到第二卷积结果;当卷积层C2为第二熵编码模型中的第1个卷积层时,第二输入数据为第一
输出结果,当卷积层C2为第二熵编码模型中的非第1个卷积层时,第二输入数据是对第一输
出结果进行卷积操作得到的;对第一卷积结果和第二卷积结果进行相加或堆叠操作,以得
到第二输出结果。
[0042] 在一个可行的实施例中,根据卷积层C1和卷积层C2对第一输出结果和第s个子带进行融合操作,以得到第二输出结果,包括:
[0043] 根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,第一卷积核为卷积层C1对应的卷积核;
[0044] 根据第二窗函数对第二卷积核进行加窗操作,以得到加窗后的第二卷积核,第二卷积核为卷积层C2对应的卷积核,第一窗函数和第二窗函数互补;
[0045] 根据加窗后的第一卷积核对第s个子带进行卷积操作,以得到第一卷积结果;当卷积层C1为第一熵编码模型中的第1个卷积层时,第一输入数据为第s个子带,当卷积层C1为
第一熵编码模型中的非第1个卷积层时,第一输入数据是对第s个子带进行卷积操作得到
的;根据加窗后的第二卷积核对第一输出结果进行卷积操作,以得到第二卷积结果;当卷积
层C2为第二熵编码模型中的第1个卷积层时,第二输入数据为第一输出结果,当卷积层C2为
第二熵编码模型中的非第1个卷积层时,第二输入数据是对第一输出结果进行卷积操作得
到的;对第一卷积结果和第二卷积结果进行相加或堆叠操作,以得到第二输出结果。
[0046] 第二方面,本发明实施例提供一种基于小波变换的图像解码方法,包括:
[0047] 对压缩码流进行熵解码,以得到重构的小波系数;对重构的小波系数进行反量化,以得到反量化后的小波系数;根据小波变换模型对反量化后的小波系数进行N次小波反变
换,以得到重建图像,其中,小波变换模型是基于卷积神经网络CNN实现的,N为大于0的整
数。
[0048] 在一个可行的实施例中,对压缩码流进行熵解码,以得到重构的小波系数,包括:
[0049] 根据熵解码模型对压缩码流进行熵解码,得到重构的小波系数,该熵解码模型是基于深度神经网络实现的。
[0050] 在一个可行的实施例中,压缩码流包括3N+1个子带的码流,重构的小波系数包括3N+1个重构子带,根据熵解码模型对压缩码流进行熵解码,得到重构的小波系数,包括:
[0051] 将第s个子带对应的重构子带输入到熵解码模型中计算得到待解码系数的累积概率分布函数的参数,待解码系数的码流为第s个子带的码流的一部分,第s个子带对应的重
构子带为3N+1个重构子带中的任一个;根据待解码系数的累积概率分布函数的参数获取待
解码系数的累积概率分布函数;根据待解码系数及其累积概率分布函数获取待解码系数的
概率分布;根据待解码系数的概率分布,采用算术解码器对待解码系数的码流进行熵解码,
以得到待解码系数,3N+1个重构子带包括待解码系数。
[0052] 在一个可行的实施例中,当第s个子带为3N+1个子带中的第一个子带时,熵解码模型是基于逐像素卷积神经网络pixelCNN实现的,熵解码模型包括M个卷积层,M为大于0的整
数,将第s个子带对应的重构子带输入到熵解码模型中计算得到待解码系数的累积概率分
布函数的参数,包括:
[0053] 当M=1时,根据第1个卷积层对应的窗函数对第1个卷积层对应的卷积核进行加窗操作,得到第一加窗后的卷积核;根据第一加窗后的卷积核对第s个子带对应的重构子带进
行卷积操作,得到待解码系数的累积概率分布函数的参数;
[0054] 当M大于1时,在进行第j个卷积层的运算时,根据第j个卷积层对应的窗函数对第j个卷积层对应的卷积核进行加窗操作,得到第二加窗后的卷积核;根据第二加窗后的卷积
核对第j个卷积层的输入数据进行卷积操作,得到第j个输出数据;
[0055] 其中,当j=1时,第j个卷积层的输入数据为第1个子带对应的重构子带;当j不大于M且大于1时,第j个卷积层的输入数据为第j‑1个卷积层的输出数据;当j=M时,第j个输
出数据包括待解码系数的累积概率分布函数的参数。
[0056] 在一个可行的实施例中,当第s个子带不为3N+1个子带中的第一个子带时,熵解码模型是包括第一熵解码模型、第二熵解码模型和第三熵解码模型,第一熵解码模型和第三
熵解码模型均是基于逐像素卷积神经网络实现的,第三熵解码模型是基于循环神经网络
RNN实现的,第一熵解码模型包括T1个卷积层,第二熵解码模型包括T2卷积层,T1和T2均为
大于0的整数,将第s个子带对应的重构子带输入到熵解码模型中计算得到待解码系数的累
积概率分布函数的参数,包括:
[0057] 将第s‑1个子带对应的重构子带输入到第三熵解码模型中进行计算,以得到第一输出结果,s‑1个子带对应的重构子带是对第s‑1个子带的码流进行熵解码得到的,第一输
出结果为第二熵解码模型的输入数据;第s个子带对应的重构子带为第一熵解码模型的输
入数据;
[0058] 当T1和T2均等于1时,根据卷积层C1和卷积层C2对第一输出结果和第s个子带对应的重构子带进行融合操作,得到第二输出结果,第二输出结果为待解码系数的累积概率分
布函数的参数,卷积层C1和卷积层C2分别为第一熵解码模型和第二熵解码模型中的卷积
层;或者
[0059] 当T1大于1且T2等于1时,根据卷积层C1和卷积层C2对第一输出结果和第s个子带对应的重构子带进行融合操作,得到第二输出结果,卷积层C1为第一熵解码模型中的第q个
卷积层,卷积层C2为第二熵解码模型中的卷积层;若q=T1,则第二输出结果为待解码系数
的累积概率分布函数的参数;若q大于0且小于T1,则第二输出结果为第一熵解码模型中的
第q+1个卷积层的输入数据;或者
[0060] 当T1和T2均大于1时,根据卷积层C1和卷积层C2对第一输出结果和第s个子带对应的重构子带进行融合操作,得到第二输出结果;卷积层C1为第一熵解码模型中的第q1个卷
积层,卷积层C2为第二熵解码模型中的第q2个卷积层;若q1=T1且q2=T2,则第二输出结果
为待解码系数的累积概率分布函数的参数,若q1大于0且小于T1,q2大于0且小于T2,则第二
输出结果为第一熵解码模型中的第q1+1个卷积层的输入数据,卷积层C2的输出结果为第二
熵解码模型中的第q2+1个卷积层的输入数据。
[0061] 在一个可行的实施例中,当第s‑1个子带对应的重构子带的分辨率与第s个子带对应的重构子带的分辨率不相同时,将第s‑1个子带对应的重构子带输入到第三熵解码模型
中进行计算,以得到第一输出结果,包括:
[0062] 根据第三熵解码模型第三熵编码模型的状态变量对第s‑1个子带对应的重构子带进行卷积运算,得到卷积结果;对卷积结果进行上采样,以得到第一输出结果,该第一输出
结果的分辨率与第s个子带对应的重构子带的分辨率相同;
[0063] 对卷积结果进行上采样,以得到第一输出结果,该方法还包括:
[0064] 对卷积之后的状态变量进行上采样,以得到采样后的状态变量,所述采样后的状态变量与所述第s个子带的分辨率相同。
[0065] 在一个可行的实施例中,根据卷积层C1和卷积层C2对第一输出结果和第s个子带对应的重构子带进行融合操作,以得到第二输出结果,包括:
[0066] 根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,第一卷积核为卷积层C1对应的卷积核;
[0067] 根据加窗后的第一卷积核对第一输入数据进行卷积操作,以得到第一卷积结果;当卷积层C1为第一熵解码模型中的第1个卷积层时,第一输入数据为第s个子带对应的重构
子带,当卷积层C1为第一熵解码模型中的非第1个卷积层时,第一输入数据是对第s个子带
对应的重构子带进行卷积操作得到的;
[0068] 将第二输入数据输入到第二子卷积层进行卷积操作,以得到第二卷积结果;当卷积层C2为第二解编码模型中的第1个卷积层时,第二输入数据为第一输出结果,当卷积层C2
为第二熵解码模型中的非第1个卷积层时,第二输入数据是对第一输出结果进行卷积操作
得到的;对第一卷积结果和第二卷积结果进行相加或堆叠操作,以得到第二输出结果。
[0069] 在一个可行的实施例中,根据卷积层C1和卷积层C2对第一输出结果和第s个子带对应的重构子带进行融合操作,以得到第二输出结果,包括:
[0070] 根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,该第一卷积核为卷积层C1对应的卷积核;根据第二窗函数对第二卷积核进行加窗操作,以得到
加窗后的第二卷积核,该第二卷积核为卷积层C2对应的卷积核,第一窗函数和第二窗函数
互补;
[0071] 根据加窗后的第一卷积核对第一输入数据进行卷积操作,以得到第一卷积结果;当卷积层C1为第一熵解码模型中的第1个卷积层时,第一输入数据为第s个子带对应的重构
子带,当卷积层C1为第一熵解码模型中的非第1个卷积层时,第一输入数据是对第s个子带
对应的重构子带进行卷积操作得到的。
[0072] 根据加窗后的第二卷积核对第二输入数据进行卷积操作,以得到第二卷积结果;当卷积层C2为第二解编码模型中的第1个卷积层时,第二输入数据为第一输出结果,当卷积
层C2为第二熵解码模型中的非第1个卷积层时,第二输入数据是对第一输出结果进行卷积
操作得到的;对第一卷积结果和第二卷积结果进行相加或堆叠操作,以得到第二输出结果。
[0073] 在一个可行的实施例中,根据小波变换模型对反量化后的小波系数进行N次小波反变换,以得到重建图像,包括:
[0074] 在进行第t次小波反变换时,对近似子带PN+1‑t和细节子带I(N+1‑t)1进行更新操作和预测操作,得到第一处理子带和第二处理子带,根据第一处理子带和第二处理子带获取中
间近似分量,中间近似分量的奇数列的系数或奇数行的系数来自第一处理子带,中间近似
分量的偶数列的系数或偶数行的系数来自第二处理子带;
[0075] 对细节子带I(N+1‑t)2和细节子带I(N+1‑t)3进行更新操作和预测操作,得到第三处理子带和第四处理子带,根据第三处理子带和第四处理子带获取中间细节分量,中间细节分
量的奇数列的系数或偶数行的系数来自第三处理子带,中间细节分量的偶数列的系数或偶
数行的系数来自第四处理子带;
[0076] 对中间细节分量和中间近似分量进行更新操作和预测操作,第五处理子带和第六处理子带,根据第五处理子带和第六处理子带获取近似子带Pt‑1,近似子带Pt‑1的奇数行的
系数或奇数列的系数来自第五处理子带,近似子带Pt‑1的偶数行的系数或偶数列的系数来
自第六处理子带;
[0077] 其中,细节子带I(N+1‑t)1、细节子带(N+1‑t)2和细节子带I(N+1‑t)3的分辨率与近似子带PN+1‑t的分辨率相同;当第t次小波反变换为最后一次小波变换时,近似子带Pt‑1为所述重建
图像。
[0078] 在一个可行的实施例中,预测操作是基于CNN实现的,
[0079] 或者更新操作是基于CNN实现的;
[0080] 或者或者更新操作和预测操作均是基于CNN实现的。
[0081] 在一个可行的实施例中,根据小波变换模型对反量化后的小波系数进行N次小波反变换,以得到重建图像之后,该方法还包括:
[0082] 根据后处理模型对重建图像进行后处理,以得到处理后的重建图像,其中,后处理模型是基于深度神经网络实现的。
[0083] 通过对重建图像进行基于深度神经网络的后处理,可进一步提高重建图像的质量,进而提高解码性能。
[0084] 第三方面,本发明实施例还提供一种训练方法,包括:
[0085] 训练小波变换模型,其中,训练小波变换模型,包括:
[0086] 初始化小波变换模型;
[0087] 根据初始化后的小波变换模型对训练图像进行N次小波变换,得到3N+1个子带;
[0088] 根据初始化后的小波变换模型依次对1,2,3,……,3N个子带进行小波反变换,得到3N张重建图像;
[0089] 根据训练图像和3N张重建图像计算损失值,该损失值 其中,Ri为3N张重建图像中的第i张,I为训练图像;
[0090] 重复上述方法多次,若损失值L的范围波动很小,则确定小波变换模型训练完毕;否则,按照上述方法继续训练小波变换模型。
[0091] 第四方面,本发明实施例提供一种基于小波变换的图像编码装置,包括:
[0092] 变换模块,用于根据小波变换模型对待编码图像进行N次小波变换,以得到小波系数,小波变换模型是基于卷积神经网路CNN实现的,N为大于0的整数;
[0093] 量化模块,用于对小波系数进行量化,以得到量化后的小波系数;
[0094] 熵编码模块,用于对量化后的小波系数进行熵编码,得到压缩码流。
[0095] 在一个可行的实施例中,变换模块具体用于:
[0096] 在进行第i次小波变时,对子带X进行分解,以得到奇数采样分量和偶数采样分量,其中,奇数采样分量由子带X中奇数行系数或奇数列系数构成,偶数采样分量由子带X中偶
数行系数或偶数列系数构成,
[0097] 对偶数采样分量和奇数采样分量进行更新操作和预测操作,以得到中间近似分量和中间细节分量;
[0098] 对中间近似分量进行分解,以得到第一采样分量和第二采样分量;其中,第一采样分量由中间近似分量的奇数列的系数或奇数行的系数,第二采样分量由中间近似分量的偶
数列的系数或偶数行的系数构成;
[0099] 对中间细节分量进行分解,以得到第三采样分量和第四采样分量;其中,第三采样分量由中间细节分量的奇数行的系数或奇数行的系数构成,第四采样分量由中间细节分量
的偶数列的系数或偶数行的系数构成;
[0100] 对第一采样分量和第二采样分量进行更新操作和预测操作,以得到近似子带Pi和细节子带Ii1;对第三采样分量和第四采样分量进行更新操作和预测操作,以得到细节子带
Ii2和细节子带Ii3;
[0101] 其中,小波系数包括近似子带Pi、细节子带Ii1、细节子带Ii2和细节子带Ii3;当第i次小波变换为第一次小波变换时,子带X为待编码图像;当第i次小波变换不是第一次小波
变换时,子带X为近似子带Pi‑1,近似子带Pi‑1为进行i‑1次小波变换后得到的近似子带。
[0102] 在一个可行的实施例中,预测操作是基于CNN实现的;或者更新操作是基于CNN实现的;或者预测操作和更新操作均是基于CNN实现的。
[0103] 在一个可行的实施例中,熵编码模块具体用于:
[0104] 根据熵编码模型对量化后的小波系数进行编码,以得到压缩码流,熵编码模型是基于深度神经网络得到实现的。
[0105] 在一个可行的实施例中,小波系数包括3N+1个子带,熵编码模块具体用于:
[0106] 将第s个子带输入熵编码模型中计算得到待编码系数的累积概率分布函数的参数,待编码系数为第s个子带中任一个系数,第s个子带为3N+1个子带中的任意一个子带;根
据待编码系数的累积概率分布函数的参数得到累积概率分布函数;根据待编码系数及其累
积概率分布函数获取待编码系数的概率分布;根据待编码系数的概率分布,采用算术编码
器对待编码系数进行熵编码,以得到待编码系数对应的码流,压缩码流包括待编码系数对
应的码流。
[0107] 在一个可行的实施例中,当第s个子带为3N+1个子带中的第一个子带时,熵编码模型是基于逐像素卷积神经网络pixelCNN实现的,熵编码模型包括M个卷积层,M为大于0的整
数,在将s个子带输入熵编码模型中计算得到待编码系数的累积概率分布函数的参数的方
面,熵编码模块具体用于:
[0108] 当M=1时,根据第1个卷积层对应的窗函数对第1个卷积层对应的卷积核进行加窗操作,得到第一加窗后的卷积核;根据第一加窗后的卷积核对第s个子带进行卷积操作,得
到待编码系数的累积概率分布函数的参数;
[0109] 当M大于1时,在进行第j个卷积层的运算时,根据第j个卷积层对应的窗函数对第j个卷积层对应的卷积核进行加窗操作,得到第二加窗后的卷积核;根据第二加窗后的卷积
核对第j个卷积层的输入数据进行卷积操作,得到第j个输出数据;
[0110] 其中,当j=1时,第j个卷积层的输入数据为第一个子带;当j大于1且不大于M时,第j个卷积层的输入数据为第j‑1个卷积层的输出数据;当j=M时,第j个输出数据包括待编
码系数的累积概率分布函数的参数。
[0111] 在一个可行的实施例中,当第s个子带不为3N+1个子带中的第一个子带时,熵编码模型是包括第一熵编码模型、第二熵编码模型和第三熵编码模型,第一熵编码模型和第二
熵编码模型均是基于逐像素卷积神经网络实现的,第三熵编码模型是基于RNN实现的,第一
熵编码模型包括T1个卷积层,第二熵编码模型包括T2个卷积层,T1和T2均为大于0的整数,
在将s个子带输入熵编码模型中计算得到待编码系数的累积概率分布函数的参数的方面,
熵编码模块具体用于:
[0112] 将第s‑1个子带输入到第三熵编码模型中进行计算,以得到第一输出结果;该第一输出结果为第二熵编码模型的输入数据;第s个子带为第一熵编码模型的输入数据;
[0113] 当T1和T2均等于1时,根据卷积层C1和卷积层C2对第一输出结果和第s个子带进行融合操作,得到第二输出结果,第二输出结果为待编码系数的累积概率分布函数的参数,卷
积层C1和卷积层C2分别为第一熵编码模型和第二熵编码模型中的卷积层;或者
[0114] 当T1大于1且T2等于1时,根据卷积层C1和卷积层C2对第一输出结果和第s个子带进行融合操作,得到第二输出结果,卷积层C1为第一熵编码模型中的第q个卷积层,卷积层
C2为第二熵编码模型中的卷积层;若q=T1,则第二输出结果为待编码系数的累积概率分布
函数的参数;若q大于0且小于T1,则第二输出结果为第一熵编码模型中的第q+1个卷积层的
输入数据;或者
[0115] 当T1和T2均大于1时,根据卷积层C1和卷积层C2对第一输出结果和第s个子带进行融合操作,得到第二输出结果;卷积层C1为第一熵编码模型中的第q1个卷积层,卷积层C2为
第二熵编码模型中的第q2个卷积层;若q1=T1且q2=T2,则第二输出结果为待编码系数的
累积概率分布函数的参数,若q1大于0且小于T1,q2大于0且小于T2,则第二输出结果为第一
熵编码模型中的第q1+1个卷积层的输入数据,卷积层C2的输出结果为第二熵编码模型中的
第q2+1个卷积层的输入数据。
[0116] 在一个可行的实施例中,当第s‑1个子带的分辨率与第s个子带的分辨率不相同时,在将第s‑1个子带输入到第三熵编码模型中进行计算,以得到第一输出结果的方面,熵
编码模块具体用于:
[0117] 根据第三熵编码模型第三熵编码模型的状态变量对第s‑1个子带进行卷积运算,以得到卷积结果;
[0118] 对卷积结果进行上采样,以得到第一输出结果该第一输出结果的分辨率与第s个子带的分辨率相同;
[0119] 在对卷积结果进行上采样,以得到第一输出结果之后,熵编码模块还用于:
[0120] 对卷积之后的状态变量进行上采样,以得到采样后的状态变量,所述采样后的状态变量与所述第s个子带的分辨率相同。
[0121] 在一个可行的实施例中,在根据卷积层C1和卷积层C2对第一输出结果和第s个子带进行融合操作的方面,熵编码模块具体用于:
[0122] 根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,该第一卷积核为卷积层C1对应的卷积核;
[0123] 根据加窗后的第一卷积核对第一输入数据进行卷积操作,以得到第一卷积结果;当卷积层C1为第一熵编码模型中的第1个卷积层时,第一输入数据为第s个子带,当卷积层
C1为第一熵编码模型中的非第1个卷积层时,第一输入数据是对第s个子带进行卷积操作得
到的,
[0124] 将第二输入数据输入到第二子卷积层进行卷积操作,以得到第二卷积结果;当卷积层C2为第二熵编码模型中的第1个卷积层时,第二输入数据为第一输出结果,当卷积层C2
为第二熵编码模型中的非第1个卷积层时,第二输入数据是对第一输出结果进行卷积操作
得到的;对第一卷积结果和第二卷积结果进行相加或堆叠操作,以得到第二输出结果。
[0125] 在一个可行的实施例中,在根据卷积层C1和卷积层C2对第一输出结果和第s个子带进行融合操作,以得到第二输出结果的方面,熵编码模块具体用于:
[0126] 根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,该第一卷积核为卷积层C1对应的卷积核;
[0127] 根据第二窗函数对第二卷积核进行加窗操作,以得到加窗后的第二卷积核,该第二卷积核为卷积层C2对应的卷积核,第一窗函数和第二窗函数互补;
[0128] 根据加窗后的第一卷积核对第s个子带进行卷积操作,以得到第一卷积结果;当卷积层C1为第一熵编码模型中的第1个卷积层时,第一输入数据为第s个子带,当卷积层C1为
第一熵编码模型中的非第1个卷积层时,第一输入数据是对第s个子带进行卷积操作得到
的;
[0129] 根据加窗后的第二卷积核对第一输出结果进行卷积操作,以得到第二卷积结果;当卷积层C2为第二熵编码模型中的第1个卷积层时,第二输入数据为第一输出结果,当卷积
层C2为第二熵编码模型中的非第1个卷积层时,第二输入数据是对第一输出结果进行卷积
操作得到的;对第一卷积结果和第二卷积结果进行相加或堆叠操作,以得到第二输出结果。
[0130] 第五方面,本发明实施例提供一种基于小波变换的图像解码装置,包括:
[0131] 熵解码模块,用于对压缩码流进行熵解码,以得到重构的小波系数;
[0132] 反量化模块,用于对重构的小波系数进行反量化,以得到反量化后的小波系数;
[0133] 反变换模块,用于根据小波变换模型对反量化后的小波系数进行N次小波反变换,以得到重建图像,其中,小波变换模型是基于卷积神经网络CNN实现的,N为大于0的整数。
[0134] 在一个可行的实施例中,熵解码模块具体用于:
[0135] 根据熵解码模型对压缩码流进行熵解码,得到重构的小波系数,熵解码模型是基于深度神经网络实现的。
[0136] 在一个可行的实施例中,压缩码流包括3N+1个子带的码流,重构的小波系数包括3N+1个重构子带,熵解码模块具体用于:
[0137] 将第s个子带对应的重构子带输入到熵解码模型中计算得到待解码系数的累积概率分布函数的参数,待解码系数的码流为第s个子带的码流的一部分,第s个子带对应的重
构子带为3N+1个重构子带中的任一个;根据待解码系数的累积概率分布函数的参数获取待
解码系数的累积概率分布函数;根据待解码系数及其累积概率分布函数获取待解码系数的
概率分布;根据待解码系数的概率分布,采用算术解码器对待解码系数的码流进行熵解码,
以得到待解码系数,3N+1个重构子带包括待解码系数。
[0138] 在一个可行的实施例中,当第s个子带为3N+1个子带中的第一个子带时,熵解码模型是基于逐像素卷积神经网络pixelCNN实现的,熵解码模型包括M个卷积层,M为大于0的整
数,在将第s个子带对应的重构子带输入到熵解码模型中计算得到待解码系数的累积概率
分布函数的参数的方面,熵解码模块具体用于:
[0139] 当M=1时,根据第1个卷积层对应的窗函数对第1个卷积层对应的卷积核进行加窗操作,得到第一加窗后的卷积核;
[0140] 根据第一加窗后的卷积核对第s个子带对应的重构子带进行卷积操作,得到待解码系数的累积概率分布函数的参数;
[0141] 当M大于1时,在进行第j个卷积层的运算时,根据第j个卷积层对应的窗函数对第j个卷积层对应的卷积核进行加窗操作,得到第二加窗后的卷积核;
[0142] 根据第二加窗后的卷积核对第j个卷积层的输入数据进行卷积操作,得到第j个输出数据;
[0143] 其中,当j=1时,第j个卷积层的输入数据为第1个子带对应的重构子带;当j不大于M且大于1时,第j个卷积层的输入数据为第j‑1个卷积层的输出数据;当j=M时,第j个输
出数据包括待解码系数的累积概率分布函数的参数。
[0144] 在一个可行的实施例中,当第s个子带不为3N+1个子带中的第一个子带时,熵解码模型是包括第一熵解码模型、第二熵解码模型和第三熵解码模型,第一熵解码模型和第三
熵解码模型均是基于逐像素卷积神经网络实现的,第三熵解码模型是基于循环神经网络
RNN实现的,第一熵解码模型包括T1个卷积层,第二熵解码模型包括T2卷积层,T1和T2均为
大于0的整数,在将第s个子带对应的重构子带输入到熵解码模型中计算得到待解码系数的
累积概率分布函数的参数的方面,熵解码模块具体用于:
[0145] 将第s‑1个子带对应的重构子带输入到第三熵解码模型中进行计算,以得到第一输出结果,s‑1个子带对应的重构子带是对第s‑1个子带的码流进行熵解码得到的,第一输
出结果为第二熵解码模型的输入数据;第s个子带对应的重构子带为第一熵解码模型的输
入数据;
[0146] 当T1和T2均等于1时,根据卷积层C1和卷积层C2对第一输出结果和第s个子带对应的重构子带进行融合操作,得到第二输出结果,第二输出结果为待解码系数的累积概率分
布函数的参数,卷积层C1和卷积层C2分别为第一熵解码模型和第二熵解码模型中的卷积
层;或者
[0147] 当T1大于1且T2等于1时,根据卷积层C1和卷积层C2对第一输出结果和第s个子带对应的重构子带进行融合操作,得到第二输出结果,卷积层C1为第一熵解码模型中的第q个
卷积层,卷积层C2为第二熵解码模型中的卷积层;若q=T1,则第二输出结果为待解码系数
的累积概率分布函数的参数;若q大于0且小于T1,则第二输出结果为第一熵解码模型中的
第q+1个卷积层的输入数据;或者
[0148] 当T1和T2均大于1时,根据卷积层C1和卷积层C2对第一输出结果和第s个子带对应的重构子带进行融合操作,得到第二输出结果;卷积层C1为第一熵解码模型中的第q1个卷
积层,卷积层C2为第二熵解码模型中的第q2个卷积层;若q1=T1且q2=T2,则第二输出结果
为待解码系数的累积概率分布函数的参数,若q1大于0且小于T1,q2大于0且小于T2,则第二
输出结果为第一熵解码模型中的第q1+1个卷积层的输入数据,卷积层C2的输出结果为第二
熵解码模型中的第q2+1个卷积层的输入数据。
[0149] 在一个可行的实施例中,当第s‑1个子带对应的重构子带的分辨率与第s个子带对应的重构子带的分辨率不相同时,在将第s‑1个子带对应的重构子带输入到第三熵解码模
型中进行计算,以得到第一输出结果的方面,熵解码模块具体用于:
[0150] 根据第三熵解码模型第三熵编码模型的状态变量对第s‑1个子带对应的重构子带进行卷积运算,得到卷积结果;
[0151] 对卷积结果进行上采样,以得到第一输出结果,第一输出结果的分辨率与第s个子带对应的重构子带的分辨率相同;
[0152] 在对卷积结果进行上采样,以得到第一输出结果之后,熵解码模块还具体用于:
[0153] 对卷积之后的状态变量进行上采样,以得到采样后的状态变量,所述采样后的状态变量与所述第s个子带的分辨率相同。
[0154] 在一个可行的实施例中,根据卷积层C1和卷积层C2对第一输出结果和第s个子带对应的重构子带进行融合操作,以得到第二输出结果,熵解码模块具体用于:
[0155] 根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,该第一卷积核为卷积层C1对应的卷积核;
[0156] 根据加窗后的第一卷积核对第一输入数据进行卷积操作,以得到第一卷积结果;当卷积层C1为第一熵解码模型中的第1个卷积层时,第一输入数据为第s个子带对应的重构
子带,当卷积层C1为第一熵解码模型中的非第1个卷积层时,第一输入数据是对第s个子带
对应的重构子带进行卷积操作得到的;
[0157] 将第二输入数据输入到第二子卷积层进行卷积操作,以得到第二卷积结果;当卷积层C2为第二解编码模型中的第1个卷积层时,第二输入数据为第一输出结果,当卷积层C2
为第二熵解码模型中的非第1个卷积层时,第二输入数据是对第一输出结果进行卷积操作
得到的;
[0158] 对第一卷积结果和第二卷积结果进行相加或堆叠操作,以得到第二输出结果。
[0159] 在一个可行的实施例中,在根据卷积层C1和卷积层C2对第一输出结果和第s个子带对应的重构子带进行融合操作,以得到第二输出结果的方面,熵解码模块具体用于:
[0160] 根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,该第一卷积核为卷积层C1对应的卷积核;
[0161] 根据第二窗函数对第二卷积核进行加窗操作,以得到加窗后的第二卷积核,该第二卷积核为卷积层C2对应的卷积核,第一窗函数和第二窗函数互补;
[0162] 根据加窗后的第一卷积核对第一输入数据进行卷积操作,以得到第一卷积结果;当卷积层C1为第一熵解码模型中的第1个卷积层时,第一输入数据为第s个子带对应的重构
子带,当卷积层C1为第一熵解码模型中的非第1个卷积层时,第一输入数据是对第s个子带
对应的重构子带进行卷积操作得到的;
[0163] 根据加窗后的第二卷积核对第二输入数据进行卷积操作,以得到第二卷积结果;当卷积层C2为第二解编码模型中的第1个卷积层时,第二输入数据为第一输出结果,当卷积
层C2为第二熵解码模型中的非第1个卷积层时,第二输入数据是对第一输出结果进行卷积
操作得到的;对第一卷积结果和第二卷积结果进行相加或堆叠操作,以得到第二输出结果。
[0164] 在一个可行的实施例中,反变换模块具体用于,包括:
[0165] 在进行第t次小波反变换时,对近似子带PN+1‑t和细节子带I(N+1‑t)1进行更新操作和预测操作,得到第一处理子带和第二处理子带,根据第一处理子带和第二处理子带获取中
间近似分量,中间近似分量的奇数列的系数或奇数行的系数来自第一处理子带,中间近似
分量的偶数列的系数或偶数行的系数来自第二处理子带;
[0166] 对细节子带I(N+1‑t)2和细节子带I(N+1‑t)3进行更新操作和预测操作,得到第三处理子带和第四处理子带,根据第三处理子带和第四处理子带获取中间细节分量,中间细节分
量的奇数列的系数或偶数行的系数来自第三处理子带,中间细节分量的偶数列的系数或偶
数行的系数来自第四处理子带;
[0167] 对中间细节分量和中间近似分量进行更新操作和预测操作,第五处理子带和第六处理子带,根据第五处理子带和第六处理子带获取近似子带Pt‑1,近似子带Pt‑1的奇数行的
系数或奇数列的系数来自第五处理子带,近似子带Pt‑1的偶数行的系数或偶数列的系数来
自第六处理子带;
[0168] 其中,细节子带I(N+1‑t)1、细节子带(N+1‑t)2和细节子带I(N+1‑t)3的分辨率与近似子带PN+1‑t的分辨率相同;当第t次小波反变换为最后一次小波变换时,近似子带Pt‑1为所述重建
图像。
[0169] 在一个可行的实施例中,预测操作是基于CNN实现的,或者更新操作是基于CNN实现的或者,更新操作和预测操作均是基于CNN实现的。
[0170] 在一个可行的实施例中,图像编码装置还包括:
[0171] 后处理模块,用于在反变换模块根据小波变换模型对反量化后的小波系数进行N次小波反变换,以得到重建图像之后,根据后处理模型对重建图像进行后处理,以得到处理
后的重建图像,其中,后处理模型是基于深度神经网络实现的。
[0172] 第六方面,本发明实施例提供一种训练装置,包括:
[0173] 初始化模块,用于初始化小波变换模型;
[0174] 训练模块,用于根据初始化后的小波变换模型对训练图像进行N次小波变换,得到3N+1个子带;根据初始化后的小波变换模型依次对1,2,3,……,3N个子带进行小波反变换,
得到3N张重建图像;根据训练图像和3N张重建图像计算损失值,该损失值
其中,Ri为3N张重建图像中的第i张,I为训练图像;重复上述方法多次,
若损失值L的范围波动很小,则确定小波变换模型训练完毕;否则,按照上述方法继续训练
小波变换模型。
[0175] 第七方面,本发明实施例提供一种道路可行驶区域推理装置,包括:
[0176] 用于存储有可执行程序代码的存储器;
[0177] 与所述存储器耦合的处理器;所述处理器调用所述存储器中存储的可执行程序代码时执行如第一方面、第二方面或第三方面所述方法中的部分或全部。
[0178] 第八方面,本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序被具有处理能力的计算平台或者处理器执行时以实现如第一方面、第
二方面或第三方面中所述方法的部分或全部步骤。
[0179] 本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。

附图说明

[0180] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他的附图。
[0181] 图1为本发明实施例提供的一种图像编码的流程示意图;
[0182] 图2为本发明实施例提供的另一种图像编码的流程示意图;
[0183] 图3为本发明实施例提供的一种图像编码的架构示意图;
[0184] 图4为本发明实施例提供的小波变换模型中基于深度神经网络的预测模块的结构图;
[0185] 图5为本发明实施例提供的一种图像解码的流程示意图;
[0186] 图6为本发明实施例提供的另一种图像解码的流程示意图;
[0187] 图7为本发明实施例提供的一种图像解码的架构示意图;
[0188] 图8为本发明实施例提供的一种基于神经网络的小波变换的端到端训练框架示意图;
[0189] 图9为本发明实施例提供的子带编解码顺序示意图;
[0190] 图10为本发明实施例提供的另一种图像编码的流程示意图;
[0191] 图11为本发明实施例提供的另一种图像编码的流程示意图;
[0192] 图12为本发明实施例提供的一种图像编码的架构示意图;
[0193] 图13为本发明实施例提供的另一种图像编码的架构示意图;
[0194] 图14为本发明实施例提供的预测模型和更新模型的结构图
[0195] 图15为本发明实施例提供的一种熵解码的结构示意图
[0196] 图16为本发明实施例提供的一种窗函数示意图;
[0197] 图17为本发明实施例提供的子带编码的过程示意图;
[0198] 图18为本发明实施例提供的卷积核加窗的过程示意图;
[0199] 图19(a)为本发明实施例提供一种融合结构示意图;
[0200] 图19(b)为本发明实施例提供另一种融合结构示意图;
[0201] 图19(c)为本发明实施例提供另一种融合结构示意图;
[0202] 图20为本发明实施例提供的上采样过程示意图;
[0203] 图21为本发明实施例提供的另一种窗函数示意图;
[0204] 图22为本发明实施例提供的一种图像解码的流程示意图;
[0205] 图23为本发明实施例提供的另一种图像解码的流程示意图;
[0206] 图24为本发明实施例提供的一种图像解码的架构示意图;
[0207] 图25为本发明实施例提供的另一种图像解码的架构示意图;
[0208] 图26为本发明实施例提供的一种基于深度神经网络的后处理模型的框架示意图;
[0209] 图27为本发明实施例提供的一种图像编码装置的结构示意图;
[0210] 图28为本发明实施例提供的一种图像解码装置的结构示意图;
[0211] 图29为本发明实施例提供的一种训练装置的结构示意图。
[0212] 图30为本发明实施例提供的另一种图像编码装置的结构示意图;
[0213] 图31为本发明实施例提供的另一种图像解码装置的结构示意图;
[0214] 图32为本发明实施例提供的另一种训练装置的结构示意图。

具体实施方式

[0215] 下面结合附图详细的阐述本申请基于小波变换的图像编解码的具体过程。
[0216] 在此需要说明的是,本申请涉及的编号可以从1开始,也可以从0开始,相应的最大值也发生变化。下文以编号从1开始进行描述的。
[0217] 首先介绍基于小波变换的图像编码过程,如图1所示,对待编码图像进行基于深度神经网络的小波变换,以得到小波系数;对该小波系数进行量化和熵编码,得到压缩码流。
具体参见图2,图2为本申请实施例提供的一种基于小波变换的图像编码方法的流程示意
图。如图2所示,该方法包括:
[0218] S201、根据小波变换模型对待编码图像进行N次小波变换,以得到小波系数。
[0219] 其中,小波变换模型是基于卷积神经网络(convolutional neural networks,CNN)实现的。小波系数由3N+1个子带构成。
[0220] 具体地,如图3所示,根据小波变换模型对待编码图像进行i次小波变换,具体包括:
[0221] 对子带X进行分解,得到奇数采样分量和偶数采样分量,奇数采样分量由子带X中奇数行(或列)像素构成,偶数采样分量由子带X中偶数行(或列)像素构成;根据奇数采样分
量和偶数采样分量获取中间近似分量,该中间近似分量的分辨率与奇数采样分量和偶数采
样分量的分辨率一致,且该中间近似分量中每个系数为奇数采样分量和偶数采样分量中对
应位置的系数之和的1/2;根据小波变换模型使用中间近似分量对偶数采样分量进行预测,
以得到第一预测分量,该第一预测分量的分辨率与中间近似分量的分辨率一致;根据偶数
采样分量和第一预测分量获取中间细节分量,该中间细节分量中每个系数为偶数采样分量
和第一预测分量对应位置的系数之差。
[0222] 对中间近似分量进行分解,得到第一近似采样分量和第二近似采样分量,其中,第一近似采样分量由中间近似分量中的奇数列的系数或奇数行的系数构成,第二近似采样分
量由中间近似分量中偶数列的系数或偶数行的系数构成。根据第一近似采样分量和第二近
似采样分量获取近似子带Pi,近似子带Pi的分辨率与第一近似采样分量和第二近似采样分
量的分辨率相同,且近似子带Pi中每个系数为第一近似采样分量和第二近似采样分量中对
应位置的系数之和的1/2;小波变换模型使用近似子带Pi对第二近似采样分量进行预测,以
得到第二预测分量,第二预测分量的分辨率与近似子带Pi的分辨率一致;根据第二近似采
样分量和第二预测分量获取细节子带Ii1,该细节子带Ii1的分辨率与第二近似采样分量和
第二预测分量的分辨率相同该细节子带Ii1中每个系数为第二近似采样分量和第二预测分
量对应位置的系数之差。
[0223] 同理,按照对中间近似分量处理的方法对中间细节分量进行处理,以得到细节子带Ii2和细节子带Ii3。其中,细节子带Ii2和细节子带Ii3的分辨率与细节子带Ii1的分辨率一
致。
[0224] 当i=1时,子带X为待编码图像,当i大于1时,子带X为近似子带Pi‑1,该近似子带Pi‑1为对待编码图像进行第i‑1次小波变换得到的近似子带。
[0225] 在此需要说明的是,i可以从0开始,最大值则为N‑1,比如当i=0时,子带X为待编码图像。
[0226] 在此需要说明的是,由于待编码图像或近似子带均是二维数据,在进行小波变换是需要在行和列的方向各进行一次基于深度神经网络的小波变换,因此有上述过程可知,
对待编码图像进行一次完整的基于深度神经网络的小波变换共利用基于CNN的小波变换模
型3次。
[0227] 在此需要指出的是,在对待编码图像进行第1次小波变换后,得到1个近似子带和3个细节子带;对待编码图像进行第2次小波变换具体是对近似子带P1进行小波变换,又可得
到近似子带P2、细节子带I21、细节子带I22和细节子带I23,至此共得到1个近似子带和6个细
节图像;对待编码图像进行第3次小波变换具体是对待编码图像进行第2次小波变换后得到
的近似子带P2进行小波变换,又可得到近似子带P3、细节子带I31、细节子带I32和细节子带
I33。至此共得到1个近似子带和9个细节子带。以此类推,在对待编码图像进行N次小波变换
后,共得到1张近似图像和3*N个细节子带。因此在对待编码图像进行N次小波变换后,共得
到3*N+1子带。
[0228] 图4给出一种小波变换模型中基于深度神经网络的预测模块的结构图。在图4中,“3×3×24/tanh”表示当前卷积层使用尺寸为3×3的卷积核生成24个特征图,并在之后使
用tanh激活函数;“3×3×12/tanh”表示当前卷积层使用尺寸为3×3的卷积核生成12个特
征图,并在之后使用tanh激活函数;“1×1×48/tanh”表示当前卷积层使用尺寸为1×1的卷
积核生成48个特征图,并在之后使用tanh激活函数;“1×1×48/linear”表示当前卷积层使
用尺寸为1×1的卷积核生成48个特征图,之后不使用激活函数;“concat”表示特征图的堆
叠操作。
[0229] 在一个实施例中,小波变换模型的参数内置于编、解码器中,不需要传输。
[0230] S202、对小波系数进行量化和熵编码,以得到待编码图像的压缩码流。
[0231] 在此需要说明的是,针对小波系数的子带编码方法包含量化和熵编码两个步骤。其中,常见的子带编码方法有嵌入式零树小波变换(embedded zerotrees of wavelet 
transforms,EZW)编码,多级树集合分裂(set partitioning in hierarchical trees,
SPIHT)算法,优化截取内嵌码块编码(embedded block coding with optimized 
truncation,EBCOT)等,可以结合具体的要求在此步骤进行选择,具体量化和熵编码过程在
此不再叙述。
[0232] 下面介绍基于小波变换的图像解码过程,如图5所示,对压缩码流进行熵解码和反量化,得到重构的小波系数;对重构的小波系数进行基于深度神经网络的小波反变换,以得
到重建图像。具体参见图6,图6为本申请实施例提供的一种基于小波变换的图像解码方法
的流程示意图。如图6所示,该方法包括:
[0233] S601、对压缩码流进行熵解码和反量化,以得到重构的小波系数。
[0234] 在此需要说明的是,针对压缩码流的子带解码方法包括熵解码和反量化两个步骤。该子带解码方法与编码端的子带编码方法相适应,在此不具体叙述。
[0235] S602、根据小波变换模型对重构的小波系数进行N次小波反变换,以得到重建图像。
[0236] 其中,重构的小波系数包括3N+1子带,该3N+1子带包括1个近似子带和3N个细节子带。
[0237] 具体地,如图7所示,根据小波变换模型对重构的小波系数进行第t次小波反变换,具体包括:
[0238] 获取近似子带PN+1‑t和与该近似子带PN+1‑t的分辨率相同的3个细节子带,该3个细节子带分别为细节子带I(N+1‑t)1、细节子带I(N+1‑t)2和细节子带I(N+1‑t)3,且细节子带I(N+1‑t)1与
近似子带PN+1‑t在编码阶段同时生成。根据近似子带PN+1‑t获取第一放大分量,该第一放大分
量的中每个系数为近似子带PN+1‑t中对应位置的系数的2倍;根据小波变换模型使用近似子
带PN+1‑t进行预测,以得到第一预测近似分量;根据该第一预测近似分量与细节子带I(N+1‑t)1
获取第一偶数采样分量,该第一偶数采样分量中每个系数为第一预测近似分量和细节子带
I(N+1‑t)1中对应位置的系数之和;根据第一放大分量和第一偶数采样分量获取第一奇数采样
分量,第一奇数采样分量中每个系数为第一放大分量和第一偶数采样分量中对应位置的系
数之差;对第一偶数采样分量和第一奇数采样分量进行合并,以得到中间近似分量,该中间
近似分量的行(或列)分辨率为近似子带PN+1‑t的分辨率的2倍。中间近似分量中的奇数行的
系数或奇数列的系数来自第一奇数采样分量,中间近似分量中的偶数行的系数或偶数列的
系数来自第一偶数采样分量。换言之,中间近似分量中的奇数行的系数或奇数列的系数为
第一奇数采样分量中的部分或全部,中间近似分量中的偶数行的系数或偶数列的系数为第
一偶数采样分量的部分或全部。
[0239] 根据细节子带I(N+1‑t)2获取第二放大分量,该第二放大分量的中每个系数为细节子带I(N+1‑t)2中对应位置的系数的2倍;根据小波变换模型使用细节子带I(N+1‑t)2进行预测,以
得到第一预测细节分量;根据该第一预测细节分量与细节子带I(N+1‑t)3获取第二偶数采样分
量;根据第二放大分量和第二偶数采样分量获取第二奇数采样分量,第二奇数采样图像中
每个系数为第二放大分量和第二偶数采样分量中对应位置的系数之差;对第二偶数采样分
量和第二奇数采样分量进行合并,以得到中间细节分量,中间细节分量的列或行分辨率为
细节子带I(N+1‑t)2或细节子带I(N+1‑t)3的列或行分辨率的2倍。中间细节分量中的奇数列的系
数或奇数行的系数来自第二奇数采样分量,中间细节分量中的偶数列的系数或偶数行的系
数来自第二偶数采样分量。换言之,中间细节分量中的奇数列的系数或奇数行的系数为第
二奇数采样分量中的部分或全部,中间细节分量中的偶数列的系数或偶数行的系数为第二
偶数采样分量中的部分或全部。
[0240] 根据中间近似分量获取第三放大图像,该第三放大分量的中每个系数为中间近似分量中对应位置的像素值的2倍;根据小波变换模型使用中间近似分量进行预测,以得到第
一预测分量;根据该第一预测分量与中间细节分量获取第三偶数采样分量;根据第三放大
分量和第三偶数采样分量获取第三奇数采样分量,第三奇数采样分量中每个系数为第三放
大分量和第三偶数采样分量中对应位置的系数之差;对第三偶数采样分量和第三奇数采样
分量进行合并,以得到近似子带PN‑t,近似子带PN‑t的分辨率为近似子带PN+1‑t的分辨率的2
倍。近似子带PN‑t中的奇数行的系数或奇数列的系数来自第三奇数采样分量,近似子带PN‑t
中的偶数行的系数或偶数列的系数来自第三偶数采样分量。换言之,近似子带PN‑t中的奇数
行的系数或奇数列的系数为第三奇数采样分量的部分或全部,近似子带PN‑t中的偶数行的
系数或偶数列的系数为第三偶数采样分量的部分或全部。
[0241] 在此需要说明的是,3N+1子带中的近似子带是在对待编码图像进行第N次小波变换得到的,该近似子带可记为PN,同时得到的3个细节子带,分别可记为细节子带IN1、细节子
带IN2和细节子带IN3,其中,细节子带IN1和近似子带PN是同时得到的,进行第1次小波反变换
的对象是近似子带PN、细节子带IN1、细节子带IN2和细节子带IN3,进行第2次小波反变换的对
象是近似子带PN‑1、细节子带I(N‑1)1、细节子带I(N‑1)2和细节子带I(N‑1)3,进行第3次小波反变
换的对象是近似子带PN‑2、细节子带I(N‑2)1、细节子带I(N‑2)2和细节子带I(N‑2)3,以此类推,进
行第t次的小波反变换的对象是近似子带PN+1‑t、细节子带I(N+1‑t)1、细节子带I(N+1‑t)2和细节
子带I(N+1‑t)3。
[0242] 按照上述方法,进行N次小波反变换,进而可得到重建图像。其中,当t=N时,近似子带Pt‑1为重建图像。
[0243] 在此需要说明的是,t可以从0开始,最大值为N‑1。当t=N‑1时,近似子带Pt‑1为重建图像。
[0244] 在一个可能的实施例中,在根据小波变换模型对待编码图像进行小波变换和对重构的小波系数进行小波反变换之前,训练小波变换模型。
[0245] 参见图8,图8为本发明实施例提供的一种基于神经网络的小波变换的端到端训练框架示意图。具体地,训练小波变换模型具体过程包括:
[0246] 初始化小波变换模型;根据初始化后的小波变换模型对训练图像进行N次小波变换,得到3N+1个子带,具体过程可参见图2所示实施例的相关描述,在此不再叙述。根据初始
化后的小波变换模型依次对1,2,3,……,3N个子带进行小波反变换,得到3N张重建图像,具
体过程可参见图6所示实施例的相关描述在此不再叙述。进行小波反变换时选择子带的顺
序参见图9,图9是以N=2进行展示的。根据训练图像和3N张重建图像计算损失值,该损失值
其中,Ri为3N张重建图像中的第i张,I为训练图像。根据该损失值更新
小波变换模型中的参数,得到新的小波变换模型。
[0247] 再利用新的小波变换模型进行上述描述的方法,得到新的3N张重建图像,然后根据训练图像和该新的3N张重建图像再次计算损失值,若损失值的波动区间足够小,或者损
失值趋近于某一数值,则确定小波变换模型训练完毕,该预设范围;否则继续按照上述方法
更新小波变换模型中的参数,再按照上述方法获取损失值,继续进行训练。
[0248] 由于上述N次小波变换的小波变换模型的参数一致,使得这样训练得到的小波变换模型是与分辨率无关的,可以提供任意次数的分解。
[0249] 在一个实施例中,N为先验值,比如N=3。
[0250] 在此需要说明的是,由于在子带编码(即后续的量化和熵编码)过程中,将按照传统的小波变换评估各个子带的重要性,认为每个子带的重要性相同,为了平衡基于深度神
经网络进行小波变换得到的各个子带的能量,根据预设算法得到3N+1子带的增益系数,在
子带编码过程中,将经过小波变换后得到小波系数乘以对应的增益系数,得到最终的小波
系数;在解码过程中将解码重构的小波系数除以对应的增益系数,再进行小波反变换,得到
重建图像。
[0251] 下面具体介绍获取3N+1子带的增益系数的预设算法:
[0252] 3N+1子带可用c={c1,c2,c3,......,c3N+1}表示,∈表示一个常数。
[0253] 输入:x表示训练图像集;Le表示期望误差;
[0254] 输出:3N+1个子带的增益系数{g1,g2,g3,...,g3N+1};
[0255] 以下为预设算法主体:
[0256] 当t=1,2,3,…,3N+1:
[0257] 初始化gb=0,g=1,L=∞;
[0258] 当 或者
[0259] 生成均值为0,方差为δ2的高斯噪声n;
[0260] c=iWaveFwd(x);
[0261] ct=(ct×g+n)/g;
[0262]
[0263]
[0264] 如果
[0265] gb=g;
[0266]
[0267] 如果
[0268] g=(gb+g)/2;
[0269] gt=g
[0270] 其中,iWaveFwd表示基于深度神经网络的小波变换,iWaveinv表示基于深度神经网络的小波反变换。
[0271] 可选地,对于8比特图像,Le=1,∈=0.2,δ2=1。
[0272] 在应用于图像编码时,按照上述方法可以计算得到各个可用N值下的增益系数,并内置于编、解码器中。
[0273] 可以看出,在本申请实施例的方案中,在基于传统小波变换的图像编解码方法中,使用基于深度神经网络得到的小波变换模型进行小波变换和小波反变换。由于基于深度神
经网络的小波变换模型是使用大量自然图像通过训练方法优化得到,因此可以比传统的小
波变换提供更加紧致的变换域表达,从而显著提高编解码性能。在借助GPU实现该小波变换
模型的功能时,具有与传统的小波变换相当的速度,与自适应方向小波通过多次编码尝试
选择最优的方向参数相比,具有时间复杂度低的优势,解决了自然图像特征的多样性和复
杂性与人工设计的小波基函数的理想性和简单性之间的矛盾。
[0274] 在此介绍另一种基于小波变换的图像编码过程,如图10所示,对待编码图像进行基于深度神经网络的小波变换,以得到小波系数;对该小波系数进行量化处理,得到量化后
的小波系数;对量化后的小波系数进行基于深度神经网络的熵编码,得到压缩码流。具体过
程参见图11,图11为本申请实施例提供的另一种基于小波变换的图像编码方法的流程示意
图。如图11所示,该方法包括:
[0275] S1101、根据小波变换模型对待编码图像进行N次小波变换,以得到小波系数。
[0276] 其中,小波变换模型是基于CNN实现的,该小波变换模型包括更新模型和预测模型,且更新模型和预测模型中的参数不相同。
[0277] 在一个可行的实施例中,如图12所示,小波变换模型包括预测模型和更新模型,根据小波变换模型对待编码图像进行N次小波变换,以得到小波系数,包括:
[0278] 在进行第i次小波变换时,对子带X进行分解,得到奇数采样分量和偶数采样分量,其中,奇数采样分量由子带X中的奇数行的系数或奇数列系数构成的,偶数采样分量由子带
X的偶数行的系数或偶数列的系数构成的。根据预测模型使用奇数采样分量进行预测,得到
预测分量,预测分量的分辨率与奇数采样分量的分辨率一致;根据预测分量和偶数采样分
量获取待中间细节分量,中间细节分量中每个系数为偶数采样分量与预测分量中对应位置
的系数之差的b倍。根据更新模型使用中间细节分量进行更新操作,得到更新分量,该更新
分量的分辨率与中间细节分量的分辨率一致。根据奇数采样分量和更新分量获取中间近似
分量,中间近似分量中的每个系数为奇数采样分量和更新分量对应位置的系数之和的a倍;
[0279] 同理,按照对子带X的处理方法,对中间近似分量进行处理,得到近似子带和细节子带Ii1,对中间细节图像进行处理得到细节子带Ii2和细节子带Ii3;
[0280] 其中,当i等于1时,子带X为待编码图像,当i大于1时,子带X为近似子带Pi‑1,该近似子带Pi‑1为进行第i‑1次小波变换后得到的近似子带,小波系数包括进行N次小波变换后
得到的细节子带和近似子带,共3N+1个子带。
[0281] 在另一个可能是实施例中,如图13所示,小波变换模型包括预测模型和更新模型,根据小波变换模型对待编码图像进行i次小波变换,具体包括:
[0282] 对子带X进行分解,以得到奇数采样分量和偶数采样分量,奇数采样分量由子带X中的奇数行的系数或奇数列系数构成的,偶数采样分量由子带X的偶数行的系数或偶数列
的系数构成的;根据预测模型使用奇数采样分量进行预测,以得到第一预测分量;根据偶数
采样分量和第一预测分量获取第一辅助更新分量,该第一辅助更新分量中每个系数为偶数
采样分量和第一预测分量中对应位置系数之差;根据更新模型使用第一辅助更新分量进行
更新,以得到第一更新分量;根据第一更新分量和奇数采样分量获取第一辅助预测分量,该
第一辅助预测分量的每个系数为第一更新分量和奇数采样分量对应位置的系数之和;根据
预测模型使用第一辅助预测分量进行预测操作,以得到第二预测分量,根据第一辅助更新
分量和第二预测分量获取第二辅助更新分量,第二辅助更新分量中每个系数为第一辅助更
新分量和第二预测分量对应位置的系数之差,根据第二辅助更新分量获取中间细节分量,
中间细节分量中每个系数为第二辅助更新分量中对应位置的系数的b倍;根据更新模型使
用第二辅助更新分量获取第二更新分量;根据第一更新分量和第二更新分量获取中间近似
分量,中间近似分量中每个系数为第一更新分量和第二更新分量中对应位置系数之和的a
倍。其中,a和b为缩放参数,为小波变换模型参数的一部分。
[0283] 按照上述对子带X进行处理的过程,同样对中间近似分量进行处理,得到近似子带Pi和细节子带Ii1,对中间细节分量进行处理得到细节子带Ii2和细节子带Ii3。
[0284] 其中,当i等于1时,子带X为待编码图像,当i大于1时,子带X为近似子带Pi‑1,该近似子带Pi‑1为进行第i‑1次小波变换后得到的近似子带,小波系数包括进行N次小波变换后
得到的细节子带和近似子带,共3N+1个子带。
[0285] 在此需要说明的是,i可以从0开始,此时i的最大值为N‑1,比如当i等于0时,子带X为待编码图像。
[0286] 在此需要指出的是,由图13和图12可知,图13所示小波变换过程比图12多一次预测和更新过程。可以看成,图12有一次预测和更新过程,图13有两次预测和更新过程。当然
更新和预测的次数还可以是其他值,本申请对预测和更新的次数不作限定。
[0287] 图14给出典型的预测模型的结构图,该结构图也可看成更新模型的结构图。图14中,“3×3×1”表示当前卷积层使用尺寸为3×3的卷积核,并经过当前卷积层后生成1个特
征图,不使用激活函数;“tanh/3×3×16”表示当前卷积层使用尺寸为3×3的卷积核,并经
过当前卷积层后生成16个特征图,并将tanh作为激活函数。
[0288] 在此需要说明的是,在进行N次小波变换过程中,每次小波变换采用的预测模型的参数可以不相同,采用的预测模型的参数也可以不相同。
[0289] 在一个示例中,小波变换模型的参数(包括预测模型的参数和更新模型的参数及缩放系数)内置于编、解码器中,不需要传输。
[0290] S1102、对小波系数进行量化处理,得到量化后的小波系数。
[0291] 其中,量化后的小波系数可表示为: c为量化前的小波系数,QP为量化步长,[·]表示四舍五入取整。
[0292] 需要说明的是,该量化步长QP可在对小波变换模型和熵编码模型联合训练过程中得到。
[0293] S1103、根据熵编码模型对量化后小波系数进行熵编码,以得到压缩码流。
[0294] 其中,量化后小波系数包括3N+1个子带,该3N+1个子带包括1个近似子带和3N个细节子带。
[0295] 在一个可行的实施例中,根据熵编码模型对量化后的小波系数进行熵编码,以得到压缩码流,包括:
[0296] 根据熵编码模型对量化后的小波系数进行编码,以得到压缩码流,其中,熵编码模型是基于深度神经网络实现的。
[0297] 进一步地,根据熵编码模型对量化后的小波系数进行熵编码,以得到压缩码流,包括:
[0298] 将第s个子带输入到熵编码模型中计算得到待编码系数的累积概率分布函数的参数,待编码系数为第s个子带中的任一个系数,第s个子带为3N+1个子带中的任意一个子带;
根据待编码系数的累积概率分布函数分布的参数得到待编码系数的累积概率分布函数;根
据待编码系数及其累积概率分布函数获取待编码系数的概率分布;根据待编码系数的概率
分布,采用算术编码器对待编码系数进行熵编码,以得到待编码系数对应的码流,压缩码流
包括待编码系数对应的码流。
[0299] 在此需要指出的是,由于按照图9所示子带顺序对3N+1个子带进行编码的,第1个子带为近似子带,其他为细节子带,且近似子带和细节子带存在差异,因此对近似子带和细
节子带采样不同的编码方式,即对第1个子带和非第1个子带中系数的累积概率分布函数的
参数采用不同的方式获取。
[0300] 在一个可能的实施例中,当第s个子带为3N+1个子带中的第一个子带时,熵编码模型是基于逐像素卷积神经网络pixelCNN实现的,该熵编码模型包括M个卷积层,M为大于0的
整数,将第s个子带输入到熵编码模型中进行计算得到待编码系数的累积概率分布函数的
参数,包括:
[0301] 当M=1时,根据第1个卷积层对应的窗函数对第1个卷积层对应的卷积核进行加窗操作,得到第一加窗后的卷积核;根据第一加窗后的卷积核对第s个子带进行卷积操作,得
到待编码系数的累积概率分布函数的参数;当M大于1时,在进行第j个卷积层的运算时,根
据第j个卷积层对应的窗函数对第j个卷积层对应的卷积核进行加窗操作,得到第二加窗后
的卷积核;根据第二加窗后的卷积核对第j个卷积层的输入数据进行卷积操作,得到第j个
输出数据;
[0302] 其中,当j=1时,第j个卷积层的输入数据为第一个子带;当j大于1且不大于M时,第j个卷积层的输入数据为第j‑1个卷积层的输出数据,当j=M时,第j个输出数据包括待编
码系数的累积概率分布函数的参数。
[0303] 举例说明,假设熵编码模型如图15所示,该熵编码模型包括4个卷积层,其中,第1个卷积层“5×5×128/mask”表示当前卷积层使用尺寸为5×5的卷积核,并经过当前卷积层
后生成128个特征图,mask表示该层卷积需要进行加窗操作;第2个卷积层“3×3×128/
relu”表示当前卷积层使用尺寸为3×3的卷积核,并经过当前卷积层后生成128个特征图,
并将relu作为激活函数;第3个卷积层与第2个卷积层相同,“3×3×128/relu”表示当前卷
积层使用尺寸为3×3的卷积核,并经过当前卷积层后生成128个特征图,并将relu作为激活
函数;第4个卷积层3×3×58表示当前卷积层使用尺寸为3×3的卷积核,并经过当前卷积层
后生成58个特征图,不使用激活函数。
[0304] 在此需要说明的是,对于包含多个卷积层的熵编码模型,在计算待编码系数的累积概率分布函数的参数过程中,不仅对第1个卷积层对应的卷积核进行加窗操作,还可以对
熵编码模型中的任一个或多个卷积层对应的卷积核进行加窗操作。换句话说,在计算待编
码系数的累积概率分布函数的参数过程中,可以对熵编码模型中的任一个或多个卷积层对
应的卷积核进行加窗操作。
[0305] 在将第1个子带输入到如图15所示的熵编码模型中时,首先采用如图16中的a图所示的窗函数对第1个卷积层的卷积核(即5x5)进行加窗操作,以得到加窗后的卷积核,再根
据加窗后的卷积核对第1个子带进行卷积操作,得到128个特征图。然后再采用如图16中的b
图所示的窗函数对第2个卷积层的卷积核(即3x3)进行加窗操作,以得到加窗后的卷积核,
再根据加窗后的卷积核对第1个卷积层输出的128个特征图进行卷积操作,得到128个特征
图。由图16中的a图和b图可知,两个窗函数的中心值不相同。采用如图16中的b图所示的窗
函数对第3个卷积层的卷积核(即3x3)进行加窗操作,以得到加窗后的卷积核,再根据加窗
后的卷积核对第2个卷积层输出的128个特征图进行卷积操作,得到128个特征图。采用如图
16中的b图所示的窗函数对第4个卷积层的卷积核(即3x3)进行加窗操作,以得到加窗后的
卷积核,再根据加窗后的卷积核对第3个卷积层输出的128个特征图进行卷积操作,得到58
个特征图。该58个特征图构成待编码函数的累积概率分布函数的参数。
[0306] 下面举例说明对卷积层的卷积核进行加窗操作的目的。如图16所示,大的方框为当前编码的子带,子带内系数的编码顺序为从左到右,从上到下,当前卷积层的卷积核为
5x5,当前待编码的系数为图17中5x5方格中心位置的“X”,按照系数的编码顺序,位于“X”前
面的系数是已编码的系数,位于“X”后面的系数是未编码的系数,由于当前待编码系数的累
积概率分布函数的参数只能从已经编码的系数中推理得到,因此为了在进行卷积时只对已
编码的系数进行卷积操作,在进行卷积操作之前,采用窗函数对卷积核进行加窗操作。窗函
数的尺寸与卷积核的尺寸相同。
[0307] 图18所示一种卷积核加窗的原理示意图。如图18所示,卷积核与窗函数进行点乘,得到加窗后的卷积核。在加窗后的卷积核中,按照从左到右,从上到下的顺序,正中间位置
之前的数值保持不变,正中间位置之后的数值均置为0,相当于在使用加窗后的卷积核进行
卷积运算时,只使得位于“X”前面的系数是已编码的系数参与运算,位于“X”后面的系数是
未编码的系数不参与运算,进而保证解码逻辑的正确性。
[0308] 在此需要说明的是,在对第1个子带中的系数进行编码时,由于以某些系数为中心,尺寸与卷积核相同的区域存在空白部分,需要对空白部分进行填充,一般是填充“0”,然
后再按照上述方法获取该系数的累积概率分布函数的参数。
[0309] 在另一个可能的实施例中,当第s个子带不为3N+1个子带中的第一个子带时,熵编码模型是包括第一熵编码模型、第二熵编码模型和第三熵编码模型,第一熵编码模型和第
二熵编码模型基于pixelCNN实现的,第三熵编码模型是基于循环神经网络(recurrent 
neural network,RNN)实现的,第一熵编码模型包括T1个卷积层,第二熵编码模型包括T2个
卷积层,T1和T2均为大于0的整数,将s个子带输入熵编码模型中计算得到待编码系数的累
积概率分布函数的参数,包括:
[0310] 将第s‑1个子带输入到第三熵编码模型中进行计算,以得到第一输出结果;第一输出结果为第二熵编码模型的输入数据;第s个子带为第一熵编码模型的输入数据;
[0311] 当T1和T2均等于1时,根据卷积层C1和卷积层C2对第一输出结果和第s个子带进行融合操作,得到第二输出结果,该第二输出结果为待编码系数的累积概率分布函数的参数,
卷积层C1和卷积层C2分别为第一熵编码模型和第二熵编码模型中的卷积层;或者
[0312] 当T1大于1且T2等于1时,根据卷积层C1和卷积层C2对第一输出结果和第s个子带进行融合操作,得到第二输出结果,卷积层C1为第一熵编码模型中的第q个卷积层,卷积层
C2为第二熵编码模型中的卷积层;若q=T1,则第二输出结果为待编码系数的累积概率分布
函数的参数;若q大于0且小于T1,则第二输出结果为第一熵编码模型中的第q+1个卷积层的
输入数据;或者
[0313] 当T1和T2均大于1时,根据卷积层C1和卷积层C2对第一输出结果和第s个子带进行融合操作,得到第二输出结果;卷积层C1为第一熵编码模型中的第q1个卷积层,卷积层C2为
第二熵编码模型中的第q2个卷积层;若q1=T1且q2=T2,则第二输出结果为待编码系数的
累积概率分布函数的参数,若q1大于0且小于T1,q2大于0且小于T2,则第二输出结果为第一
熵编码模型中的第q1+1个卷积层的输入数据,卷积层C2的输出结果为第二熵编码模型中的
第q2+1个卷积层的输入数据。
[0314] 具体地,当T1和T2均等于1,即第一熵编码模型和第二熵编码模型均包括1个卷积层,如图19(a)所示,第一熵编码模型的输入数据第s个子带,第二熵编码模型的输入数据为
第三熵编码模型(即RNN)的输出数据(即第一输出结果),根据第一熵编码模型中的卷积层
(即卷积层C1)和第二熵编码模型中的卷积层(即卷积层C2)对第s个子带与第一输出数据进
行融合操作,得到第二输出结果。在一个示例中,第一熵编码模型中的卷积层为“5×5×
128/mask”,第二熵编码模型中的卷积层为“5×5×128”。
[0315] 当T1大于1且T2等于1,即第一熵编码模型包括多个卷积层,第二熵编码模型包括1个卷积层。在一个可能的实施例中,可基于第一熵编码模型中任一个卷积层与第二熵编码
模型中卷积层进行融合操作,即卷积层C1为第一熵编码模型中任一个卷积层,比如基于第
一熵编码模型中第q个卷积层与第二熵编码模型中卷积层进行融合操作,当q=T1时,该第q
个卷积层的输入数据是第q‑1个卷积层的输出数据,第二输出结果为待编码系数的累积概
率分布函数的参数,当q小于T1且大于1时,该第q个卷积层的输入数据是第q‑1个卷积层的
输出数据,第q个卷积层的输出数据为第q+1个卷积层的输入数据,当q=1时,第q个卷积层
的输入数据为第s个子带,第q个卷积层的输出数据为第q+1个卷积层的输入数据。如图19
(b)所示,第一熵编码模型包括4个卷积层,第二熵编码模型包括1个卷积层,基于第一熵编
码模型的第1个卷积层和第二熵编码模型中的卷积层进行融合操作的。
[0316] 当T1和T2均大于1,即第一熵编码模型和第二熵编码模型均包括多个卷积层时,第一熵编码模型和第二熵编码模型中存在多个卷积层进行融合操作。如图19(c)所示,第一熵
编码模型和第二熵编码模型均包括4个卷积层,其中,基于第一熵编码模型中的第2个卷积
层和第二熵编码模型中的第3个卷积层进行融合操作,基于第一熵编码模型中的第4个卷积
层和第二熵编码模型中的第4个卷积层进行融合操作。第一熵编码模型中的第2个卷积层的
输入数据为第s个子带经过第1个卷积层进行卷积处理后得到的数据,第二熵编码模型中的
第3个卷积层的输入数据为第一输出结果经过第1卷积层和第2个卷积层进行卷积处理后得
到的数据;第一熵编码模型中的第4个卷积层的输入数据为第3个卷积层的输出数据,第二
熵编码模型中的第4个卷积层的输入数据为第3个卷积层的输出数据,第二输出结果为基于
第一熵编码模型中的第4个卷积层和第二熵编码模型中的第4个卷积层进行融合操作后得
到的数据。
[0317] 在此需要说明的是,编码过程中融合操是由第一熵编码模型实现的。
[0318] 在此需要说明的是,本申请所使用的RNN由三层长短期记忆(long short term memory,LSTM)构成。该三层LSTM的参数如下表1所示,在此不做具体叙述。当然本申请所使
用的RNN还可以是其他形式的RNN,本申请不做具体限定。
[0319] LSTM layer 输入卷积参数 状态卷积参数1 3×3×1×32 3×3×32×32
2 3×3×32×32 3×3×32×32
3 3×3×32×1 3×3×1×1
[0320] 表1
[0321] 在一个可行的实施例中,当第s‑1个子带的分辨率与第s个子带的分辨率不相同时,将第s‑1个子带输入到第三熵编码模型中进行计算,以得到第一输出结果,包括:
[0322] 根据第三熵编码模型第三熵编码模型的状态变量对第s‑1个子带进行卷积运算,以得到卷积结果;对该卷积结果进行上采样,以得到第一输出结果,第一输出结果的分辨率
与第s个子带的分辨率相同;同时对卷积之后的状态变量进行上采样,以以得到采样后的状
态变量,采样后的状态变量与第s个子带的分辨率相同。
[0323] 举例说明,如图9所示,在根据第4个子带对第5个子带进行编码时,由于第4个子带和第5个子带的分辨率不相同,因此在获取第一输出结果时,需要对第三熵编码模型的输出
进行上采样,使得第一输出结果的分辨率与第5个子带的分辨率一致;同时对卷积操作之后
第三熵编码模型的状态变量进行上采样,以得到采样后的状态变量,所述采样后的状态变
量与第5个子带的分辨率。如图20所示,再根据第三熵编码模型对第s‑1个子带进行卷积操
作后,对该卷积结果进行上采样,以得到采样后的卷积结果,该采样后的卷积结果即为第一
输出结果,该第一输出结果的分辨率与第s个子带的分辨率相同;同时对卷积之后的状态变
量进行上采样,以得到采样后的状态变量,采样后的状态变量与第s个子带的分辨率相同。
[0324] 在一个可行的实施例中,根据卷积层C1和卷积层C2对第一输出结果和第s个子带进行融合操作,包括:
[0325] 根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,第一卷积核为卷积层C1对应的卷积核;根据加窗后的第一卷积核对第一输入数据进行卷积操
作,以得到第一卷积结果;当卷积层C1为第一熵编码模型中的第1个卷积层时,第一输入数
据为第s个子带,当卷积层C1为第一熵编码模型中的非第1个卷积层时,第一输入数据是对
第s个子带进行卷积操作得到的,将第二输入数据输入到第二子卷积层进行卷积操作,以得
到第二卷积结果;当卷积层C2为第二熵编码模型中的第1个卷积层时,第二输入数据为第一
输出结果,当卷积层C2为第二熵编码模型中的非第1个卷积层时,第二输入数据是对第一输
出结果进行卷积操作得到的;对第一卷积结果和第二卷积结果进行相加或堆叠操作,以得
到第二输出结果。
[0326] 在一个可行的实施例中,根据卷积层C1和卷积层C2对第一输出结果和第s个子带进行融合操作,包括:
[0327] 根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,该第一卷积核为卷积层C1对应的卷积核;根据第二窗函数对第二卷积核进行加窗操作,以得到
加窗后的第二卷积核,第二卷积核为卷积层C2对应的卷积核,第一窗函数和第二窗函数互
补;根据加窗后的第一卷积核对第s个子带进行卷积操作,以得到第一卷积结果;当卷积层
C1为第一熵编码模型中的第1个卷积层时,第一输入数据为第s个子带,当卷积层C1为第一
熵编码模型中的非第1个卷积层时,第一输入数据是对第s个子带进行卷积操作得到的;根
据加窗后的第二卷积核对第一输出结果进行卷积操作,以得到第二卷积结果;当卷积层C2
为第二熵编码模型中的第1个卷积层时,第二输入数据为第一输出结果,当卷积层C2为第二
熵编码模型中的非第1个卷积层时,第二输入数据是对第一输出结果进行卷积操作得到的;
对第一卷积结果和第二卷积结果进行相加或堆叠操作,以得到第二输出结果。
[0328] 如图21所示,第一窗函数和第二窗函数互补。
[0329] 按照上述方法获取待编码系数的累积概率分布函数的参数,该参数记为x。在待编码系数的累积概率分布函数的参数为58维时,x表示的累积概率分布函数的参数可表示为:
[0330] h=softplus(x[0:33])
[0331] b=x[33:46]
[0332] a=tanh(x[46:58])
[0333] 将待编码系数记为y,则根据累积概率分布函数的参数计算待编码系数y的累计概率分布函数的具体过程如下:
[0334] y=matmul(reshape(h[0:3],[3,1]),y)+reshape(b[0:3],[3,1])
[0335] y=y+reshape(a[0:3],[3,1])·tanh(y)
[0336] y=matmul(reshape(h[3:12],[3,3]),y)+reshape(b[3:6],[3,1])
[0337] y=y+reshape(a[3:6],[3,1])·tanh(y)
[0338] y=matmul(reshape(h[12:21],[3,3]),y)+reshape(b[6:9],[3,1])
[0339] y=y+reshape(a[6:9],[3,1])·tanh(y)
[0340] y=matmul(reshape(h[21:30],[3,3]),y)+reshape(b[9:12],[3,1])
[0341] y=y+reshape(a[9:12],[3,1])·tanh(y)
[0342] y=matmul(reshape(h[30:33],[1,3]),y)+b[12:13]
[0343] y=sigmoid(y)
[0344] 将以上求解过程记为cdf(y),即待编码系数的累积概率分布函数为cdf(y)。
[0345] 下面描述如何通过cdf(y)求解y的概率分布。
[0346] y的取值范围是已知的,其取值范围可表示为[ymin,ymax,QP],其中ymin表示y的最小值,ymax表示为y的最大值,QP为量化步长,表示y在ymin与ymax之间每隔QP进行取值,ymin与ymax
预先在训练过程中进行限制以保证。若y=y0,则其对应的概率取值如下给出。
[0347]
[0348] 其他取值的概率可按照相同的方法计算,进而可得到待编码系数y的概率分布。再根据待编码系数y的概率分布,采用算术编码器对待编码系数y进行熵编码,以得到待编码
系数的码流。
[0349] 按照上述方法,可获取每个子带中每个系数的累积概率分布函数的参数,进而获取每个系数的概率分布函数,进而得到每个系数的概率分布,再根据每个系数的概率分布,
采用算术编码器对每个系数进行熵编码,以得到压缩码流。
[0350] 在此需要说明的是,熵编码模型不限定通过上述实施例所描述的深度神经网络实现,还可以是通过其他的深度神经网络实现的。
[0351] 下面介绍另一种基于小波变换的图像解码过程,如图22所示,对压缩码流进行基于深度神网络的熵解码,得到重构的小波系数,再对重构后的小波系数进行反量化,得到反
量化后的小波系数;对反量化后的小波系数进行基于深度神经网络的小波反变换,以得到
重建图像。具体参见图23,图23为本申请实施例提供的另一种基于小波变换的图像解码方
法的流程示意图。如图23所示,该方法包括:
[0352] S2301、根据熵解码模型对压缩码流进行熵解码,以得到重构的小波系数,其中,熵解码模型是基于深度神经网络实现的。
[0353] 在一个可行的实施例中,压缩码流包括3N+1个子带的码流,重构的小波系数包括3N+1个重构子带,根据熵解码模型对压缩码流进行熵解码,得到重构的小波系数,包括:
[0354] 将第s个子带对应的重构子带输入到熵解码模型中计算得到待解码系数的累积概率分布函数的参数,待解码系数的码流为第s个子带的码流的一部分,第s个子带为所述3N+
1子带中的任一个;根据待解码系数的累积概率分布函数的参数获取待解码系数的累积概
率分布函数;根据待解码系数及其累积概率分布函数获取待解码系数的概率分布;根据待
解码系数的概率分布,采用算术解码器对待解码系数的码流进行熵解码,以得到待解码系
数,3N+1个重构子带包括待解码系数。
[0355] 在此需要指出的是,由于按照图9所示子带顺序对3N+1个子带进行解码的,第1个子带为近似子带,其他为细节子带,且近似子带和细节子带存在差异,因此对近似子带和细
节子带采样不同的解码方式,即对第1个子带和非第1个子带中系数的累积概率分布函数的
参数采用不同的方式获取。
[0356] 在此需要说明的是,在对子带的码流进行熵解码时,首先创建一个分辨率与该子带相同的重构子带,该重构子带中的系数均置为0。每解码该子带中的一个系数,就将该重
建子带对应位置的系数更新为该解码的系数;为了解码下一个系数,需要把已更新的重建
子带输入到熵解码模型中,进而实现解码该系数之后的下一个系数。子带内系数的解码顺
序是从左到右,从上到下的。
[0357] 在一个可行的实施例中,当第s个子带为3N+1个子带中的第一个子带时,熵解码模型是基于pixelCNN实现的,熵解码模型包括M个卷积层,M为大于0的整数,将第s个子带对应
的重构子带输入到熵解码模型中计算得到待解码系数的累积概率分布函数的参数,包括:
[0358] 当M=1时,根据第1个卷积层对应的窗函数对第1个卷积层对应的卷积核进行加窗操作,得到第一加窗后的卷积核;根据第一加窗后的卷积核对第s个子带对应的重构子带进
行卷积操作,得到待解码系数的累积概率分布函数的参数;当M大于1时,在进行第j个卷积
层的运算时,根据第j个卷积层对应的窗函数对第j个卷积层对应的卷积核进行加窗操作,
得到到第二加窗后的卷积核;根据到第二加窗后的卷积核对第j个卷积层的输入数据进行
卷积操作,得到第j个输出数据;其中,当j=1时,第j个卷积层的输入数据为第1个子带对应
的重构子带;当j不大于M且大于1时,第j个卷积层的输入数据为第j‑1个卷积层的输出数
据;当j=M时,第j个输出数据包括待解码系数的累积概率分布函数的参数。
[0359] 在一个可行的实施例中,当第s个子带不为3N+1个子带中的第一个子带时,熵解码模型是包括第一熵解码模型、第二熵解码模型和第三熵解码模型,第一熵解码模型和第三
熵解码模型均是基于逐像素卷积神经网络实现的,第三熵解码模型是基于循环神经网络
RNN实现的,第一熵解码模型包括T1个卷积层,第二熵解码模型包括T2卷积层,T1和T2均为
大于0的整数,将第s个子带对应的重构子带输入到熵解码模型中计算得到待解码系数的累
积概率分布函数的参数,包括:
[0360] 将第s‑1个子带对应的重构子带输入到第三熵解码模型中进行计算,以得到第一输出结果,s‑1个子带对应的重构子带是对第s‑1个子带的码流进行熵解码得到的,第一输
出结果为第二熵解码模型的输入数据;第s个子带对应的重构子带为第一熵解码模型的输
入数据;
[0361] 当T1和T2均等于1时,根据卷积层C1和卷积层C2对第一输出结果和第s个子带对应的重构子带进行融合操作,得到第二输出结果,第二输出结果为待解码系数的累积概率分
布函数的参数,卷积层C1和卷积层C2分别为第一熵解码模型和第二熵解码模型中的卷积
层;或者
[0362] 当T1大于1且T2等于1时,根据卷积层C1和卷积层C2对第一输出结果和第s个子带对应的重构子带进行融合操作,得到第二输出结果,卷积层C1为第一熵解码模型中的第q个
卷积层,卷积层C2为第二熵解码模型中的卷积层;若q=T1,则第二输出结果为待解码系数
的累积概率分布函数的参数;若q大于0且小于T1,则第二输出结果为第一熵解码模型中的
第q+1个卷积层的输入数据;或者
[0363] 当T1和T2均大于1时,根据卷积层C1和卷积层C2对第一输出结果和第s个子带对应的重构子带进行融合操作,得到第二输出结果;卷积层C1为第一熵解码模型中的第q1个卷
积层,卷积层C2为第二熵解码模型中的第q2个卷积层;若q1=T1且q2=T2,则第二输出结果
为待解码系数的累积概率分布函数的参数,若q1大于0且小于T1,q2大于0且小于T2,则第二
输出结果为第一熵解码模型中的第q1+1个卷积层的输入数据,卷积层C2的输出结果为第二
熵解码模型中的第q2+1个卷积层的输入数据。
[0364] 在此需要说明的是,将第s个子带对应的重构子带输入到熵解码模型中计算得到待解码系数的累积概率分布函数的参数的具体过程可参见步骤S1103中关于将第s个子带
输入到熵解码模型中进行计算得到待解码系数的累积概率分布函数的参数的相关描述,在
此不再具体叙述。
[0365] 在一个可行的实施例中,当第s‑1个子带对应的重构子带的分辨率与第s个子带对应的重构子带的分辨率不相同时,将第s‑1个子带对应的重构子带输入到第三熵解码模型
中进行计算,以得到第一输出结果,该方法还包括:
[0366] 根据第三熵解码模型第三熵编码模型的状态变量对第s‑1个子带对应的重构子带进行卷积运算,得到卷积结果;对卷积结果进行上采样,以得到第一输出结果,第一输出结
果的分辨率与第s个子带对应的重构子带的分辨率相同;同时对卷积之后的状态变量进行
上第三熵解码模型采样,以得到采样后的状态变量,该采样后的状态变量与第s个子带的分
辨率相同。
[0367] 在此需要说明的是,将第s‑1个子带对应的重构子带输入到第三熵解码模型中进行计算,以得到第一输出结果的具体过程可参见步骤S1103的相关描述,在此不再叙述。
[0368] 在一个可行的实施例中,根据卷积层C1和卷积层C2对第一输出结果和第s个子带对应的重构子带进行融合操作,以得到第二输出结果,包括:
[0369] 根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,该第一卷积核为卷积层C1对应的卷积核;根据加窗后的第一卷积核对第一输入数据进行卷积操
作,以得到第一卷积结果;当卷积层C1为第一熵解码模型中的第1个卷积层时,第一输入数
据为第s个子带对应的重构子带,当卷积层C1为第一熵解码模型中的非第1个卷积层时,第
一输入数据是对第s个子带对应的重构子带进行卷积操作得到的;将第二输入数据输入到
第二子卷积层进行卷积操作,以得到第二卷积结果;当卷积层C2为第二解编码模型中的第1
个卷积层时,第二输入数据为第一输出结果,当卷积层C2为第二熵解码模型中的非第1个卷
积层时,第二输入数据是对第一输出结果进行卷积操作得到的;对第一卷积结果和第二卷
积结果进行相加或堆叠操作,以得到第二输出结果。
[0370] 在一个可行的实施例中,根据卷积层C1和卷积层C2对第一输出结果和第s个子带对应的重构子带进行融合操作,以得到第二输出结果,包括:
[0371] 根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,该第一卷积核为卷积层C1对应的卷积核;根据第二窗函数对第二卷积核进行加窗操作,以得到
加窗后的第二卷积核,第二卷积核为卷积层C2对应的卷积核,第一窗函数和第二窗函数互
补;根据加窗后的第一卷积核对第一输入数据进行卷积操作,以得到第一卷积结果;当卷积
层C1为第一熵解码模型中的第1个卷积层时,第一输入数据为第s个子带对应的重构子带,
当卷积层C1为第一熵解码模型中的非第1个卷积层时,第一输入数据是对第s个子带对应的
重构子带进行卷积操作得到的;根据加窗后的第二卷积核对第二输入数据进行卷积操作,
以得到第二卷积结果;当卷积层C2为第二解编码模型中的第1个卷积层时,第二输入数据为
第一输出结果,当卷积层C2为第二熵解码模型中的非第1个卷积层时,第二输入数据是对第
一输出结果进行卷积操作得到的;对第一卷积结果和第二卷积结果进行相加或堆叠操作,
以得到第二输出结果。
[0372] 在此需要说明的是,根据卷积层C1和卷积层C2对第一输出结果和第s个子带对应的重构子带进行融合操作的具体过程可参见步骤S1103的相关描述,在此不再叙述。
[0373] S2302、对重构的小波系数进行反量化,以得到反量化后的小波系数。
[0374] 其中,可将熵解码得到的小波系数(即重构的小波系数)记为 反量化后的小波系数记为 反量化过程可以表示如下:
[0375]
[0376] S2303、根据小波变换模型对反量化后的小波系数进行N次小波反变换,以得到重建图像,N为大于0的整数。
[0377] 其中,小波变换模型是基于CNN实现的。
[0378] 具体地,反量化后的小波系数包括3N+1子带,该3N+1个子带包括1个近似子带和3N个细节子带,根据小波变换模型对反量化后的小波系数进行N次小波反变换,以得到重建图
像,包括:
[0379] 在进行第t次小波反变换时,对近似子带PN+1‑t和细节子带I(N+1‑t)1进行更新和预测,得到第一处理子带和第二处理子带,根据第一处理子带和第二处理子带获取中间近似
分量,中间近似分量的奇数列的系数或奇数行的系数来自所述第一处理子带,中间近似分
量的偶数列的系数或偶数行的系数来自第二处理子带;对细节子带I(N+1‑t)2和细节子带
I(N+1‑t)3进行更新和预测,得到第三处理子带和第四处理子带,根据第三处理子带和第四处
理子带获取中间细节分量,中间细节分量的奇数列的系数或偶数行的系数来自第三处理子
带,中间细节分量的偶数列的系数或偶数行的系数来自第四处理子带;对中间细节分量和
中间近似分量进行更新和预测,得到第五处理子带和第六处理子带,根据第五处理子带和
第六处理子带获取近似子带Pt‑1,近似子带Pt‑1的奇数行的系数或奇数列的系数来自第五处
理子带,近似子带Pt‑1的偶数行的系数或偶数列的系数来自第六处理子带;
[0380] 其中,细节子带I(N+1‑t)1、细节子带(N+1‑t)2和细节子带I(N+1‑t)3的分辨率与近似子带PN+1‑t的分辨率相同;当第t次小波反变换为最后一次小波变换时,近似子带Pt‑1为重建图像。
[0381] 具体地,小波变换模型包括更新模型和预测模型,如图24所示,在进行第t次小波反变换时,根据近似子带PN+1‑t获取第一缩放分量,该缩放第一分量中的每个系数为该近似
子带PN+1‑t对应位置的系数的1/a,根据细节子带I(N+1‑t)1获取第二缩放分量,该第二缩放分
中的每个系数为该细节子带对应位置的系数的1/b,根据更新模型使用第二缩放分量进行
更新,得到更新分量;根据更新分量和第一缩放分量获取第一处理分量(即奇数采样分量),
该第一处理分量的每个系数为第一缩放分量和更新分量中对应位置的系数之差;根据预测
模型使用第一处理分量进行预测,以得到预测分量;根据第二缩放分量和预测分量获取第
二处理分量(即偶数采样分量),第二处理分量中的每个系数为第二缩放分量和预测分量中
对应位置的系数之和;根据第一处理分量和第二处理分量获取中间近似分量,中间近似分
量的奇数行的系数或奇数列的系数来自第一处理分量,中间近似分量的偶数行的系数或偶
数列系数来自第二处理分量。换言之,中间近似分量的奇数行的系数或奇数列的系数来自
第一处理分量的部分或全部,中间近似分量的偶数行的系数或偶数列系数来自第二处理分
量的部分或全部。
[0382] 按照上述方法,对细节子带I(N+1‑t)2和细节子带I(N+1‑t)3进行更新和预测,以得到第三处理分量和第四处理分量,根据第三处理分量和第四处理分量获取中间细节分量,中间
细节分量的奇数行的系数或奇数列的系数来自第三处理分量,中间细节分量的偶数行的系
数或偶数列的系数来自第四处理分量。换言之,中间细节分量的奇数行的系数或奇数列的
系数为第三处理分量的部分或全部,中间细节分量的偶数行的系数或偶数列的系数为第四
处理分量的部分或全部。
[0383] 按照上述方法,对中间近似分量和中间细节分量进行更新和预测,以得到第五处理分量和第六处理分量,根据第五处理分量和第六处理分量获取近似子带PN‑t,近似子带
PN‑t的奇数列的系数或奇数行的系数来自第五处理分量,近似子带PN‑t的偶数列的系数或偶
数行的系数来自第六处理分量。换言之,近似子带PN‑t的奇数列的系数或奇数行的系数位第
五处理分量的部分或全部。,近似子带PN‑t的偶数列的系数或偶数行的系数为第六处理分量
的部分或全部。
[0384] 在另一个具体的实施例中,小波变换模型包括更新模型和预测模型,如图25所示,在进行第t次小波反变换时,根据近似子带PN+1‑t获取第一缩放分量,根据细节子带I(N+1‑t)1
获取第二缩放分量,其中,第一缩放分量中的每个系数为该近似子带PN+1‑t对应位置的系数
的1/a,第二缩放分量中每个系数为该细节子带I(N+1‑t)1对应位置的系数的1/b,根据更新模
型使用第二缩放分量进行更新,得到第一更新分量;根据第一更新分量和第一缩放分量获
取辅助预测分量,该辅助预测分量的每个系数为第一缩放分量和第一更新分量中对应位置
的系数之差;根据预测模型使用辅助预测分量进行预测,以得到第一预测分量;根据第二缩
放分量和第一预测分量获取辅助更新分量,辅助更新分量中的每个系数为第二缩放分量和
第一预测分量中对应位置的系数之和;根据更新模型使用辅助更新分量进行更新,以得到
第二更新分量,根据辅助预测分量和第二更新分量获取第一处理分量(即奇数采样分量),
该第一处理分量中的每个系数为第一预测分量和第二更新分量中对应位置的系数之差,根
据预测模型使用第一处理分量进行预测,以得到第二预测分量;根据第二预测分量和辅助
更新分量获取第二处理分量(即偶数采样分量),该第二处理分量中每个系数为第二预测分
量和辅助更新分量中对应位置的系数之和。
[0385] 根据第一处理分量和第二处理分量获取中间近似分量,中间近似分量的奇数行的系数或奇数列的系数来自第一处理分量,中间近似分量的偶数行的系数或偶数列系数来自
第二处理分量。换言之,中间近似分量的奇数行的系数或奇数列的系数来自第一处理分量
的部分或全部,中间近似分量的偶数行的系数或偶数列系数来自第二处理分量的部分或全
部。
[0386] 按照上述方法,对细节子带I(N+1‑t)2和细节子带I(N+1‑t)3进行更新和预测,以得到第三处理分量和第四处理分量,根据第三处理分量和第四处理分量获取中间细节分量,中间
细节分量的奇数行的系数或奇数列的系数来自第三处理分量,中间细节分量的偶数行的系
数或偶数列的系数来自第四处理分量。换言之,中间细节分量的奇数行的系数或奇数列的
系数为第三处理分量的部分或全部,中间细节分量的偶数行的系数或偶数列的系数为第四
处理分量的部分或全部。
[0387] 按照上述方法,对中间近似分量和中间细节分量进行更新和预测,以得到第五处理分量和第六处理分量,根据第五处理分量和第六处理分量获取近似子带PN‑t,近似子带
PN‑t的奇数列的系数或奇数行的系数来自第五处理分量,近似子带PN‑t的偶数列的系数或偶
数行的系数来自第六处理分量。换言之,近似子带PN‑t的奇数列的系数或奇数行的系数位第
五处理分量的部分或全部。,近似子带PN‑t的偶数列的系数或偶数行的系数为第六处理分量
的部分或全部。
[0388] 其中,当t=N时,近似子带PN‑t即为重建图像。
[0389] 在此需要说明的是,t还可以从0开始,此时t的最大值为N‑1。比如当t=N‑1时,近似子带PN‑t即为重建图像。
[0390] 在此需要指出的是,由图24和图25可知,图25所示小波反变换过程比图24多一次预测和更新过程。可以看成,图24有一次预测和更新过程,图25有两次预测和更新过程。当
然更新和预测的次数还可以是其他值,本申请对预测和更新的次数不作限定。
[0391] 在此需要说明的是,在进行N次小波反变换过程中,每次小波反变换采用的预测模型的参数可以不相同,采用的预测模型的参数也可以不相同。
[0392] S2304、根据后处理模型对重建图像进行后处理,以得到处理后的重建图像。
[0393] 其中,后处理模型是基于深度神经网络实现的。
[0394] 基于深度神经网络的后处理的目的是提高重建图像的质量,具体是将重建图像输入基于深度神经网络实现的后处理模型中,后处理模型的输出就是处理后的重建图像,即
质量提高之后的图像。图26是一个典型的后处理模型的结构示意图。图26中,“3×3×16”表
示当前卷积层使用3×3的卷积核,生成16个特征图,不使用激活函数;“3×3×16/relu”表
示当前卷积层使用3×3的卷积核,生成16个特征图,之前使用relu激活函数。
[0395] 在此需要说明的是,图26所示的后处理模型仅仅是一个示例,后处理模型还可以基于其他形式的深度神经网络实现的。
[0396] 在此需要说明的是,在进行编码和解码过程中,熵编码模型和熵解码模型也是同一个模型。
[0397] 可以看出,在本申请的方案中,在基于传统小波变换的图像编解码方法中,使用基于深度神经网络得到的小波变换模型进行小波变换和小波反变换。由于基于深度神经网络
的小波变换模型是使用大量自然图像通过训练方法优化得到,因此可以比传统的小波变换
提供更加紧致的变换域表达,从而显著提高编解码性能。在借助GPU实现该小波变换模型的
功能时,具有与传统的小波变换相当的速度,与自适应方向小波通过多次编码尝试选择最
优的方向参数相比,具有时间复杂度低的优势,解决了自然图像特征的多样性和复杂性与
人工设计的小波基函数的理想性和简单性之间的矛盾。同时采样基于深度神经功网络的熵
编解码模型和后处理模型,进一步提高了编解码的性能。
[0398] 参见图27,图27为本发明实施例提供的一种基于小波变换的图像编码装置的结构示意图。如图27所示,该图像编码装置2700包括:
[0399] 变换模块2701,用于根据小波变换模型对待编码图像进行N次小波变换,以得到小波系数,小波变换模型是基于卷积神经网路CNN实现的,N为大于0的整数;
[0400] 量化模块2702,用于对小波系数进行量化,以得到量化后的小波系数;
[0401] 熵编码模块2703,用于对量化后的小波系数进行熵编码,得到压缩码流。
[0402] 在一个可行的实施例中,变换模块2701具体用于:
[0403] 在进行第i次小波变时,对子带X进行分解,以得到奇数采样分量和偶数采样分量,其中,奇数采样分量由子带X中奇数行系数或奇数列系数构成,偶数采样分量由子带X中偶
数行系数或偶数列系数构成,
[0404] 对偶数采样分量和奇数采样分量进行更新操作和预测操作,以得到中间近似分量和中间细节分量;
[0405] 对中间近似分量进行分解,以得到第一采样分量和第二采样分量;其中,第一采样分量由中间近似分量的奇数列的系数或奇数行的系数,第二采样分量由中间近似分量的偶
数列的系数或偶数行的系数构成;
[0406] 对中间细节分量进行分解,以得到第三采样分量和第四采样分量;其中,第三采样分量由中间细节分量的奇数行的系数或奇数行的系数构成,第四采样分量由中间细节分量
的偶数列的系数或偶数行的系数构成;
[0407] 对第一采样分量和第二采样分量进行更新操作和预测操作,以得到近似子带Pi和细节子带Ii1;对第三采样分量和第四采样分量进行更新操作和预测操作,以得到细节子带
Ii2和细节子带Ii3;
[0408] 其中,小波系数包括近似子带Pi、细节子带Ii1、细节子带Ii2和细节子带Ii3;当第i次小波变换为第一次小波变换时,子带X为待编码图像;当第i次小波变换不是第一次小波
变换时,子带X为近似子带Pi‑1,近似子带Pi‑1为进行i‑1次小波变换后得到的近似子带。
[0409] 在一个可行的实施例中,预测操作是基于CNN实现的;或者更新操作是基于CNN实现的;或者预测操作和更新操作均是基于CNN实现的。
[0410] 在一个可行的实施例中,熵编码模块2703具体用于:
[0411] 根据熵编码模型对量化后的小波系数进行编码,以得到压缩码流,熵编码模型是基于深度神经网络得到实现的。
[0412] 在一个可行的实施例中,小波系数包括3N+1个子带,熵编码模块2703具体用于:
[0413] 将第s个子带输入熵编码模型中计算得到待编码系数的累积概率分布函数的参数,待编码系数为第s个子带中任一个系数,第s个子带为3N+1个子带中的任意一个子带;根
据待编码系数的累积概率分布函数的参数得到累积概率分布函数;根据待编码系数及其累
积概率分布函数获取待编码系数的概率分布;根据待编码系数的概率分布,采用算术编码
器对待编码系数进行熵编码,以得到待编码系数对应的码流,压缩码流包括待编码系数对
应的码流。
[0414] 在一个可行的实施例中,当第s个子带为3N+1个子带中的第一个子带时,熵编码模型是基于逐像素卷积神经网络pixelCNN实现的,熵编码模型包括M个卷积层,M为大于0的整
数,在将s个子带输入熵编码模型中计算得到待编码系数的累积概率分布函数的参数的方
面,熵编码模块2703具体用于:
[0415] 当M=1时,根据第1个卷积层对应的窗函数对第1个卷积层对应的卷积核进行加窗操作,得到第一加窗后的卷积核;根据第一加窗后的卷积核对第s个子带进行卷积操作,得
到待编码系数的累积概率分布函数的参数;
[0416] 当M大于1时,在进行第j个卷积层的运算时,根据第j个卷积层对应的窗函数对第j个卷积层对应的卷积核进行加窗操作,得到第二加窗后的卷积核;根据第二加窗后的卷积
核对第j个卷积层的输入数据进行卷积操作,得到第j个输出数据;
[0417] 其中,当j=1时,第j个卷积层的输入数据为第一个子带;当j大于1且不大于M时,第j个卷积层的输入数据为第j‑1个卷积层的输出数据;当j=M时,第j个输出数据包括待编
码系数的累积概率分布函数的参数。
[0418] 在一个可行的实施例中,当第s个子带不为3N+1个子带中的第一个子带时,熵编码模型是包括第一熵编码模型、第二熵编码模型和第三熵编码模型,第一熵编码模型和第二
熵编码模型均是基于逐像素卷积神经网络实现的,第三熵编码模型是基于RNN实现的,第一
熵编码模型包括T1个卷积层,第二熵编码模型包括T2个卷积层,T1和T2均为大于0的整数,
在将s个子带输入熵编码模型中计算得到待编码系数的累积概率分布函数的参数的方面,
熵编码模块2703具体用于:
[0419] 将第s‑1个子带输入到第三熵编码模型中进行计算,以得到第一输出结果;该第一输出结果为第二熵编码模型的输入数据;第s个子带为第一熵编码模型的输入数据;
[0420] 当T1和T2均等于1时,根据卷积层C1和卷积层C2对第一输出结果和第s个子带进行融合操作,得到第二输出结果,第二输出结果为待编码系数的累积概率分布函数的参数,卷
积层C1和卷积层C2分别为第一熵编码模型和第二熵编码模型中的卷积层;或者
[0421] 当T1大于1且T2等于1时,根据卷积层C1和卷积层C2对第一输出结果和第s个子带进行融合操作,得到第二输出结果,卷积层C1为第一熵编码模型中的第q个卷积层,卷积层
C2为第二熵编码模型中的卷积层;若q=T1,则第二输出结果为待编码系数的累积概率分布
函数的参数;若q大于0且小于T1,则第二输出结果为第一熵编码模型中的第q+1个卷积层的
输入数据;或者
[0422] 当T1和T2均大于1时,根据卷积层C1和卷积层C2对第一输出结果和第s个子带进行融合操作,得到第二输出结果;卷积层C1为第一熵编码模型中的第q1个卷积层,卷积层C2为
第二熵编码模型中的第q2个卷积层;若q1=T1且q2=T2,则第二输出结果为待编码系数的
累积概率分布函数的参数,若q1大于0且小于T1,q2大于0且小于T2,则第二输出结果为第一
熵编码模型中的第q1+1个卷积层的输入数据,卷积层C2的输出结果为第二熵编码模型中的
第q2+1个卷积层的输入数据。
[0423] 在一个可行的实施例中,当第s‑1个子带的分辨率与第s个子带的分辨率不相同时,在将第s‑1个子带输入到第三熵编码模型中进行计算,以得到第一输出结果的方面,熵
编码模块2703具体用于:
[0424] 根据第三熵编码模型第三熵编码模型的状态变量对第s‑1个子带进行卷积运算,以得到卷积结果;
[0425] 对卷积结果进行上采样,以得到第一输出结果该第一输出结果的分辨率与第s个子带的分辨率相同;
[0426] 在对卷积结果进行上采样,以得到第一输出结果之后,熵编码模块2703还用于:
[0427] 对卷积之后的状态变量进行上采样,以得到采样后的状态变量,所述采样后的状态变量与所述第s个子带的分辨率相同。
[0428] 在一个可行的实施例中,在根据卷积层C1和卷积层C2对第一输出结果和第s个子带进行融合操作的方面,熵编码模块2703具体用于:
[0429] 根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,该第一卷积核为卷积层C1对应的卷积核;
[0430] 根据加窗后的第一卷积核对第一输入数据进行卷积操作,以得到第一卷积结果;当卷积层C1为第一熵编码模型中的第1个卷积层时,第一输入数据为第s个子带,当卷积层
C1为第一熵编码模型中的非第1个卷积层时,第一输入数据是对第s个子带进行卷积操作得
到的,
[0431] 将第二输入数据输入到第二子卷积层进行卷积操作,以得到第二卷积结果;当卷积层C2为第二熵编码模型中的第1个卷积层时,第二输入数据为第一输出结果,当卷积层C2
为第二熵编码模型中的非第1个卷积层时,第二输入数据是对第一输出结果进行卷积操作
得到的;对第一卷积结果和第二卷积结果进行相加或堆叠操作,以得到第二输出结果。
[0432] 在一个可行的实施例中,在根据卷积层C1和卷积层C2对第一输出结果和第s个子带进行融合操作,以得到第二输出结果的方面,熵编码模块2703具体用于:
[0433] 根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,该第一卷积核为卷积层C1对应的卷积核;
[0434] 根据第二窗函数对第二卷积核进行加窗操作,以得到加窗后的第二卷积核,该第二卷积核为卷积层C2对应的卷积核,第一窗函数和第二窗函数互补;
[0435] 根据加窗后的第一卷积核对第s个子带进行卷积操作,以得到第一卷积结果;当卷积层C1为第一熵编码模型中的第1个卷积层时,第一输入数据为第s个子带,当卷积层C1为
第一熵编码模型中的非第1个卷积层时,第一输入数据是对第s个子带进行卷积操作得到
的;
[0436] 根据加窗后的第二卷积核对第一输出结果进行卷积操作,以得到第二卷积结果;当卷积层C2为第二熵编码模型中的第1个卷积层时,第二输入数据为第一输出结果,当卷积
层C2为第二熵编码模型中的非第1个卷积层时,第二输入数据是对第一输出结果进行卷积
操作得到的;对第一卷积结果和第二卷积结果进行相加或堆叠操作,以得到第二输出结果。
[0437] 需要说明的是,上述各单元(变换模块2701、量化模块2702和熵编码模块2703)用于执行上述方法的相关步骤。比如,变换模块2701用于执行步骤S201和S1101的相关内容,
量化模块2702用于执行步骤S1102的相关内容,熵编码模块2703用于执行步骤S1103的相关
内容。
[0438] 在本实施例中,图像编码装置2700是以模块的形式来呈现。这里的“模块”可以指特定应用集成电路(application‑specific integrated circuit,ASIC),执行一个或多个
软件或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器件。
此外,以上变换模块2701、量化模块2702和熵编码模块2703可通过图30所示的图像编码的
处理器3001来实现。
[0439] 参见图28,图28为本发明实施例提供一种基于小波变换的图像解码装置的结构示意图。如图28所示,该图像解码装置2800包括:
[0440] 熵解码模块2801,用于对压缩码流进行熵解码,以得到重构的小波系数;
[0441] 反量化模块2802,用于对重构的小波系数进行反量化,以得到反量化后的小波系数;
[0442] 反变换模块2803,用于根据小波变换模型对反量化后的小波系数进行N次小波反变换,以得到重建图像,其中,小波变换模型是基于卷积神经网络CNN实现的,N为大于0的整
数。
[0443] 在一个可行的实施例中,熵解码模块2801具体用于:
[0444] 根据熵解码模型对压缩码流进行熵解码,得到重构的小波系数,熵解码模型是基于深度神经网络实现的。
[0445] 在一个可行的实施例中,熵解码模块2801具体用于:
[0446] 将第s个子带对应的重构子带输入到熵解码模型中计算得到待解码系数的累积概率分布函数的参数,待解码系数的码流为第s个子带的码流的一部分,第s个子带对应的重
构子带为3N+1个重构子带中的任一个;根据待解码系数的累积概率分布函数的参数获取待
解码系数的累积概率分布函数;根据待解码系数及其累积概率分布函数获取待解码系数的
概率分布;根据待解码系数的概率分布,采用算术解码器对待解码系数的码流进行熵解码,
以得到待解码系数,3N+1个重构子带包括待解码系数。
[0447] 在一个可行的实施例中,当第s个子带为3N+1个子带中的第一个子带时,熵解码模型是基于逐像素卷积神经网络pixelCNN实现的,熵解码模型包括M个卷积层,M为大于0的整
数,在将第s个子带对应的重构子带输入到熵解码模型中计算得到待解码系数的累积概率
分布函数的参数的方面,熵解码模块2801具体用于:
[0448] 当M=1时,根据第1个卷积层对应的窗函数对第1个卷积层对应的卷积核进行加窗操作,得到第一加窗后的卷积核;
[0449] 根据第一加窗后的卷积核对第s个子带对应的重构子带进行卷积操作,得到待解码系数的累积概率分布函数的参数;
[0450] 当M大于1时,在进行第j个卷积层的运算时,根据第j个卷积层对应的窗函数对第j个卷积层对应的卷积核进行加窗操作,得到第二加窗后的卷积核;
[0451] 根据第二加窗后的卷积核对第j个卷积层的输入数据进行卷积操作,得到第j个输出数据;
[0452] 其中,当j=1时,第j个卷积层的输入数据为第1个子带对应的重构子带;当j不大于M且大于1时,第j个卷积层的输入数据为第j‑1个卷积层的输出数据;当j=M时,第j个输
出数据包括待解码系数的累积概率分布函数的参数。
[0453] 在一个可行的实施例中,当第s个子带不为3N+1个子带中的第一个子带时,熵解码模型是包括第一熵解码模型、第二熵解码模型和第三熵解码模型,第一熵解码模型和第三
熵解码模型均是基于逐像素卷积神经网络实现的,第三熵解码模型是基于循环神经网络
RNN实现的,第一熵解码模型包括T1个卷积层,第二熵解码模型包括T2卷积层,T1和T2均为
大于0的整数,在将第s个子带对应的重构子带输入到熵解码模型中计算得到待解码系数的
累积概率分布函数的参数的方面,熵解码模块2801具体用于:
[0454] 将第s‑1个子带对应的重构子带输入到第三熵解码模型中进行计算,以得到第一输出结果,s‑1个子带对应的重构子带是对第s‑1个子带的码流进行熵解码得到的,第一输
出结果为第二熵解码模型的输入数据;第s个子带对应的重构子带为第一熵解码模型的输
入数据;
[0455] 当T1和T2均等于1时,根据卷积层C1和卷积层C2对第一输出结果和第s个子带对应的重构子带进行融合操作,得到第二输出结果,第二输出结果为待解码系数的累积概率分
布函数的参数,卷积层C1和卷积层C2分别为第一熵解码模型和第二熵解码模型中的卷积
层;或者
[0456] 当T1大于1且T2等于1时,根据卷积层C1和卷积层C2对第一输出结果和第s个子带对应的重构子带进行融合操作,得到第二输出结果,卷积层C1为第一熵解码模型中的第q个
卷积层,卷积层C2为第二熵解码模型中的卷积层;若q=T1,则第二输出结果为待解码系数
的累积概率分布函数的参数;若q大于0且小于T1,则第二输出结果为第一熵解码模型中的
第q+1个卷积层的输入数据;或者
[0457] 当T1和T2均大于1时,根据卷积层C1和卷积层C2对第一输出结果和第s个子带对应的重构子带进行融合操作,得到第二输出结果;卷积层C1为第一熵解码模型中的第q1个卷
积层,卷积层C2为第二熵解码模型中的第q2个卷积层;若q1=T1且q2=T2,则第二输出结果
为待解码系数的累积概率分布函数的参数,若q1大于0且小于T1,q2大于0且小于T2,则第二
输出结果为第一熵解码模型中的第q1+1个卷积层的输入数据,卷积层C2的输出结果为第二
熵解码模型中的第q2+1个卷积层的输入数据。
[0458] 在一个可行的实施例中,当第s‑1个子带对应的重构子带的分辨率与第s个子带对应的重构子带的分辨率不相同时,在将第s‑1个子带对应的重构子带输入到第三熵解码模
型中进行计算,以得到第一输出结果的方面,熵解码模块2801具体用于:
[0459] 根据第三熵解码模型第三熵编码模型的状态变量对第s‑1个子带对应的重构子带进行卷积运算,得到卷积结果;
[0460] 对卷积结果进行上采样,以得到第一输出结果,第一输出结果的分辨率与第s个子带对应的重构子带的分辨率相同;
[0461] 在对卷积结果进行上采样,以得到第一输出结果之后,熵解码模块2801还具体用于:
[0462] 对卷积之后的状态变量进行上采样,以得到采样后的状态变量,所述采样后的状态变量与所述第s个子带的分辨率相同。
[0463] 在一个可行的实施例中,根据卷积层C1和卷积层C2对第一输出结果和第s个子带对应的重构子带进行融合操作,以得到第二输出结果,熵解码模块2801具体用于:
[0464] 根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,该第一卷积核为卷积层C1对应的卷积核;
[0465] 根据加窗后的第一卷积核对第一输入数据进行卷积操作,以得到第一卷积结果;当卷积层C1为第一熵解码模型中的第1个卷积层时,第一输入数据为第s个子带对应的重构
子带,当卷积层C1为第一熵解码模型中的非第1个卷积层时,第一输入数据是对第s个子带
对应的重构子带进行卷积操作得到的;
[0466] 将第二输入数据输入到第二子卷积层进行卷积操作,以得到第二卷积结果;当卷积层C2为第二解编码模型中的第1个卷积层时,第二输入数据为第一输出结果,当卷积层C2
为第二熵解码模型中的非第1个卷积层时,第二输入数据是对第一输出结果进行卷积操作
得到的;
[0467] 对第一卷积结果和第二卷积结果进行相加或堆叠操作,以得到第二输出结果。
[0468] 在一个可行的实施例中,在根据卷积层C1和卷积层C2对第一输出结果和第s个子带对应的重构子带进行融合操作,以得到第二输出结果的方面,熵解码模块2801具体用于:
[0469] 根据第一窗函数对第一卷积核进行加窗操作,以得到加窗后的第一卷积核,该第一卷积核为卷积层C1对应的卷积核;
[0470] 根据第二窗函数对第二卷积核进行加窗操作,以得到加窗后的第二卷积核,该第二卷积核为卷积层C2对应的卷积核,第一窗函数和第二窗函数互补;
[0471] 根据加窗后的第一卷积核对第一输入数据进行卷积操作,以得到第一卷积结果;当卷积层C1为第一熵解码模型中的第1个卷积层时,第一输入数据为第s个子带对应的重构
子带,当卷积层C1为第一熵解码模型中的非第1个卷积层时,第一输入数据是对第s个子带
对应的重构子带进行卷积操作得到的。
[0472] 根据加窗后的第二卷积核对第二输入数据进行卷积操作,以得到第二卷积结果;当卷积层C2为第二解编码模型中的第1个卷积层时,第二输入数据为第一输出结果,当卷积
层C2为第二熵解码模型中的非第1个卷积层时,第二输入数据是对第一输出结果进行卷积
操作得到的;对第一卷积结果和第二卷积结果进行相加或堆叠操作,以得到第二输出结果。
[0473] 在一个可行的实施例中,反变换模块2803具体用于,包括:
[0474] 在进行第t次小波反变换时,对近似子带PN+1‑t和细节子带I(N+1‑t)1进行更新操作和预测操作,得到第一处理子带和第二处理子带,根据第一处理子带和第二处理子带获取中
间近似分量,中间近似分量的奇数列的系数或奇数行的系数来自第一处理子带,中间近似
分量的偶数列的系数或偶数行的系数来自第二处理子带;
[0475] 对细节子带I(N+1‑t)2和细节子带I(N+1‑t)3进行更新操作和预测操作,得到第三处理子带和第四处理子带,根据第三处理子带和第四处理子带获取中间细节分量,中间细节分
量的奇数列的系数或偶数行的系数来自第三处理子带,中间细节分量的偶数列的系数或偶
数行的系数来自第四处理子带;
[0476] 对中间细节分量和中间近似分量进行更新操作和预测操作,第五处理子带和第六处理子带,根据第五处理子带和第六处理子带获取近似子带Pt‑1,近似子带Pt‑1的奇数行的
系数或奇数列的系数来自第五处理子带,近似子带Pt‑1的偶数行的系数或偶数列的系数来
自第六处理子带;
[0477] 其中,细节子带I(N+1‑t)1、细节子带(N+1‑t)2和细节子带I(N+1‑t)3的分辨率与近似子带PN+1‑t的分辨率相同;当第t次小波反变换为最后一次小波变换时,近似子带Pt‑1为所述重建
图像。
[0478] 在一个可行的实施例中,预测操作是基于CNN实现的,或者更新操作是基于CNN实现的或者,更新操作和预测操作均是基于CNN实现的。
[0479] 在一个可行的实施例中,图像编码装置2800还包括:
[0480] 后处理模块2804),用于在反变换模块2803根据小波变换模型对反量化后的小波系数进行N次小波反变换,以得到重建图像之后,根据后处理模型对重建图像进行后处理,
以得到处理后的重建图像,其中,后处理模型是基于深度神经网络实现的。
[0481] 需要说明的是,上述各单元(熵解码模块2801、反量化模块2802、反变换模块2803和后处理模块2804)用于执行上述方法的相关步骤。比如,熵解码模块2801用于执行步骤
S601和S2301的相关内容,反量化模块2802用于执行步骤S2302的相关内容,反变换模块
2703用于执行步骤S2303的相关内容,后处理模块2804用于执行步骤S2304的相关内容。
[0482] 在本实施例中,图像编码装置2800是以模块的形式来呈现。这里的“模块”可以指特定应用集成电路(application‑specific integrated circuit,ASIC),执行一个或多个
软件或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器件。
此外,以上熵解码模块2801、反量化模块2802、反变换模块2803和后处理模块2804可通过图
31所示的图像解码装置的处理器3101来实现。
[0483] 参见图29,图29为本发明实施例提供一种训练装置的结构示意图。如图29所示,该训练装置2900包括:
[0484] 初始化模块2901,用于初始化小波变换模型;
[0485] 训练模块2902,用于根据初始化后的小波变换模型对训练图像进行N次小波变换,得到3N+1个子带;根据初始化后的小波变换模型依次对1,2,3,……,3N个子带进行小波反
变换,得到3N张重建图像;根据训练图像和3N张重建图像计算损失值,该损失值
其中,Ri为3N张重建图像中的第i张,I为训练图像;重复上述方法多次,
若损失值L的范围波动很小,则确定小波变换模型训练完毕;否则,按照上述方法继续训练
小波变换模型。
[0486] 需要说明的是,上述各单元(初始化模块2901和训练模块2902)用于执行上述方法的相关步骤。
[0487] 在本实施例中,训练装置2900是以模块的形式来呈现。这里的“模块”可以指特定应用集成电路(application‑specific integrated circuit,ASIC),执行一个或多个软件
或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器件。此外,
以上初始化模块2901和训练模块2902可通过图32所示的训练装置的处理器3201来实现。
[0488] 如图30所示图像编码装置3000可以以图30中的结构来实现,该图像编码装置3000包括至少一个处理器3001,至少一个存储器3002以及至少一个通信接口3003。所述处理器
3001、所述存储器3002和所述通信接口3003通过所述通信总线连接并完成相互间的通信。
[0489] 处理器3001可以是通用中央处理器(CPU),微处理器,特定应用集成电路(application‑specific integrated circuit,ASIC),或一个或多个用于控制以上方案程
序执行的集成电路。
[0490] 通信接口3003,用于与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(Wireless Local Area Networks,WLAN)等。
[0491] 存储器3002可以是只读存储器(read‑only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储
信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器
(Electrically Erasable Programmable Read‑Only Memory,EEPROM)、只读光盘(Compact 
Disc Read‑Only Memory,CD‑ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光
碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或
存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但
不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成
在一起。
[0492] 其中,所述存储器3002用于存储执行以上方案的应用程序代码,并由处理器3001来控制执行。所述处理器3001用于执行所述存储器3002中存储的应用程序代码。
[0493] 存储器3002存储的代码可执行以上提供的一种基于小波变换的图像编码方法,比如:
[0494] 根据小波变换模型对待编码图像进行N次小波变换,以得到小波系数,所述小波变换模型是基于卷积神经网路CNN实现的,对小波系数进行量化,以得到量化后的小波系数;
对量化后的小波系数进行熵编码,得到压缩码流。
[0495] 如图31所示图像解码装置3100可以以图31中的结构来实现,该图像解码装置3100包括至少一个处理器3101,至少一个存储器3102以及至少一个通信接口3103。所述处理器
3101、所述存储器3102和所述通信接口3103通过所述通信总线连接并完成相互间的通信。
[0496] 处理器3101可以是通用中央处理器(CPU),微处理器,特定应用集成电路(application‑specific integrated circuit,ASIC),或一个或多个用于控制以上方案程
序执行的集成电路。
[0497] 通信接口3103,用于与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(Wireless Local Area Networks,WLAN)等。
[0498] 存储器3102可以是只读存储器(read‑only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储
信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器
(Electrically Erasable Programmable Read‑Only Memory,EEPROM)、只读光盘(Compact 
Disc Read‑Only Memory,CD‑ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光
碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或
存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但
不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成
在一起。
[0499] 其中,所述存储器3102用于存储执行以上方案的应用程序代码,并由处理器3101来控制执行。所述处理器3101用于执行所述存储器3102中存储的应用程序代码。
[0500] 存储器3102存储的代码可执行以上提供的一种基于小波变换的图像解码方法,比如:
[0501] 对压缩码流进行熵解码,以得到重构的小波系数;对重构的小波系数进行反量化,以得到反量化后的小波系数;根据小波变换模型对反量化后的小波系数进行N次小波反变
换,以得到重建图像,其中,小波变换模型是基于卷积神经网络CNN实现的。
[0502] 如图32所示训练装置3200可以以图32中的结构来实现,该训练装置3200包括至少一个处理器3201,至少一个存储器3202以及至少一个通信接口3203。所述处理器3201、所述
存储器3202和所述通信接口3203通过所述通信总线连接并完成相互间的通信。
[0503] 处理器3201可以是通用CPU,微处理器,ASIC,或一个或多个用于控制以上方案程序执行的集成电路。
[0504] 通信接口3203,用于与其他设备或通信网络通信,如以太网,RAN,WLAN等。
[0505] 存储器3202可以是ROM或可存储静态信息和指令的其他类型的静态存储设备,RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM、CD‑ROM或其他光盘
存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质
或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代
码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与
处理器相连接。存储器也可以和处理器集成在一起。
[0506] 其中,所述存储器3202用于存储执行以上方案的应用程序代码,并由处理器3201来控制执行。所述处理器3201用于执行所述存储器3202中存储的应用程序代码。
[0507] 存储器3202存储的代码可执行以上提供的一种小波变换模型的训练方法,比如:
[0508] 初始化小波变换模型;根据初始化后的小波变换模型对训练图像进行N次小波变换,得到3N+1个子带;根据初始化后的小波变换模型依次对1,2,3,……,3N个子带进行小波
反变换,得到3N张重建图像;根据训练图像和3N张重建图像计算损失值,该损失值
其中,Ri为3N张重建图像中的第i张,I为训练图像;重复上述方法多次,
若损失值L的范围波动很小,则确定小波变换模型训练完毕;否则,按照上述方法继续训练
小波变换模型。
[0509] 需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为
依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知
悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明
所必须的。
[0510] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0511] 在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种
逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可
以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间
的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,
可以是电性或其它的形式。
[0512] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个
网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目
的。
[0513] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单
元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0514] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本发明的技术方案本质上或
者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体
现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备
(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分
步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read‑Only Memory)、随机存取存储器
(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0515] 本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器
可以包括:闪存盘、只读存储器(英文:Read‑Only Memory,简称:ROM)、随机存取器(英文:
Random Access Memory,简称:RAM)、磁盘或光盘等。
[0516] 以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;
同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会
有改变之处,综上上述,本说明书内容不应理解为对本发明的限制。