图像编解码方法及设备与流程

文档序号:26057463发布日期:2021-07-27 15:36阅读:137来源:国知局
图像编解码方法及设备与流程

本发明涉及图像处理技术领域,尤其涉及图像编解码方法及设备。



背景技术:

图像在传输之前通常需要先进行编码,比如采用渐进式编码方法进行编码。目前,采用渐进式编码方法进行编码的基本流程是:对一帧图像或者一帧图像中的块区域分别进行dct变换(discretecosinetransform,离散余弦变换)和量化处理,得到编码数据,然后将编码数据传输到解码端,由解码端进行解码。由于其对所有的图像数据进行直接编码和传输,这便导致传输的码流非常大。



技术实现要素:

本申请实施例提供一种图像编解码方法及设备,能够解决现有的渐进式编码方法传输的码流较大的问题。所述技术方案如下:

根据本申请实施例的第一方面,提供一种图像编码方法,该方法包括:

对当前帧图像依次进行离散余弦dct变换和量化处理,得到第一图像数据;

对所述第一图像数据进行差值处理,得到第二图像数据;

根据预设分层规则对所述第二图像数据进行分层,得到分层数据;

将所述分层数据发送给解码端。

当前帧图像进行dct变换和量化处理后得到的第一图像数据在进行分层处理前先进行差值处理,通过差值处理可以减少编码数据量,进而降低了传输的码流。

在一个实施例中,所述第一图像数据按照数值由大到小的顺序存储;所述对所述第一图像数据进行差值处理包括:

保持所述第一图像数据中数值最高的数据不变,;

从所述第一图像数据中数值为第二高的数据开始,按照所述第一图像数据的存储顺序,将每个数据的数值减去前一个数据的数值,得到第二图像数据。

在一个实施例中,所述根据预设分层规则对所述第二图像数据进行分层包括:

获取所述第一图像数据中数值最高的数据;

计算所述第一图像数据中数值最高的数据移位趋近于0的移位数;

根据预设分层数量n和所述移位数对所述第二图像数据进行移位和减法处理,所述n为大于1的整数。

在一个实施例中,所述根据预设分层数量和所述移位数对所述第二图像数据进行移位和减法处理包括:

在当前的分层数i小于所述预设分层数量n时,根据所述移位数对所述第二图像数据进行向右移位处理,得到第一数据,所述i为正整数;

对所述第一数据进行反向移位,得到第二数据;

统计所述第一数据中相同数据的数量最多的数据,得到第三数据;

将所述第一数据减去所述第三数据,得到第i层分层数据;

将所述第二图像数据减去所述第二数据,得到第四数据,并将所述第二图像数据更新为所述第四数据且将所述i加1;

在所述i等于所述n时,将所述移位数置为0,并根据所述移位数0对第n-1层更新后的第二图像数据依次进行移位、反向移位和减法处理,得到第n层分层数据。

通过对当前帧图像依次进行dct变换、量化处理和差值处理之后,根据预设分层数量和移位数对差值处理后得到的第二图像数据进行向右移位和减法处理,能够在对第二图像数据进行分层的同时有效减小每一层的编码数据量,从而进一步降低了传输码流的大小。

在一个实施例中,所述将所述分层数据发送给解码端包括:

将第i层分层数据及所述第三数据发送给解码端。

在一个实施例中,所述对当前帧图像依次进行离散余弦dct变换和量化处理包括:

将当前帧图像分为多个图像块;

对各图像块进行dct变换,得到dct系数值,并对所述dct系数值按照从大到小的顺序依次保存;

对所述dct系数值进行量化处理。

根据本申请实施例的第二方面,提供一种图像解码方法,该方法包括:

接收编码端发送的分层数据和所述分层数据对应的第三数据,所述第三数据为第一数据中相同数据的数量最多的数据,所述第一数据为根据移位数对第二图像数据进行向右移位后得到的数据,所述第二图像数据为编码端对当前帧图像依次进行离散余弦dct变换、量化处理和差值处理后得到的数据;

根据所述分层数据和所述分层数据对应的第三数据依次对每层的分层数据进行解码,得到解码后的图像数据;

显示所述解码后的图像数据。

