一种编码方法及相关设备
文献发布时间:2023-06-19 09:57:26
技术领域
本申请涉及图像处理领域,尤其涉及一种编码方法及相关设备。
背景技术
熵编码(entropy coding)是一种被广泛应用于图像及视频数据压缩中的编码技术,其本质是一种独立于介质的具体特征的进行无损数据压缩的方案。按照香浓熵原理从而不丢失任何信息。常见的熵编码包括香浓编码、哈夫曼编码和算术编码等等。其目的是使用尽可能短的编码长度来无损地描述信源符号。目前熵编码被广泛使用于图像及视频压缩等领域,对节省存款空间和提升数据传输效率起到非常重要的作用。但是,现有技术采用一种变长编码的方式,吞吐量较低,编码效率低。
发明内容
本申请实施例提供一种编码方法及相关设备,提高了极化码压缩吞吐量、以及实现并行 Polar码的快速无损压缩。
第一方面,本申请实施例提供了一种编码方法,包括:获取多个游程编码RLE数据以及多个RLE数据中每个RLE数据对应的分布概率;根据分布概率,对多个RLE数据进行排序,并将排序后的多个RLE数据映射为多个重组数据;将多个重组数据展开为多个二进制数据,生成第一矩阵,并根据分布概率统计第一矩阵中每列比特位为1的出现概率;根据出现概率,确定对信源信号进行处理得到的编码序列,编码序列包括第一集合和第二集合,第一集合为压缩后保留的比特位,第二集合为压缩后舍弃的比特位。最后,对第一向量进行译码输出第三集合,第一向量为全零序列、或第一集合对应的向量与极化矩阵相乘得到的向量,第三集合包括压缩后保留的比特位和压缩后舍弃的比特位出现译码错误的位置。通过对图像数据进行颜色转化、灰度平移、DCT变换、数据量化、Zig-Zag扫描,游程编码后得到RLE数据,并对该RLE数据进行重组,接着转成多位二进制比特序列,最后设计Polar码对各比特平面的信号进行并行压缩,提高了极化码压缩吞吐量,实现并行Polar码的快速无损压缩。
在一种可能的设计中,第一集合为编码序列中极化后的熵趋近于1的比特位,第二集合为编码序列中极化后的熵趋近于0的比特位。
在另一种可能的设计中,极化后的熵为根据出现概率确定的。
在另一种可能的设计中,根据固定比特集合,通过极化码译码器进行译码得到压缩后舍弃的比特位的估计值,其中,Y
在另一种可能的设计中,根据固定比特集合,通过极化码译码器进行译码得到压缩后舍弃的比特位的估计值,其中,Y
在另一种可能的设计中,当估计值与压缩后舍弃的比特位的原始值不相同时,将估计值进行翻转,并记录压缩后舍弃的比特位出现译码错误的位置。
在另一种可能的设计中,按照分布概率从大到小的顺序,对多个RLE数据进行排序。通过数据重组,减少比特位之间的相关性,提高压缩性能。
在另一种可能的设计中,按照第一矩阵的每列进行分层得到多个比特平面,并统计每个比特平面为1的出现概率,从而实现Polar码并行分层压缩。
第二方面,本申请实施例提供了一种编码装置,该编码装置被配置为实现上述第一方面中网元设备所执行的方法和功能,由硬件/软件实现,其硬件/软件包括与上述功能相应的模块。
第三方面,本申请实施例提供了一种网元设备,包括:处理器、存储器和通信总线,其中,通信总线用于实现处理器和存储器之间连接通信,处理器执行存储器中存储的程序用于实现上述第一方面的步骤。
在一个可能的设计中,本申请提供的网元设备可以包含用于执行上述方法设计中网元设备的行为相对应的模块。模块可以是软件和/或是硬件。
第四方面,本申请提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面的方法。
第五方面,本申请提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面的方法。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1是本申请实施例提供的一种典型的JPEG压缩算法的流程示意图;
图2是本申请实施例提供的一种JPEG压缩算法中使用的量化矩阵的示意图;
图3是本申请实施例提供的一种量化后的频率分量的示意图;
图4是本申请实施例提供的一种哈夫曼编码的示意图;
图5是本申请实施例提供的一种统计概率分布的示意图;
图6是本申请实施例提供的一种编码系统的架构示意图;
图7是本申请实施例提供的一种编码方法的流程示意图;
图8是本申请实施例提供的一种RLE数据重组的示意图;
图9是本申请实施例提供的一种数据重组前后的分布对比的示意图;
图10是本申请实施例提供的一种polar码信源极化的示意图;
图11是本申请实施例提供的一种polar码信源压缩和信道通信等效示意图;
图12是本申请实施例提供的一种BSC信道的示意图;
图13是本申请实施例提供的一种Polar无损压缩的流程示意图;
图14是本申请实施例提供的一种编码装置的示意图;
图15是本申请实施例提出的一种网元设备的结构示意图。
具体实施方式
下面结合本申请实施例中的附图对本申请实施例进行描述。
请参见图1,图1是本申请实施例提供的一种典型的JPEG压缩算法的流程示意图。例如,对于联合图像专家小组(joint photographic expert group,JPEG)图像压缩编码。首先将原始图像通过色域转换(color transform)得到Y、U和V三个灰度矩阵,再对该灰度矩阵进行相应的平移(level offset)调整灰度范围。然后将平移后的灰度矩阵按照8×8的小矩阵分块(不够的补0)进行离散余弦变换(discrete cosine transform,DCT)得到相应各离散频率的分量信息。再对这些离散频率的分量信息进行量化(uniform scalarquantization)得到直流分量参数(DC coefficient)和交流分量参数(AC coefficient)。如图2所示,图2是本申请实施例提供的一种JPEG压缩算法中使用的量化矩阵的示意图。对于直流分量参数,可以采用差分脉冲编码调制(differential pulse code modulation,DPCM)进行编码,然后对DPCM编码后的数据进行可变长度编码(variable length coding)得到DC比特数据流。而对于交流分量参数,由于图像信号本身以低频分量为主,人眼对低频分量更敏感,通常对AC部分量化的量化步长更大,导致AC部分的信号可能会出现多个零。
如图3所示,图3是本申请实施例提供的一种量化后的频率分量的示意图。对交流分量参数进行量化,采用Zig-Zag扫描将8×8的矩阵转换成一个序列串,该序列串为(15,0,-2, -1,-1,-1,0,…)。其中,该序列串的尾部包括多个连续的0。为节省空间,可以对该序列串进行游程编码(run-length encoding,RLE)得到一个更短的序列串。具体的,对一个包含很多连续0的数字序列串进行操作,序列串中任何一个非0数字a将被编码为两个数字(N,a)。其中,N代表数字a位置前面的连续的0的个数。例如,序列串(0,0,8,0,5,5,0, 0,0,6)将被编码为{(2,8),(1,5),(0,5),(3,6)};序列串(9,0,0,0,0,4,0,0,0,0,0,1)将被编码为{(0,9),(4,4),(5,1)}。在得到游程编码的数据之后,由于每个数据的概率不一样,还需要对每个数据进行熵编码(entropy coding)去除冗余。系统中一般采用哈夫曼编码(Huffmancoding)或者算术编码(Arithmetic coding)。本申请实施例采用哈夫曼编码作为示例。
对于传统的熵编码方案,例如哈夫曼编码,将游程编码后的数据视为由单一信源按特定分布独立产生的。因此在做哈夫曼编码之前,需要统计每个数据的分布概率,并根据该分布概率按照哈夫曼编码生成对应的字典,基本原则就是将分布概率较大的数字用较短的二进制比特表示,而将分布概率较小的数字用较长的二进制比特表示。如图4所示,图4是本申请实施例提供的一种哈夫曼编码的示意图。第二层,a的分布概率是45%,大于其他任何一个数据,使用1个比特进行编码,即使用0表示。第四层,使用3个比特进行编码,b=101,c=100, d=111,第五层,f的分布概率是5%,e的分布概率是9%,都小于其他数据的分布概率,使用4个比特进行编码,e=1101,f=1100。完成上述哈夫曼编码之后,JPEG图像压缩过程结束。
根据上述对游程编码和熵编码的描述,经过游程编码得到一串数字对{(N
上述基于哈夫曼的熵编码是一种信源压缩中变长编码。由于采用类似于二叉树的编码结构,哈夫曼编码是一种典型的前缀码,也就是说码本中任意一个码字都不会是其他码字的前缀部分,这也就是可以不需要设置断点就可以唯一恢复的码本映射方式。但是,哈夫曼译码也存在缺点,需要根据编码字典里的码本逐一寻找断点并作判决。例如。如图5的示例,需要对二进制序列000111111110101110010进行哈夫曼译码,先查找第一个接收符号0,并不存在于编码字典[00,011,1111,110,10,1110,010]中,因此继续往下查找‘00’,如果查找到字典中对应的符号,则将“00”译成0。接着查找下一个’0’,没有对应码本,再查找’01’,也没有对应码本,接着查找’011’,如果查找到字典中对应的符号,则将“011”译成1。重复该过程,直到将所有的字符恢复为止。
可以看出,变长编码的好处是可以通过利用将概率高的符号表示成短码,将概率低的符号表示成长码,从而达到平均长度的思想,渐进实现最优压缩效率。但是,译码需要对比特位逐一比较和查找,可实现的吞吐率较低,编码效率不高。为了解决上述技术问题,本申请实施例提供了如下解决方案。
如图6所示,图6是本申请实施例提供的一种编码系统的架构示意图。首先将图像数据通过JPEG操作,例如颜色转化、灰度平移、8×8的DCT变换、数据量化、Zig-Zag扫描、以及游程编码(RLE),得到多个RLE数据。然后按照概率从高到低的顺序对RLE数据进行排序,得到符号集{a_1,a_2,……,a_n},其对应的概率为{p_1,p_2,…,p_n},满足关系 p_1≥p_2≥……≥p_n。将{a_1,a_2,……,a_n}分别映射为{0,1,……,n-1},完成数据重组,接着将重组数据进行二进制自然顺序展开。例如n=4,如果RLE数据经过排序后得到的数据为{‘255’,‘55’,‘72’,‘12’},将其映射成相应的{0,1,2,3},并将映射后的值表示成相应的二进制序列{00000000,00000001,00000010,00000011}。统计上述二进制序列(此处是8层)每层(列)出现0和出现1的概率,并以此完成Polar码并行分层压缩。各层完成压缩后,将每层的压缩数据进行数据拼接,完成压缩过程。需要说明的是,接收端的操作为上述过程的逆过程,此处不再赘述。具体编码过程如下所述。
本申请实施例采用不变长度编码,不变长度编码是一种线性编码,将一个固定长度(假设为N)的高维带冗余的信源向量压缩成维度约为NH(X)的向量。其中,H(X)为信源X的熵。如果X为二元0、1信号,H(X)=-plog
如图7所示,图7是本申请实施例提供的一种编码方法的流程示意图。本申请实施例中的步骤至少包括:
S701,获取多个游程编码RLE数据以及所述多个RLE数据中每个RLE数据对应的分布概率。其中,原始图像可以通过颜色转化、灰度平移、8×8的DCT变换、数据量化、Zig-Zag扫描、以及游程编码得到多个RLE数据,具体方法可以参考上述过程。RLE数据的动态范围可以为0-255,统计该256个字符的出现次数可以得到每个字符的分布概率。
S702,根据所述分布概率,对所述多个RLE数据进行排序,并将排序后的所述多个RLE 数据映射为多个重组数据。
具体实现中,可以按照所述分布概率从大到小的顺序,对所述多个RLE数据进行排序。然后将排序后的多个RLE数据进行映射。
如图8所示,图8是本申请实施例提供的一种RLE数据重组的示意图。游程编码得到一串数字对{(N
S703,将所述多个重组数据展开为多个二进制数据,生成第一矩阵,并根据所述分布概率统计所述第一矩阵中每列比特位为1的出现概率。
由于采用二元polar码进行压缩,因此需要将多个重组数据使用二进制比特表示,对0-255 的十进制数做二进制自然序列展开,即将十进制数B表示成级数
例如,如图8所示,多个RLE数据a={0,1,2,4,5,6,7},统计其各自的出现频率为{0.3,0.15,0.05,0.1,0.20,0.05,0.15}。首先对多个RLE数据a映射为多个重组数据, 0->0,1->2,2->5,4->4,5->1,6->6,7->3,然后将多个重组数据展开为二进制数据,即{0,1,2,3,4,5,6}表示成{’000’,’001’,’010’,’011’,’100’,’101’,’110’},分别对应分布概率(0.3, 0.2,0.15,0.15,0.1,0.05,0.05),生成的第一矩阵为
为了实现并行独立压缩,忽略b
如果前后的比特互不相关,则H(b
如图9所示,图9是本申请实施例提供的一种数据重组前后的分布对比的示意图。如图 9的左图所示,RLE数据的动态范围为0-255,统计该256个字符的出现次数可以得到每个字符的分布概率。如果不对多个RLE数据进行重组映射,对RLE数据做自然数二进制展开,即将RLE数据0表示为‘00000000’,将RLE数据1表示成‘00000001’等等,得到的b
S704,根据所述出现概率,确定对信源信号进行处理得到的编码序列,所述编码序列包括第一集合和第二集合,所述第一集合为压缩后保留的比特位,所述第二集合为压缩后舍弃的比特位。
其中,所述第一集合为所述编码序列中极化后的熵趋近于1的比特位,所述第二集合为所述编码序列中极化后的熵趋近于0的比特位。进一步的,所述极化后的熵为根据所述出现概率确定的。
如图10所示,图10是本申请实施例提供的一种polar码信源极化的示意图。假设X
H(X
由于U
如果将上述过程重复下去,将两个独立同分布的信源(H(U
根据熵的链式公式,
H(U
可以得出极化后
且
这样,对X
S705,对第一向量进行译码输出第三集合,所述第一向量为全零序列、或所述第一集合对应的向量与极化矩阵相乘得到的向量,所述第三集合包括所述压缩后保留的比特位和所述压缩后舍弃的比特位出现译码错误的位置。
具体实现中,根据固定比特集合,通过极化码译码器进行译码得到所述压缩后舍弃的比特位的估计值,其中,Y
然后,可以获取译码得到所述压缩后舍弃的比特位的估计值;当所述估计值与所述压缩后舍弃的比特位的原始值不相同时,将所述估计值进行翻转,并记录所述压缩后舍弃的比特位出现译码错误的位置。当所述估计值与所述压缩后舍弃的比特位的原始值相同时,对下一个比特位进行译码并进行校验。最后对各个比特位的压缩数据进行数据拼接,完成压缩过程。
由于
如图11所示,图11是本申请实施例提供的一种polar码信源压缩和信道通信等效示意图。针对Ber(q)信源的无损压缩Polar码的设计可以等效于一个针对二进制对称信道(binary symmetric channel,BSC)(q)的Polar信道编码的设计。
又如图12所示,图12是本申请实施例提供的一种BSC信道的示意图。BSC信道的错误概率为∈。将信道参数∈设置成与Bernoulli信源参数一样,即∈=q。可以计算BSC(q)的信道容量为1-H(q)=1+qlog
根据信道极化编码理论,极化得到的信道用于放置信息比特,而剩下的比特用于放置固定比特。由此定义信息比特集合
信源编码的运算过程可以借助polar码信道译码。具体的,在信源压缩时,在给定U
对比对应关系
综上所述,可以首先抽象一个BSC信道,噪声和X
在上述等式两边加上[U
例如,如图13所示,图13是本申请实施例提供的一种Polar无损压缩的流程示意图。 S1301,信源产生的N个相互独立分布(independently and identically distribute,i.i.d)的信号 X
在本申请实施例中,通过对图像数据进行颜色转化、灰度平移、DCT变换、数据量化、 Zig-Zag扫描,游程编码后得到RLE数据,并对RLE数据进行重组,接着转成多位二进制比特序列,最后设计Polar码对各比特位的信号做并行压缩,提高了极化码压缩吞吐量、以及实现并行Polar码的快速无损压缩。
如图14所示,图14是本申请实施例提供的一种编码装置的示意图。本申请实施例中的装置至少包括获取模块1401以及处理模块1402,其中:
获取模块1401,用于获取多个游程编码RLE数据以及所述多个RLE数据中每个RLE数据对应的分布概率;
处理模块1402,用于根据所述分布概率,对所述多个RLE数据进行排序,并将排序后的所述多个RLE数据映射为多个重组数据;
处理模块1402,还用于将所述多个重组数据展开为多个二进制数据,生成第一矩阵,并根据所述分布概率统计所述第一矩阵中每列比特位为1的出现概率;
处理模块1402,还用于根据所述出现概率,确定对信源信号进行处理得到的编码序列,所述编码序列包括第一集合和第二集合,所述第一集合为压缩后保留的比特位,所述第二集合为压缩后舍弃的比特位;
处理模块1402,还用于对第一向量进行译码输出第三集合,所述第一向量为全零序列、或所述第一集合对应的向量与极化矩阵相乘得到的向量,所述第三集合包括所述压缩后保留的比特位和所述压缩后舍弃的比特位出现译码错误的位置。
其中,所述第一集合为所述编码序列中极化后的熵趋近于1的比特位,所述第二集合为所述编码序列中极化后的熵趋近于0的比特位。
其中,所述极化后的熵为根据所述出现概率确定的。
可选的,处理模块1402,还用于根据固定比特集合,通过极化码译码器进行译码得到所述压缩后舍弃的比特位的估计值,其中,Y
可选的,处理模块1402,还用于根据固定比特集合,通过极化码译码器进行译码得到所述压缩后舍弃的比特位的估计值,其中,Y
可选的,处理模块1402,还用于当所述估计值与所述压缩后舍弃的比特位的原始值不相同时,将所述估计值进行翻转,并记录所述压缩后舍弃的比特位出现译码错误的位置。
可选的,处理模块1402,还用于按照所述分布概率从大到小的顺序,对所述多个RLE 数据进行排序。
可选的,处理模块1402,还用于按照所述第一矩阵的每列进行分层得到多个比特平面,并统计每个所述比特平面为1的出现概率。
需要说明的是,各个模块的实现还可以对应参照图7所示的方法实施例的相应描述,执行上述实施例中所执行的方法和功能。
请继续参考图15,图15是本申请实施例提出的一种网元设备的结构示意图。如图15所示,该网元设备可以包括:至少一个处理器1501,至少一个通信接口1502,至少一个存储器 1503和至少一个通信总线1504。
其中,处理器1501可以是中央处理器单元,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。通信总线1504可以是外设部件互连标准PCI总线或扩展工业标准结构EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图15中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信总线1504用于实现这些组件之间的连接通信。其中,本申请实施例中设备的通信接口1502用于与其他节点设备进行信令或数据的通信。存储器1503可以包括易失性存储器,例如非挥发性动态随机存取内存(nonvolatile random access memory,NVRAM)、相变化随机存取内存(phase change RAM,PRAM)、磁阻式随机存取内存(magetoresistive RAM,MRAM)等,还可以包括非易失性存储器,例如至少一个磁盘存储器件、电子可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、闪存器件,例如反或闪存(NOR flash memory) 或是反及闪存(NAND flash memory)、半导体器件,例如固态硬盘(solid state disk,SSD)等。存储器1503可选的还可以是至少一个位于远离前述处理器1501的存储装置。存储器1503中可选的还可以存储一组程序代码,且处理器1501可选的还可以执行存储器1503中所执行的程序。
获取多个游程编码RLE数据以及所述多个RLE数据中每个RLE数据对应的分布概率;
根据所述分布概率,对所述多个RLE数据进行排序,并将排序后的所述多个RLE数据映射为多个重组数据;
将所述多个重组数据展开为多个二进制数据,生成第一矩阵,并根据所述分布概率统计所述第一矩阵中每列比特位为1的出现概率;
根据所述出现概率,确定对信源信号进行处理得到的编码序列,所述编码序列包括第一集合和第二集合,所述第一集合为压缩后保留的比特位,所述第二集合为压缩后舍弃的比特位;
对第一向量进行译码输出第三集合,所述第一向量为全零序列、或所述第一集合对应的向量与极化矩阵相乘得到的向量,所述第三集合包括所述压缩后保留的比特位和所述压缩后舍弃的比特位出现译码错误的位置。
其中,所述第一集合为所述编码序列中极化后的熵趋近于1的比特位,所述第二集合为所述编码序列中极化后的熵趋近于0的比特位。
其中,所述极化后的熵为根据所述出现概率确定的。
可选的,处理器1501还用于执行如下操作:
根据固定比特集合,通过极化码译码器进行译码得到所述压缩后舍弃的比特位的估计值,其中,Y
可选的,处理器1501还用于执行如下操作:
根据固定比特集合,通过极化码译码器进行译码得到所述压缩后舍弃的比特位的估计值,其中,Y
可选的,处理器1501还用于执行如下操作:
当所述估计值与所述压缩后舍弃的比特位的原始值不相同时,将所述估计值进行翻转,并记录所述压缩后舍弃的比特位出现译码错误的位置。
可选的,处理器1501还用于执行如下操作:
按照所述分布概率从大到小的顺序,对所述多个RLE数据进行排序。
可选的,处理器1501还用于执行如下操作:
按照所述第一矩阵的每列进行分层得到多个比特平面,并统计每个所述比特平面为1的所述出现概率。
进一步的,处理器还可以与存储器和通信接口相配合,执行上述申请实施例中网元设备的操作。
本申请实施例还提供了一种处理器,用于与存储器耦合,用于执行上述各实施例中任一实施例中涉及网元设备的任意方法和功能。
本申请实施例还提供了一种包含指令的计算机程序产品,其在计算机上运行时,使得计算机执行执行上述各实施例中任一实施例中涉及网元设备的任意方法和功能。
本申请实施例还提供了一种装置,用于执行上述各实施例中任一实施例中涉及网元设备的任意方法和功能。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL)) 或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘solid state disk (SSD))等。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
- 对位于图像内容不连续性边缘处的重构块不应用环路滤波处理的视频编码方法和设备和相关的视频解码方法和设备
- 一种编码方法及相关设备