欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 编码方法及装置、解码方法及装置独创技术49938字

编码方法及装置、解码方法及装置

2021-02-12 16:16:37

编码方法及装置、解码方法及装置

  技术领域

  本发明涉及数据处理技术领域,具体而言,涉及一种编码方法及装置、解码方法及装置。

  背景技术

  相关技术中,在图像传输方面,提出了一种图像无损传输协议Vgtp协议,该Vgtp协议是一种针对桌面场景进行压缩传输的技术,如何提高压缩率对其至关重要。对这种连续画面进行压缩的基本方法是去除帧间冗余和帧内冗余,现有的Vgtp协议去除帧间冗余的方式是使用参考帧,通过图像整帧对比,实现对未出现在参考帧集合中的图像帧进行编码,但是这种整帧比较方式存在很大的弊端:整帧比较的数据量较大,导致匹配效率较低,耗费时间较长。

  针对上述的问题,目前尚未提出有效的解决方案。

  发明内容

  本发明实施例提供了一种编码方法及装置、解码方法及装置,以至少解决相关技术中在图像压缩方面,由于采用整帧比较方式,比较的数据量较大,容易导致匹配效率较低,耗费时间较长的技术问题。

  根据本发明实施例的一个方面,提供了一种编码方法,应用于编码端,包括:将图像当前帧划分为多个图像条带,其中,每个所述图像条带对应有条带特征值;将所述图像当前帧中每个图像条带的特征值分别与预设参考队列中的所有历史参考条带的特征值进行对比,得到对比结果;若所述对比结果指示所述图像当前帧中存在目标图像条带的特征值与目标历史参考条带的特征值相同,将所述目标图像条带与所述目标历史参考条带进行匹配,得到匹配结果;若所述匹配结果指示所述目标图像条带与所述目标历史参考条带匹配成功,对匹配成功的目标图像条带不进行编码;若所述匹配结果指示匹配失败,对匹配失败的所有图像条带进行编码,得到编码码流,其中,所述编码码流中携带有与图像当前帧匹配成功的所述目标历史参考条带的条带标识。

  可选地,将图像当前帧划分为多个图像条带的步骤,包括:确定所述预设参考队列中的历史参考条带的条带大小参数;基于所述历史参考条带的条带大小参数,划分所述图像当前帧,得到所述多个图像条带。

  可选地,在将图像当前帧划分为多个图像条带之后,所述编码方法还包括:获取每个所述图像条带的所有像素点,其中,每个所述像素点对应有像素值;比较每个所述像素点相邻的其它多个像素点的像素值,得到第一比较结果;若所述第一比较结果指示所述其它多个像素点的像素值均相同,且所述其它多个像素点的像素值与所述像素点的像素值不相同,则将所述像素点以及所述像素点之后的预设数量像素点确定为一个特征点;采用预设特征算法计算所述特征点的特征值。

  可选地,在采用预设特征算法计算所述特征点的特征值之后,所述编码方法还包括:确定所述图像条带中所有特征点的特征值;基于所述特征值的序号标识,组合所有特征点的特征值;对所有特征点的特征值进行哈希特征计算,得到所述图像条带的特征值。

  可选地,在将所述图像当前帧中每个图像条带的特征值分别与预设参考队列中的所有历史参考条带的特征值进行对比,得到对比结果之前,所述编码方法还包括:获取所有图像历史帧,并确定每个所述图像历史帧中的历史图像条带;计算每个历史图像条带的出现次数;基于每个历史图像条带的出现次数,筛选预设数量的历史图像条带作为历史参考条带,得到所述预设参考队列。

  可选地,筛选预设数量的历史图像条带作为历史参考条带,得到所述预设参考队列的步骤,包括:在筛选预设数量的历史图像条带作为历史参考条带之后,确定每个所述历史参考条带的条带标识、特征值和像素值;基于每个所述历史参考条带的条带标识、特征值和像素值,确定所述预设参考队列。

  可选地,将所述图像当前帧中每个图像条带的特征值分别与预设参考队列中的所有历史参考条带的特征值进行对比,得到对比结果的步骤,包括:统计所述图像当前帧中每个所述图像条带中预设宏块类型的宏块数量;若预设宏块类型的宏块数量低于预设宏块阈值,则将所述图像当前帧中每个图像条带的特征值分别与预设参考队列中的所有历史参考条带的特征值进行对比,得到对比结果。

  可选地,将所述目标图像条带与所述目标历史参考条带进行匹配,得到匹配结果的步骤,包括:将所述目标图像条带中每一特征点的像素值与所述目标历史参考条带中的像素值进行逐一匹配,得到匹配结果。

  可选地,所述预设参考队列中的所有历史参考条带划分为访问历史队列和缓存队列,其中,所述缓存队列的匹配优先级高于所述访问历史队列的匹配优先级。

  可选地,采用预设更新算法更新所述预设参考队列,其中,所述预设更新算法包括下述至少之一:先进先出算法、最近最少使用算法、最近使用次数最少算法。

  根据本发明实施例的另一方面,还提供了一种解码方法,应用于解码端,所述解码端与编码端预先建立通信连接,所述编码端执行上述任意一项所述的编码方法,所述解码方法包括:接收编码端发送的编码码流,其中,所述编码码流中携带有与图像当前帧匹配成功的目标历史参考条带的条带标识;对所述编码码流进行解码,得到初始图像数据;根据所述目标历史参考条带的条带标识,从预设参考队列中查询与所述条带标识对应的像素值;基于解码得到的初始图像数据和与所述条带标识对应的像素值,生成目标图像数据。

  根据本发明实施例的另一方面,还提供了一种编码装置,应用于编码端,包括:划分单元,用于将图像当前帧划分为多个图像条带,其中,每个所述图像条带对应有条带特征值;对比单元,用于将所述图像当前帧中每个图像条带的特征值分别与预设参考队列中的所有历史参考条带的特征值进行对比,得到对比结果;匹配单元,用于在所述对比结果指示所述图像当前帧中存在目标图像条带的特征值与目标历史参考条带的特征值相同时,将所述目标图像条带与所述目标历史参考条带进行匹配,得到匹配结果;非编码单元,用于在所述匹配结果指示所述目标图像条带与所述目标历史参考条带匹配成功时,对匹配成功的目标图像条带不进行编码;编码单元,用于在所述匹配结果指示匹配失败时,对匹配失败的所有图像条带进行编码,得到编码码流,其中,所述编码码流中携带有与图像当前帧匹配成功的所述目标历史参考条带的条带标识。

  可选地,所述划分单元包括:第一确定模块,用于确定所述预设参考队列中的历史参考条带的条带大小参数;第一划分模块,用于基于所述历史参考条带的条带大小参数,划分所述图像当前帧,得到所述多个图像条带。

  可选地,所述编码装置还包括:第一获取模块,用于在将图像当前帧划分为多个图像条带之后,获取每个所述图像条带的所有像素点,其中,每个所述像素点对应有像素值;第一比较模块,用于比较每个所述像素点相邻的其它多个像素点的像素值,得到第一比较结果;第二确定模块,用于在所述第一比较结果指示所述其它多个像素点的像素值均相同,且所述其它多个像素点的像素值与所述像素点的像素值不相同,则将所述像素点以及所述像素点之后的预设数量像素点确定为一个特征点;第一计算模块,用于采用预设特征算法计算所述特征点的特征值。

  可选地,所述编码装置还包括:第三确定模块,用于在采用预设特征算法计算所述特征点的特征值之后,确定所述图像条带中所有特征点的特征值;第一组合模块,用于基于所述特征值的序号标识,组合所有特征点的特征值;哈希计算模块,用于对所有特征点的特征值进行哈希特征计算,得到所述图像条带的特征值。

  可选地,所述编码装置还包括:第二获取模块,用于在将所述图像当前帧中每个图像条带的特征值分别与预设参考队列中的所有历史参考条带的特征值进行对比,得到对比结果之前,获取所有图像历史帧,并确定每个所述图像历史帧中的历史图像条带;第二计算模块,用于计算每个历史图像条带的出现次数;筛选模块,用于基于每个历史图像条带的出现次数,筛选预设数量的历史图像条带作为历史参考条带,得到所述预设参考队列。

  可选地,所述筛选模块包括:第一确定子模块,用于在筛选预设数量的历史图像条带作为历史参考条带之后,确定每个所述历史参考条带的条带标识、特征值和像素值;第二确定子模块,用于基于每个所述历史参考条带的条带标识、特征值和像素值,确定所述预设参考队列。

  可选地,所述对比单元包括:第一统计模块,用于统计所述图像当前帧中每个所述图像条带中预设宏块类型的宏块数量;对比模块,用于在预设宏块类型的宏块数量低于预设宏块阈值时,将所述图像当前帧中每个图像条带的特征值分别与预设参考队列中的所有历史参考条带的特征值进行对比,得到对比结果。

  可选地,所述匹配单元包括:匹配模块,用于将所述目标图像条带中每一特征点的像素值与所述目标历史参考条带中的像素值进行逐一匹配,得到匹配结果。

  可选地,所述预设参考队列中的所有历史参考条带划分为访问历史队列和缓存队列,其中,所述缓存队列的匹配优先级高于所述访问历史队列的匹配优先级。

  可选地,采用预设更新算法更新所述预设参考队列,其中,所述预设更新算法包括下述至少之一:先进先出算法、最近最少使用算法、最近使用次数最少算法。

  根据本发明实施例的另一方面,还提供了一种解码装置,应用于解码端,所述解码端与编码端预先建立通信连接,所述编码端执行上述任意一项所述的编码方法,所述解码装置包括:接收单元,用于接收编码端发送的编码码流,其中,所述编码码流中携带有与图像当前帧匹配成功的目标历史参考条带的条带标识;解码单元,用于对所述编码码流进行解码,得到初始图像数据;查询单元,用于根据所述目标历史参考条带的条带标识,从预设参考队列中查询与所述条带标识对应的像素值;生成单元,用于基于解码得到的初始图像数据和与所述条带标识对应的像素值,生成目标图像数据。

  根据本发明实施例的另一方面,还提供了一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的编码方法。

  本发明实施例中,在进行图像压缩时,先将图像当前帧划分为多个图像条带,其中,每个图像条带对应有条带特征值,将图像当前帧中每个图像条带的特征值分别与预设参考队列中的所有历史参考条带的特征值进行对比,得到对比结果,若对比结果指示图像当前帧中存在目标图像条带的特征值与目标历史参考条带的特征值相同,将目标图像条带与目标历史参考条带进行匹配,得到匹配结果,若匹配结果指示目标图像条带与目标历史参考条带匹配成功,对匹配成功的目标图像条带不进行编码,若匹配结果指示匹配失败,对匹配失败的所有图像条带进行编码,得到编码码流,其中,编码码流中携带有与图像当前帧匹配成功的目标历史参考条带的条带标识。在该实施例中,无需进行整帧比较,通过将图像当前帧拆分为多个图像条带,将各图像条带与预设的参考队列中的各历史参考条带进行匹配,若匹配成功,则无需再对该图像条带进行编码,由于当前帧包括多个图像条带,多个图像条带的匹配能够同时进行,匹配效率较高,减少耗时,从而解决相关技术中在图像压缩方面,由于采用整帧比较方式,比较的数据量较大,容易导致匹配效率较低,耗费时间较长的技术问题。

  附图说明

  此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

  图1是根据本发明实施例的一种可选的编码方法的流程图;

  图2时根据本发明实施例的一种可选的解码方法的流程图;

  图3时根据本发明实施例的一种可选的编码装置的示意图;

  图4根据本发明实施例的一种可选的解码装置的示意图。

  具体实施方式

  为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

  需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

  本发明可应用于各种电子设备中,电子设备类型包括但不限于:智能移动终端、折叠终端、PC机、平板,可以通过预设图像压缩协议Vgtp实现图像无损传输,可实现屏联网传输。针对计算机桌面的应用场景(例如,智慧城市、桌面云),由于计算机桌面的画面变化较慢,且画面变化区域的形状大小不规则,可以基于图像当前帧的图像条带(英文为tile)为单位,将图像当前帧的tile与预设的历史参考tile进行匹配,对于匹配成功的tile,无需再进行编码,这样不仅能减少编码量,降低编码码流,而且相比整帧匹配,当前帧的多个tile能够通过进行匹配工作,匹配效率较高,耗时较小。下面结合详细实施例来说明本发明。

  根据本发明实施例,提供了一种编码方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

  本发明实施例提供的一种编码方法,应用于编码端,该编码端与解码端相连接,可以在无损压缩后,传输编码码流给解码端。

  图1是根据本发明实施例的一种可选的编码方法的流程图,如图1所示,该方法包括如下步骤:

  步骤S102,将图像当前帧划分为多个图像条带,其中,每个图像条带对应有条带特征值;

  步骤S104,将图像当前帧中每个图像条带的特征值分别与预设参考队列中的所有历史参考条带的特征值进行对比,得到对比结果;

  步骤S106,若对比结果指示图像当前帧中存在目标图像条带的特征值与目标历史参考条带的特征值相同,将目标图像条带与目标历史参考条带进行匹配,得到匹配结果;

  步骤S108,若匹配结果指示目标图像条带与目标历史参考条带匹配成功,对匹配成功的目标图像条带不进行编码;

  步骤S110,若匹配结果指示匹配失败,对匹配失败的所有图像条带进行编码,得到编码码流,其中,编码码流中携带有与图像当前帧匹配成功的目标历史参考条带的条带标识。

  通过上述步骤,可以在进行图像压缩时,先将图像当前帧划分为多个图像条带,其中,每个图像条带对应有条带特征值,将图像当前帧中每个图像条带的特征值分别与预设参考队列中的所有历史参考条带的特征值进行对比,得到对比结果,若对比结果指示图像当前帧中存在目标图像条带的特征值与目标历史参考条带的特征值相同,将目标图像条带与目标历史参考条带进行匹配,得到匹配结果,若匹配结果指示目标图像条带与目标历史参考条带匹配成功,对匹配成功的目标图像条带不进行编码,若匹配结果指示匹配失败,对匹配失败的所有图像条带进行编码,得到编码码流,其中,编码码流中携带有与图像当前帧匹配成功的目标历史参考条带的条带标识。在该实施例中,无需进行整帧比较,通过将图像当前帧拆分为多个图像条带,将各图像条带与预设的参考队列中的各历史参考条带进行匹配,若匹配成功,则无需再对该图像条带进行编码,由于当前帧包括多个图像条带,多个图像条带的匹配能够同时进行,匹配效率较高,减少耗时,从而解决相关技术中在图像压缩方面,由于采用整帧比较方式,比较的数据量较大,容易导致匹配效率较低,耗费时间较长的技术问题。

  下面结合上述各步骤来详细说明本发明。

  步骤S102,将图像当前帧划分为多个图像条带,其中,每个图像条带对应有条带特征值。

  可选的,将图像当前帧划分为多个图像条带的步骤,包括:确定预设参考队列中的历史参考条带的条带大小参数;基于历史参考条带的条带大小参数,划分图像当前帧,得到多个图像条带。

  需要说明的是,图像当前帧划分的图像条带(tile),与历史参考条带的大小相关,例如,设置图像当前帧划分的图像条带与历史参考条带的大小相同,图像当前帧的图像条带大小与特征匹配的速度有关。

  例如,当单个tile较大,包含的像素值较多(包括较多宏块,每个宏块指示一个像素子框)时,一个图像帧中包括的tile数量就较少,因此,一帧图像与历史参考tile的特征匹配的速度就较快,但是,由于单个tile中包括的特征值较多,可能导致与历史参考tile的匹配成功率较低。相反的,当单个tile较小,包含的像素值较少(包括较少宏块)时,一个图像帧中包括的tile的数量就较多,因此,一帧图像与历史参考tile的特征匹配的速度就较慢,但是,由于单个tile中包括的特征值较少,使得与历史参考tile的匹配成功率较高。

  本发明实施例的图像编码可使用Vgtp协议,在划分时,可根据协议内容和编码应用实际场景划分图像条带,例如,在Vgtp协议的应用场景是办公桌面时,且宏块的大小为16*16像素点,可以将tile的大小确定为一帧中的半个宏块行,也即16x(fram_width/2),其中,width为图像帧的宽度。

  本发明实施例涉及到图像条带的特征值和预设参考队列。下面对条带特征值和预设参考队列进行详细说明。

  首先,对图像条带的特征值进行说明。

  为了降低编码量,提高编码效率,以及降低编码码流的数据量,考虑到连续的图像中存在相同图像条带的概率较大,因此,可以预设一些出现频率较高的图像条带作为历史参考条带,这样就可以在图像当前帧中的图像条带与历史参考条带匹配成功时,编码端无需对图像当前帧中的该图像条带进行编码,这样就能够降低编码量以及解码端的解码量,提高编码效率和减少编码码流。

  由于一个图像条带包含的像素值较多,为了简化图像当前帧的图像条带与历史参考条带的对比过程,可以基于图像条带中的像素点,计算图像条带的特征值。若两个图像条带的特征值相同,则可以认为这两个图像条带匹配成功,若两个图像条带的特征值不同,则可以认为这两个图像条带匹配失败。

  可选的,在将图像当前帧划分为多个图像条带之后,编码方法还包括:获取每个图像条带的所有像素点,其中,每个像素点对应有像素值;比较每个像素点相邻的其它多个像素点的像素值,得到第一比较结果;若第一比较结果指示其它多个像素点的像素值均相同,且其它多个像素点的像素值与像素点的像素值不相同,则将像素点以及像素点之后的预设数量像素点确定为一个特征点;采用预设特征算法计算特征点的特征值。

  在本发明实施例中,为了不增加编码压缩过程中的计算负担,可以使用Vgtp压缩算法中用于mv寻找所使用的特征指标作为图像条带的特征值。使用的预设特征算法可以为TCC-M算法,具体的计算方法如下:

  TCC-M算法通过像素值间的比较得到特征值。对于图像条带中的每个像素点,如果其邻域多个点(优选为四个点)的像素值相同,且该像素点与邻域多个点的像素值不同,则可以将该像素点及之后的多个像素点(以前述举例的16*16像素点为例,可以选取31个像素点),并将所有选取的像素点作为一个特征点,特征点能够包括图像条带中锐利的边缘,比如文本内容,区域边界等。

  另一种可选的,在采用预设特征算法计算特征点的特征值之后,编码方法还包括:确定图像条带中所有特征点的特征值;基于特征值的序号标识,组合所有特征点的特征值;对所有特征点的特征值进行哈希特征计算,得到图像条带的特征值。

  为了后续计算方便,可通过哈希表把任意长度的输入,通过散列算法,变成固定长度的输出。在TCC-M算法中,能够通过CRC-16,基于定义的特征点,计算出两个字节长度的特征值。

  进一步的,由于一个图像条带中通常包括多个特征点,也即包括多个特征值,为了提高匹配效率,可以将一个图像条带中的所有特征点的特征值按序组合在一起,再进行一次哈希特征计算,得到的结果作为该图像条带的特征值。例如,将图像条带中多个特征点的特征值(特征值1,特征值2,…),按顺序进行排列之后,再次使用CRC-16对队列中的各特征指标进行计算,可以得到特征值A,特征值A为该图像条带的特征值。

  下面对预设参考队列进行说明。

  在本发明实施例中,匹配单位为图像条带,一个图像帧中包括多个图像条带,且历史参考条带通常是当前帧之前的几帧甚至几千帧之前的数据。在将图像当前帧的图像条带与历史参考条带进行匹配时,需要在编码端和解码端同时建立和维护一个预设参考队列,预设参考队列包括各历史参考条带的标识(该标识可以采用序号、字母、数字等表示)、各历史参考条带的特征值以及各历史参考条带的像素值。

  可选的,在将图像当前帧中每个图像条带的特征值分别与预设参考队列中的所有历史参考条带的特征值进行对比,得到对比结果之前,编码方法还包括:获取所有图像历史帧,并确定每个图像历史帧中的历史图像条带;计算每个历史图像条带的出现次数;基于每个历史图像条带的出现次数,筛选预设数量的历史图像条带作为历史参考条带,得到预设参考队列。

  作为本发明可选的实施例,筛选预设数量的历史图像条带作为历史参考条带,得到预设参考队列的步骤,包括:在筛选预设数量的历史图像条带作为历史参考条带之后,确定每个历史参考条带的条带标识、特征值和像素值;基于每个历史参考条带的条带标识、特征值和像素值,确定预设参考队列。

  编码端的预设参考队列,用于将图像当前帧的图像条带与历史参考条带进行匹配,先匹配两个图像条带的特征值,在特征值匹配成功之后,再匹配像素值,这样可以保证匹配的准确性。同样在解码端也会设置预设参考队列,解码端的预设参考队列,可以只包括各历史参考条带的标识以及各历史参考条带的像素值,这样在得到编码码流后,通过编码码流中携带的已匹配成功的历史参考条带的标识,直接查询得到该历史参考条带的像素值,将与历史参考条带匹配成功的图像条带进行像素值恢复。

  可选的,预设参考队列中的所有历史参考条带划分为访问历史队列和缓存队列,其中,缓存队列的匹配优先级高于访问历史队列的匹配优先级。例如,按照先缓存队列的首尾再历史队列的首尾的顺序,将tile的特征值与预设的参考tile队列中的各历史参考tile的特征值进行对比,若特征值相同,则通过后续步骤,继续对比像素值;若特征值不相同,则处理流程终止。

  步骤S104,将图像当前帧中每个图像条带的特征值分别与预设参考队列中的所有历史参考条带的特征值进行对比,得到对比结果。

  编码端将图像当前帧中的各图像条带的特征值,分别与预设参考队列中的各历史参考条带的特征值进行对比;若图像条带的特征值与预设参考队列中的某一历史参考条带的特征值相同,可执行步骤S106。

  可选的,将图像当前帧中每个图像条带的特征值分别与预设参考队列中的所有历史参考条带的特征值进行对比,得到对比结果的步骤,包括:统计图像当前帧中每个图像条带中预设宏块类型的宏块数量;若预设宏块类型的宏块数量低于预设宏块阈值,则将图像当前帧中每个图像条带的特征值分别与预设参考队列中的所有历史参考条带的特征值进行对比,得到对比结果。

  在本实施例中,首先,统计图像当前帧的各图像条带中,宏块类型包括但不限于:unchangeMB、mvMB、leftcopyMB、rightcopyMB,统计各类型宏块的数量。设置预设宏块阈值时,可以根据各图像条带的宏块数量自行设置,例如设置预设宏块阈值为宏块总数一半,若统计的上述类型的宏块数量小于该图像条带中宏块总数的一半,则继续计算该图像条带的特征值,以便将该图像条带进行特征匹配;若统计的上述类型的宏块数量大于或等于该图像条带中宏块总数的一半,则不将该图像条带进行特征匹配。

  步骤S106,若对比结果指示图像当前帧中存在目标图像条带的特征值与目标历史参考条带的特征值相同,将目标图像条带与目标历史参考条带进行匹配,得到匹配结果。

  可选的,将目标图像条带与目标历史参考条带进行匹配,得到匹配结果的步骤,包括:将目标图像条带中每一特征点的像素值与目标历史参考条带中的像素值进行逐一匹配,得到匹配结果。

  在本步骤中,若图像当前帧的图像条带与预设参考队列中的历史参考条带的特征值相同,则将该图像条带与该历史参考条带进行逐像素对比,其中,历史参考条带的像素值保存在预设的预设参考队列中。若两个图像条带的像素均相同,则确定该图像条带与该历史参考条带匹配成功;若两个图像条带的像素存在不同,则确定该图像条带与该历史参考条带匹配失败。

  步骤S108,若匹配结果指示目标图像条带与目标历史参考条带匹配成功,对匹配成功的目标图像条带不进行编码;

  步骤S110,若匹配结果指示匹配失败,对匹配失败的所有图像条带进行编码,得到编码码流,其中,编码码流中携带有与图像当前帧匹配成功的目标历史参考条带的条带标识。

  预设参考队列中的历史参考条带的标识,在编码端和解码端均为同步更新的,这样,解码端可以根据编码码流携带的历史参考条带的标识,从解码端预设参考队列队列中,找到该历史参考条带,以便基于该历史参考条带的像素值,生成完整的图像。

  可选的,采用预设更新算法更新预设参考队列,其中,预设更新算法包括下述至少之一:先进先出算法、最近最少使用算法、最近使用次数最少算法。

  预设参考队列可理解一个参考条带的数据库,该数据库可采用线性表的存储方式。数据库保存着所有可能被参考的历史参考条带的特征值及各历史参考条带的原始像素值。该数据库的基本作用:数据插入,数据删除,数据查找。预设参考队列需要根据各历史参考条带被参考的频率,实时调整编解码端的参考条带队列中,各个历史参考条带在预设参考队列中的位置。这样使得图像当前帧的图像条带,在预设参考队列中能够更快的查找到所匹配的历史参考条带。

  在本发明实施例,预设参考队列中的历史参考条带的总数可以设置为4帧参考条带的总数。预设参考队列中的历史参考条带的数量越多,查找速度越慢,占用资源越大,但匹配成功率越高。预设参考队列中的历史参考条带的数量越小,查找速度越快,占用资源越小,但匹配成功率越低。通常情况下,1920x1080的视频帧,可以将预设参考队列中的历史参考条带的数量设置为544。

  预设参考队列的更新策略:

  由于历史参考条带是通过队列存储的,在进行特征匹配时使用的是轮询的方法。为了提高命中率和命中速度,需要对预设参考队列进行实时更新。

  主要通过FIFO、LFU、LRU-K这三种策略的配合使用,实现对预设参考队列的更新。

  FIFO:先进先出,最先进来的数据先淘汰。

  LFU:最近最少使用算法,也就是根据访问的历史记录来淘汰,把历史记录最远的淘汰掉。其核心思想是“如果一个数据在最近一段时间内使用次数很少,那么在将来一段时间内被使用的可能性也很小”。

  LRU-K最近使用次数最少算法,淘汰使用次数最少的页面,按照访问次数进行排序,淘汰访问次数最少的,访问次数一样的就按访问时间来。其核心思想是“如果数据过去被访问多次,那么将来被访问的频率也更高”。

  为了完成参考队列的更新,需要将预设的4帧数据量的历史参考条带平均分成两个队列,访问历史队列和缓存队列。每次匹配均从缓存队列的头开始到结尾,然后再从访问历史队列的头开始到结尾。具体步骤包括:

  步骤11,将预设的4帧数据量的历史参考条带加入访问历史队列。

  需要说明的是,访问历史队列中的历史参考条带的排序顺序,是按照先进先出的顺序排序。

  步骤12,每当历史参考条带的特征值与图像当前帧的图像条带的特征值对比相同时,将该历史参考条带的访问次数加1,其中,所有历史参考条带的访问次数的初始值均为0。

  步骤13,判断访问历史队列中的历史参考条带的访问次数,是否大于预设次数阈值,预设次数阈值可以为3;若为是,则执行步骤15,若为否,则执行步骤11。

  步骤14,从访问历史队列中,删除访问次数小于或等于预设次数阈值(LRU),且进入队列的时间较早的历史参考条带(FIFO)。

  步骤15,将访问历史队列中,访问次数等于或大于预设次数阈值的历史参考条带,移到缓存队列中。

  步骤16,缓存队列中的历史参考条带,先按访问次数排序,对于访问次数相同的tile,再按入队时间排序。

  可以理解的,每当有新的历史参考条带加入,或有历史参考条带的访问次数增加时,缓存队列中的历史参考条带均需要重新排序。

  步骤17,在缓存数据队列和访问历史队列中的历史参考条带的数量相同之后,当有历史参考条带从访问历史队列移动到缓存数据队列中时,删除位于缓存数据队列末尾的历史参考条带,也即访问次数最小,且入队时间较早的历史参考条带。

  这样可以保证缓存数据队列中的历史参考条带的个数恒定。

  需要说明的是,会有新的历史参考条带加入访问历史队列。

  具体的,在对图像当前帧的图像条带进行编码时,可以与前一帧的图像条带进行对比,若图像当前帧的图像条带可以参考前一帧中的某个图像条带,则可以将前一帧的该图像条带作为新的历史参考条带,加入访问历史队列。

  下面对解码端实施的解码方法进行说明。

  图2时根据本发明实施例的一种可选的解码方法的流程图,应用于解码端,解码端与编码端预先建立通信连接,编码端执行上述任意一项的编码方法,如图2所示,该解码方法包括:

  步骤S201,接收编码端发送的编码码流,其中,编码码流中携带有与图像当前帧匹配成功的目标历史参考条带的条带标识;

  步骤S203,对编码码流进行解码,得到初始图像数据;

  步骤S205,根据目标历史参考条带的条带标识,从预设参考队列中查询与条带标识对应的像素值;

  步骤S207,基于解码得到的初始图像数据和与条带标识对应的像素值,生成目标图像数据。

  上述步骤,可以在解码时,先接收编码端发送的编码码流,其中,编码码流中携带有与图像当前帧匹配成功的目标历史参考条带的条带标识,对编码码流进行解码,得到初始图像数据,根据目标历史参考条带的条带标识,从预设参考队列中查询与条带标识对应的像素值,基于解码得到的初始图像数据和与条带标识对应的像素值,生成目标图像数据。在该实施例中,解码端可以在接收到编码码流之后,对编码码流进行解码,得到图像数据,根据获取到的历史参考条带的标识,从预设参考队列中查找历史参考条带的标识对应的像素值,解码端基于查找到的历史参考条带的标识对应的像素值和解码得到的图像数据,生成完整的图像数据,这样解码端与编码端配合,无需进行整帧比较,多个图像条带的匹配能够同时进行,匹配效率较高,减少耗时,从而解决相关技术中在图像压缩方面,由于采用整帧比较方式,比较的数据量较大,容易导致匹配效率较低,耗费时间较长的技术问题。

  下面结合与方法对应的实施装置对本发明进行详细说明。

  图3时根据本发明实施例的一种可选的编码装置的示意图,应用于编码端,如图3所示,编码装置包括:划分单元31、对比单元33、匹配单元35、非编码单元37、编码单元39,其中,

  划分单元31,用于将图像当前帧划分为多个图像条带,其中,每个图像条带对应有条带特征值;

  对比单元33,用于将图像当前帧中每个图像条带的特征值分别与预设参考队列中的所有历史参考条带的特征值进行对比,得到对比结果;

  匹配单元35,用于在对比结果指示图像当前帧中存在目标图像条带的特征值与目标历史参考条带的特征值相同时,将目标图像条带与目标历史参考条带进行匹配,得到匹配结果;

  非编码单元37,用于在匹配结果指示目标图像条带与目标历史参考条带匹配成功时,对匹配成功的目标图像条带不进行编码;

  编码单元39,用于在匹配结果指示匹配失败时,对匹配失败的所有图像条带进行编码,得到编码码流,其中,编码码流中携带有与图像当前帧匹配成功的目标历史参考条带的条带标识。

  上述编码装置,可以在进行图像压缩时,先通过划分单元31将图像当前帧划分为多个图像条带,其中,每个图像条带对应有条带特征值,通过对比单元33将图像当前帧中每个图像条带的特征值分别与预设参考队列中的所有历史参考条带的特征值进行对比,得到对比结果,通过匹配单元35在对比结果指示图像当前帧中存在目标图像条带的特征值与目标历史参考条带的特征值相同时,将目标图像条带与目标历史参考条带进行匹配,得到匹配结果,通过非编码单元37在匹配结果指示目标图像条带与目标历史参考条带匹配成功,对匹配成功的目标图像条带不进行编码,通过编码单元39在匹配结果指示匹配失败时,对匹配失败的所有图像条带进行编码,得到编码码流,其中,编码码流中携带有与图像当前帧匹配成功的目标历史参考条带的条带标识。在该实施例中,无需进行整帧比较,通过将图像当前帧拆分为多个图像条带,将各图像条带与预设的参考队列中的各历史参考条带进行匹配,若匹配成功,则无需再对该图像条带进行编码,由于当前帧包括多个图像条带,多个图像条带的匹配能够同时进行,匹配效率较高,减少耗时,从而解决相关技术中在图像压缩方面,由于采用整帧比较方式,比较的数据量较大,容易导致匹配效率较低,耗费时间较长的技术问题。

  可选的,划分单元包括:第一确定模块,用于确定预设参考队列中的历史参考条带的条带大小参数;第一划分模块,用于基于历史参考条带的条带大小参数,划分图像当前帧,得到多个图像条带。

  另一种可选的,编码装置还包括:第一获取模块,用于在将图像当前帧划分为多个图像条带之后,获取每个图像条带的所有像素点,其中,每个像素点对应有像素值;第一比较模块,用于比较每个像素点相邻的其它多个像素点的像素值,得到第一比较结果;第二确定模块,用于在第一比较结果指示其它多个像素点的像素值均相同,且其它多个像素点的像素值与像素点的像素值不相同,则将像素点以及像素点之后的预设数量像素点确定为一个特征点;第一计算模块,用于采用预设特征算法计算特征点的特征值。

  可选的,编码装置还包括:第三确定模块,用于在采用预设特征算法计算特征点的特征值之后,确定图像条带中所有特征点的特征值;第一组合模块,用于基于特征值的序号标识,组合所有特征点的特征值;哈希计算模块,用于对所有特征点的特征值进行哈希特征计算,得到图像条带的特征值。

  在本发明实施例中,编码装置还包括:第二获取模块,用于在将图像当前帧中每个图像条带的特征值分别与预设参考队列中的所有历史参考条带的特征值进行对比,得到对比结果之前,获取所有图像历史帧,并确定每个图像历史帧中的历史图像条带;第二计算模块,用于计算每个历史图像条带的出现次数;筛选模块,用于基于每个历史图像条带的出现次数,筛选预设数量的历史图像条带作为历史参考条带,得到预设参考队列。

  可选的,筛选模块包括:第一确定子模块,用于在筛选预设数量的历史图像条带作为历史参考条带之后,确定每个历史参考条带的条带标识、特征值和像素值;第二确定子模块,用于基于每个历史参考条带的条带标识、特征值和像素值,确定预设参考队列。

  作为本发明可选的实施例,对比单元包括:第一统计模块,用于统计图像当前帧中每个图像条带中预设宏块类型的宏块数量;对比模块,用于在预设宏块类型的宏块数量低于预设宏块阈值时,将图像当前帧中每个图像条带的特征值分别与预设参考队列中的所有历史参考条带的特征值进行对比,得到对比结果。

  可选的,匹配单元包括:匹配模块,用于将目标图像条带中每一特征点的像素值与目标历史参考条带中的像素值进行逐一匹配,得到匹配结果。

  另一种可选的,预设参考队列中的所有历史参考条带划分为访问历史队列和缓存队列,其中,缓存队列的匹配优先级高于访问历史队列的匹配优先级。

  可选的,采用预设更新算法更新预设参考队列,其中,预设更新算法包括下述至少之一:先进先出算法、最近最少使用算法、最近使用次数最少算法。

  上述的解码装置还可以包括处理器和存储器,上述划分单元31、对比单元33、匹配单元35、非编码单元37、编码单元39等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。

  上述处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来对待传输的图像当前帧进行编码,并将编码码流传输至解码装置。

  上述存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。

  图4根据本发明实施例的一种可选的解码装置的示意图,应用于解码端,解码端与编码端预先建立通信连接,编码端执行上述任意一项的编码方法,如图4所示,该解码装置可以包括:接收单元41,解码单元43,查询单元45,生成单元47,其中

  接收单元41,用于接收编码端发送的编码码流,其中,编码码流中携带有与图像当前帧匹配成功的目标历史参考条带的条带标识;

  解码单元43,用于对编码码流进行解码,得到初始图像数据;

  查询单元45,用于根据目标历史参考条带的条带标识,从预设参考队列中查询与条带标识对应的像素值;

  生成单元47,用于基于解码得到的初始图像数据和与条带标识对应的像素值,生成目标图像数据。

  上述解码装置,可以在解码时,先通过接收单元41接收编码端发送的编码码流,其中,编码码流中携带有与图像当前帧匹配成功的目标历史参考条带的条带标识,通过解码单元43对编码码流进行解码,得到初始图像数据,通过查询单元45根据目标历史参考条带的条带标识,从预设参考队列中查询与条带标识对应的像素值,通过生成单元47基于解码得到的初始图像数据和与条带标识对应的像素值,生成目标图像数据。在该实施例中,解码端可以在接收到编码码流之后,对编码码流进行解码,得到图像数据,根据获取到的历史参考条带的标识,从预设参考队列中查找历史参考条带的标识对应的像素值,解码端基于查找到的历史参考条带的标识对应的像素值和解码得到的图像数据,生成完整的图像数据,这样解码端与编码端配合,无需进行整帧比较,多个图像条带的匹配能够同时进行,匹配效率较高,减少耗时,从而解决相关技术中在图像压缩方面,由于采用整帧比较方式,比较的数据量较大,容易导致匹配效率较低,耗费时间较长的技术问题。

  根据本发明实施例的另一方面,还提供了一种电子设备,包括:处理器;以及存储器,用于存储处理器的可执行指令;其中,处理器配置为经由执行可执行指令来执行上述任意一项的编码方法。

  本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:将图像当前帧划分为多个图像条带,其中,每个图像条带对应有条带特征值;将图像当前帧中每个图像条带的特征值分别与预设参考队列中的所有历史参考条带的特征值进行对比,得到对比结果;若对比结果指示图像当前帧中存在目标图像条带的特征值与目标历史参考条带的特征值相同,将目标图像条带与目标历史参考条带进行匹配,得到匹配结果;若匹配结果指示目标图像条带与目标历史参考条带匹配成功,对匹配成功的目标图像条带不进行编码;若匹配结果指示匹配失败,对匹配失败的所有图像条带进行编码,得到编码码流,其中,编码码流中携带有与图像当前帧匹配成功的目标历史参考条带的条带标识。

  上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

  在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

  在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

  所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

  另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

  所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

  以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

《编码方法及装置、解码方法及装置.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)