解码端接收到编码端发送的分层数据和对应的第三数据后,可以根据分层数据和对应的第三数据依次对每层的分层数据进行解码并显示,能够达到渐进式显示的效果并同时降低了码流。

在一个实施例中,所述根据所述分层数据和所述分层数据对应的第三数据依次对每层的分层数据进行解码得到解码后的图像数据包括:

当j=1时,将接收到的第1层分层数据加上所述第三数据,并将得到的数据进行反量化处理,得到第1层解码数据,其中,所述j为大于1且小于预设分层数量n的整数,所述j代表当前处理的层数,所述n为大于1的整数;

当j大于1且小于n时,将接收到的第j层分层数据加上所述第三数据,并对得到的数据进行反量化处理,得到第j层反量化处理后的数据;

将所述第j层反量化处理后的数据与第j-1层解码数据求和,得到第j层解码数据,并将j加1;

当j=n时,对第n层反量化处理后的数据与第n-1层解码数据求和,并对求和后的数据进行dct反变换,得到解码后的图像数据。

解码端可以在接收到分层数据后,按分层顺序对每层的分层数据进行解码,后面每层是在前面已解码的基础上补充了细节信息,使解码图像变得更加精细,逐层提升了图像质量,可以达到渐进式显示的效果并同时降低了码流。

根据本申请实施例的第三方面,提供一种图像编码设备,所述图像编码设备包括处理器和存储器,所述存储器中存储有至少一条计算机指令,所述指令由所述处理器加载并执行以实现如上所述的图像编码方法中任一实施例所执行的步骤。

根据本申请实施例的第四方面,提供一种图像解码设备,所述图像解码设备包括处理器和存储器,所述存储器中存储有至少一条计算机指令,所述指令由所述处理器加载并执行以实现如上所述的图像解码方法中任一实施例所执行的步骤。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

图1是本申请实施例提供的一种图像编码方法的流程图;

图2是本申请实施例提供的一种dct系数值存储方式的示意图;

图3是本申请实施例提供的dct系数值存储顺序以数字序号体现的示意图;

图4是本申请实施例提供的一种图像解码方法的流程图;

图5是本申请实施例提供的一种图像编码设备的结构示意图;

图6是本申请实施例提供的一种具体的图像编码设备的结构示意图;

图7是本申请实施例提供的一种图像解码设备的结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

本申请实施例提供一种图像编码方法,可以应用于图像编码设备,如图1所示,该图像编码方法可以包括以下步骤:

步骤101:对当前帧图像依次进行dct变换和量化处理,得到第一图像数据。

编码端获取当前帧图像,将当前帧图像分为多个图像块,也即宏块,然后对各图像块进行dct变换,得到dct系数值,并对该dct系数值按照从大到小的顺序依次保存,再对这些dct系数值进行量化处理,得到第一图像数据。

例如,可以将当前帧图像分为多个8*8的图像块,经过对8*8图像块的dct变换,可以将8*8的像素值变换成8*8的dct系数,然后按照图2的顺序依次保存这64个dct系数值。需要说明的是,dct系数值在8*8矩阵中的存储顺序在一定程度上体现了dct系数对应的像素点的重要性。为了方便说明,将图2中的顺序以图3中各位置的数字序号体现。

具体的,在图3中,“0”位置为dct系数值(频率值)最高,也就是人眼最关注的像素点的dct系数,接下来,按照dct系数值从大到小的顺序,依次排列dct系数,“63”位置为dct系数值最低,也就是人眼最容易忽略的像素点的dct系数。

步骤102:对第一图像数据进行差值处理,得到第二图像数据。

得到第一图像数据之后,对第一图像数据进行差值处理,得到第二图像数据。具体的,可以包括:保持第一图像数据中数值最高的数据不变;从第一图像数据中数值为第二高的数据开始,按照第一图像数据的存储顺序,将每个数据的数值减去前一个数据的数值,得到第二图像数据。

例如,在图3中,“0”位置的数据保持不变,按序号顺序,以后每个数据减去前一序号的数据。

步骤103:根据预设分层规则对第二图像数据进行分层,得到分层数据。

得到第二图像数据之后,根据预设分层规则对第二图像数据进行分层,得到分层数据,然后将分层数据发送给解码端。

具体的,根据预设分层规则对第二图像数据进行分层包括:获取第一图像数据中数值最高的数据;计算第一图像数据中数值最高的数据移位趋近于0的移位数;根据预设分层数量n和移位数对第二图像数据进行移位和减法处理,其中的n为大于1的整数。

其中,根据预设分层数量和移位数对第二图像数据进行移位和减法处理包括:在当前的分层数i小于预设分层数量n时,根据移位数对第二图像数据进行向右移位处理,得到第一数据,其中的i为正整数且初始值为1;对第一数据进行反向移位,得到第二数据;统计第一数据中相同数据的数量最多的数据,得到第三数据;将第一数据减去第三数据,得到第i层分层数据;将第二图像数据减去第二数据,得到第四数据,并用第四数据更新第二图像数据且将i加1,即将第二图像数据更新为第四数据;在i等于n时,将移位数置为0,并根据移位数0对第n-1层更新后的第二图像数据依次进行移位、反向移位和减法处理,得到第n层分层数据。

例如,以将第二图像数据分为4层(即预设分层数量n=4)为例并结合图3,具体可以通过如下的步骤s1~步骤s7进行分层:

步骤s1:数据移位。

获取图3中“0”位置的数据,计算出此数据移位趋近于0的移位数bitnum,比如,“0”位置的数据为二进制数“100”,将其右移2位可得到趋近于0的数“001”,则移位数bitnum即为2。确定出移位数后,使用该移位数分别对64个dct系数值进行向右移位,得到第一数据。可以将移位前的64个dct系数值记为org,将移位后得到的第一数据记为qua。

步骤s2:反向移位。

对步骤s1中向右移位后得到的第一数据qua进行反向移位,得到第二数据iqua。需要说明的是,对数据进行移位再反向移位后,数据是有出入的,比如对于数据38,将其右移3位得到数据4,但是数据4左移3位得到的是32而不是38,因此会造成剩余数据das,所以,das也就是此次移位后的剩余值,即此时das=38-32=6。

步骤s3:确定第1层分层数据。

统计移位后得到的第一数据qua中相同数据的数量,根据统计结果确定数量最多的数据subnum,从qua中统一减去数据subnum,得到第1层分层数据。例如,第一数据qua中数据2的数量最多,则确定subnum=2,然后将qua中的各数据统一减去2,得到数据sub1,则sub1就是第1层准备编码并传输给解码端的数据。

步骤s4:计算剩余数据。

将移位前的64个dct系数值org减去反向移位后得到的第二数据iqua,得到经第1层传输后的剩余数据,可记为das,则das=org-iqua。

步骤s5:对步骤s4得到的剩余数据das同样执行上述的步骤s1~步骤s3,得到数据sub2,数据sub2即为第2层准备编码并传输给解码端的数据。

步骤s6:将步骤s4得到的剩余数据das同样减去反向移位后得到的第二数据iqua,得到新的剩余数据das,然后用上述的步骤s1~步骤s3同样的移位减法操作得到数据sub3,数据sub3即为第3层准备编码并传输给解码端的数据。

步骤s7:对于第4层,即最后一层,将所有宏块的移位数bitnum设置为0,以保证最后一层的所有数据能传输给解码端,不再有剩余数据,然后执行步骤s1~步骤s3同样的移位减法操作,得到数据sub4,数据sub4即为第4层准备编码并传输给解码端的数据。

通过上述方式能够大大降低每一层的传输数据量,从而在整体上降低编码码流。

步骤104:将分层数据发送给解码端。

得到分层数据后,将分层数据发送给解码端。具体的,将第i层分层数据及第三数据发送给解码端,以便解码端对分层数据进行解码还原,得到最终要显示的数据。

实际应用中,可以每得到一层分层数据便将该分层数据发送给解码端,也可以在完成所有的分层处理后将所有的分层数据发送给解码端。

本申请实施例提供的图像编码方法,在对当前帧图像进行dct变换及量化处理后得到的第一图像数据进行分层处理前先进行差值处理,通过差值处理可以减少编码数据量,从而降低了传输的码流;在进行差值处理之后,根据预设分层数量和移位数对差值处理后得到的第二图像数据进行向右移位和减法处理,能够在对第二图像数据进行分层的同时有效减小每一层的编码数据量,从而进一步降低了传输码流的大小。

基于上述图1对应的实施例提供的图像编码方法,本申请另一实施例提供一种图像解码方法,该方法可以应用于图像解码设备。参照图4所示,本实施例提供的图像解码方法可以包括以下步骤:

步骤401:接收编码端发送的分层数据和该分层数据对应的第三数据。

第三数据为第一数据中相同数据的数量最多的数据,其中的第一数据为根据移位数对第二图像数据进行向右移位后得到,其中的第二图像数据为编码端对当前帧图像依次进行dct变换、量化处理和差值处理后得到的数据。

步骤402:根据分层数据和该分层数据对应的第三数据,依次对每层的分层数据进行解码,得到解码后的图像数据。

具体的,可以用j代表当前处理的层数,且j为大于1且小于预设分层数量n的整数,其中的n为大于1的整数,在接收到编码端发送的分层数据和该分层数据对应的第三数据之后,对分层数据进行如下的处理:

当j=1时,将接收到的第1层分层数据加上第三数据,并将得到的数据进行反量化处理,得到第1层解码数据;实际应用中,编码端可以将对当前帧图像进行量化处理时的量化参数也发送给解码端的图像解码设备,解码端可以根据该量化参数进行反量化处理。

当j大于1且小于n时,先将接收到的第j层分层数据加上第三数据,并对得到的数据进行反量化处理,得到第j层反量化处理后的数据;接着将第j层反量化处理后的数据与第j-1层解码数据求和,得到第j层解码数据,并将j加1。

当j=n时,对第n层反量化处理后的数据与第n-1层解码数据求和,并对求和后的数据进行dct反变换,得到解码后的图像数据。

步骤403:显示解码后的图像数据。

得到解码后的图像数据之后,显示该解码后的图像数据。

例如,以接收到的分层数据是四层数据为例,在接收到第1层分层数据以及第三数据subnum后,先将第1层分层数据加上该第三数据subnum,然后对得到的数据进行反向量化处理,得到第1层解码数据,可以将反量化处理后的数据记为ref1;按顺序接收到第2层分层数据后,将该第2层分层数据加上subnum并进行反向量化,将反向量化后的数据与ref1求和,得到新的数据ref2;对第3层分层数据及第4层分层数据做同样的处理,对第4层分层数据处理完后可得到新的数据ref4;将最后得到的ref4进行dct反变换即可得到解码后的图像数据,即还原得到最终的显示数据。

本申请实施例提供的图像解码方法,解码端的图像解码设备可以在接收到分层数据后,按分层顺序对每层的分层数据进行解码,后面每层是在前面已解码的基础上补充了细节信息,使解码图像变得更加精细,逐层提升了图像质量,可以达到渐进式显示的效果并同时降低了码流。

基于上述图1和图4对应的实施例中所描述的图像编码方法和图像解码方法,下述为本申请装置实施例,可以用于执行本申请方法实施例。

本申请实施例提供一种图像编码设备,如图5所示,该图像编码设备50包括:量化处理模块501、差值处理模块502、分层模块503和发送模块504;

量化处理模块501用于对当前帧图像依次进行离散余弦dct变换和量化处理,得到第一图像数据;具体的,量化处理模块501可以包括分块单元、dct变换单元和量化单元;分块单元用于将当前帧图像分为多个图像块;dct变换单元用于对各图像块进行dct变换,得到dct系数值,并对该dct系数值按照从大到小的顺序依次保存;量化单元用于对dct系数值进行量化处理。

差值处理模块502用于对量化处理模块501得到的第一图像数据进行差值处理,得到第二图像数据;具体的,第一图像数据可以按照数值由大到小的顺序存储,差值处理模块502具体用于保持第一图像数据中数值最高的数据不变,从第一图像数据中数值为第二高的数据开始,按照第一图像数据的存储顺序,将每个数据的数值减去前一个数据的数值,得到第二图像数据。

分层模块503用于根据预设分层规则对差值处理模块502得到的第二图像数据进行分层,得到分层数据;

发送模块504用于将分层模块503得到的分层数据发送给解码端。

在一个实施例中,如图6所示,分层模块503可以包括获取单元5031、计算单元5032和分层单元5033。其中,

获取单元5031用于获取第一图像数据中数值最高的数据;

计算单元5032用于计算第一图像数据中数值最高的数据移位趋近于0的移位数;

分层单元5033用于根据预设分层数量n和移位数对第二图像数据进行移位和减法处理,其中n为大于1的整数。

在一个实施例中,分层单元5033具体用于在当前的分层数i小于预设分层数量n时,根据移位数对第二图像数据进行向右移位处理,得到第一数据,其中i为正整数,对第一数据进行反向移位,得到第二数据,统计第一数据中相同数据的数量最多的数据,得到第三数据,将第一数据减去第三数据,得到第i层分层数据,将第二图像数据减去第二数据,得到第四数据,并将第二图像数据更新为第四数据且将i加1;在i等于n时,将移位数置为0,并根据移位数0对第n-1层更新后的第二图像数据依次进行移位、反向移位和减法处理,得到第n层分层数据。

发送模块504具体用于将第i层分层数据及第三数据发送给解码端。

本申请实施例提供的图像编码设备,在对当前帧图像进行dct变换及量化处理后得到的第一图像数据进行分层处理前先进行差值处理,通过差值处理可以减少编码数据量,从而降低了传输的码流;在进行差值处理之后,根据预设分层数量和移位数对差值处理后得到的第二图像数据进行向右移位和减法处理,能够在对第二图像数据进行分层的同时有效减小每一层的编码数据量,从而进一步降低了传输码流的大小。

本申请实施例提供一种图像解码设备,如图7所示,该图像解码设备70包括接收模块701、解码模块702和显示模块703。其中,

接收模块701用于接收编码端发送的分层数据和该分层数据对应的第三数据,其中,第三数据为第一数据中相同数据的数量最多的数据,第一数据为根据移位数对第二图像数据进行向右移位后得到的数据,第二图像数据为编码端对当前帧图像依次进行离散余弦dct变换、量化处理和差值处理后得到的数据;

解码模块702用于根据接收模块701接收到的分层数据和第三数据依次对每层的分层数据进行解码,得到解码后的图像数据;

显示模块703用于显示解码后的图像数据。

具体的,在一个实施例中,解码模块702具体用于:当j=1时,将接收到的第1层分层数据加上第三数据,并将得到的数据进行反量化处理,得到第1层解码数据,其中,j为大于1且小于预设分层数量n的整数,j代表当前处理的层数,n为大于1的整数;当j大于1且小于n时,将接收到的第j层分层数据加上第三数据,并对得到的数据进行反量化处理,得到第j层反量化处理后的数据,将第j层反量化处理后的数据与第j-1层解码数据求和,得到第j层解码数据,并将j加1;当j=n时,对第n层反量化处理后的数据与第n-1层解码数据求和,并对求和后的数据进行dct反变换,得到解码后的图像数据。

本申请实施例提供的图像解码设备,可以在接收到分层数据后,按分层顺序对每层的分层数据进行解码,后面每层是在前面已解码的基础上补充了细节信息,使解码图像变得更加精细,逐层提升了图像质量,可以达到渐进式显示的效果并同时降低了码流。

本申请实施例还提供了另一种图像编码设备,该图像编码设备包括处理器和存储器,其中的存储器中存储有至少一条计算机指令,该计算机指令由处理器加载并执行以实现上述图1对应的实施例中所描述的图像编码方法。

本申请实施例还提供了另一种图像解码设备,该图像解码设备包括处理器和存储器,其中的存储器中存储有至少一条计算机指令,该计算机指令由处理器加载并执行以实现上述图4对应的实施例中所描述的图像编码方法。

基于上述图1对应的实施例中所描述的图像编码方法或上述图4对应的实施例中所描述的图像解码方法,本申请实施例还提供一种计算机可读存储介质,例如,非临时性计算机可读存储介质可以是只读存储器(英文:readonlymemory,rom)、随机存取存储器(英文:randomaccessmemory,ram)、cd-rom、磁带、软盘和光数据存储装置等。该存储介质上存储有计算机指令,用于执行上述图1对应的实施例中所描述的图像编码方法或上述图4对应的实施例中所描述的图像解码方法,此处不再赘述。

本领域技术人员在考虑说明书及实践这里公开的内容后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由所附的权利要求指出。

应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1