数据编码、解码方法及装置与流程
未命名
09-24
阅读:74
评论:0
1.本公开涉及电子信息技术领域,尤其涉及数据编码、解码方法和装置。
背景技术:
2.为了提高图像编码及解码的效率,会通过参考帧节省编码或者解码所使用的资源。然而现有技术中,在编码处理过程中所使用的参考帧是以全帧为单位的,而且是使用残差的方式编码,这种方式存储的历史信息将比较少,大幅降低了图像编码解码的效率。
技术实现要素:
3.本公开实施例提供一种数据编码、解码方法及装置,能够解决现有数据编码解码处理过程中无法高效利用参考帧,从而造成图像编码、解码效率的问题。所述技术方案如下:
4.根据本公开实施例的第一方面,提供一种数据编码方法,该方法包括:
5.获取当前宏块及当前宏块的目标位置,所述当前宏块为初始图像所中的宏块,所述初始图像至少根据采集显示设备的显示图像生成;
6.根据所述当前宏块的目标位置,依次遍历参考池中每个虚拟参考片中目标位置所匹配的虚拟参考帧,所述参考池包括m个虚拟参考片,每个虚拟参考片包括n个虚拟参考帧,所述虚拟参考帧是根据历史编码数据生成的;
7.若在所述参考池中查找到与当前宏块相匹配的目标虚拟参考帧,则根据所述目标虚拟参考帧,完成所述当前宏块的编码处理。
8.在一个实施例中,该方法中根据所述目标虚拟参考帧,完成所述当前宏块的编码处理,包括:
9.获取所述目标虚拟参考帧的索引信息,所述索引信息用于索引预设参考帧的存储信息;
10.根据所述索引信息标记所述当前宏块,以使得根据所述预设参考帧,完成当前宏块的编码处理。
11.在一个实施例中,该方法还包括:
12.若在参考池中未查找到与当前宏块所匹配的目标参考宏块,则根据当前宏块和当前宏块的目标位置,在参考池中更新虚拟参考帧;
13.标记所述当前宏块为变化宏块,并根据所述当前宏块的宏块类型,编码处理所述当前宏块。
14.在一个实施例中,该方法在参考池中更新虚拟参考帧包括:
15.获取参考池中已占用的虚拟参考片的位置p;
16.若所述虚拟参考帧片的位置p不是参考池中最后一帧的位置,则在第p+1位置所匹配的虚拟参考片中根据当前宏块更新虚拟参考帧。
17.在一个实施例中,该方法在第p+1中的目标位置处根据当前宏块更新参考宏块,包
括:
18.获取参考池中当前已占用虚拟参考帧的数量;
19.若当前已经占用参考宏块的数量未超过预设值,则在第p+1中的目标位置处根据当前宏块更新参考宏块。
20.若当前已经占用参考宏块的数量已超过预设值,则判断p+1处的位置是否为最后一帧;若不是最后一帧,则在p+2处的目标位置存储参考宏块。
21.在一个实施例中,该方法还包括:
22.若当前序列中初始图像已完成编码处理,但是参考池中的参考帧仍有闲置空间,则根据当前参考池中虚拟参考帧的使用频率,更新参考池中的虚拟参考帧。
23.本实施例提供一种数据编码方法,该方法通过多组历史数据进行编码处理,获取一帧图像之后,将当前图像帧以宏块为单位依次与参考池中多个参考帧中每个虚拟参考帧对应位置上的宏块进行比对,如果比对到数据完全相同的宏块,则将当前宏块确定为不变宏块,并记录当前虚拟参考帧的编号作为该宏块的编码数据;如果没有比对到数据完全相同的宏块,则将相应宏块确定为非不变宏块,对于非不变宏块来说,则需要根据相应宏块的宏块类型,去采用对应的编码算法对相应宏块进行编码。最后,将不变宏块和非不变宏块的编码数据融合成码流后,发送给解码端。
24.根据本公开实施例的第二方面,提供一种数据解码方法,该方法包括:
25.获取目标数据,所述目标数据用于指示初始图像编码中的任一宏块生成的码流数据和标识信息,所述初始图像包括不变宏块和变化宏块;
26.解析所述目标数据,若目标数据指示为不变宏块,则根据所述标识信息,在参考池中查找到目标参考帧,所述参考池包括m个虚拟参考片,每个虚拟参考片包括n个虚拟参考帧,所述虚拟参考帧是根据历史编码数据生成的;
27.根据所述目标参考帧,解码处理所述目标数据。
28.本实施例提供一种数据编码方法,该方法解析编码端发来的码流,将其划分为宏块码流为单位。根据宏块的不同情况来进行解码:针对不变宏块,则直接根据宏块码流中包含的虚拟参考帧号从对应虚拟参考帧中相应的宏块位置中读取出像素数据,然后将读取出的像素数据拷贝到重建帧中对应的宏块位置上,作为该宏块的解码数据。针对于变化宏块,则确定变化宏块的类型进行解码处理,对于图像宏块或者文字宏块则采用对应的解码算法对相应的宏块码流进行解码得到像素数据,将所有得到的像素数据按照其宏块位置拼接完成后,得到最终重建帧数据,也就是解码数据。本技术实施例的第三个方面,提供了一种数据编码装置,用于实现如上任一项数据编码方法的步骤。
29.本技术实施例的第四个方面,提供了一种数据解码装置,用于实现如上任一项数据解码方法的步骤。
30.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
31.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
32.图1是本公开实施例提供的一种数据处理系统的框架图;
33.图2是本公开实施例提供的一种数据编码方法的流程图1;
34.图3a是本公开实施例提供的一种数据编码方法中的处理示意图1;
35.图3b是本公开实施例提供的一种数据编码方法中的处理示意图2;
36.图3c是本公开实施例提供的一种数据编码方法中的处理示意图3;
37.图3d是本公开实施例提供的一种数据编码方法中的处理示意图4;
38.图4是本公开实施例提供的一种数据编码方法的流程图2;
39.图5是本公开实施例提供的一种数据解码方法的流程图;
40.图6是本公开实施例提供的一种数据编码装置的结构图;
41.图7是本公开实施例提供的一种数据编码装置的结构图。
具体实施方式
42.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
43.现有技术中,在编码处理屏幕场景中的图像时,因屏幕场景的特征,无法高效利用历史编码数据导致编码效率低。其中,屏幕场景指的是图像的内容是计算机合成的,而非自然摄像机拍摄所得,屏幕场景中的的特征包括:图像中多个图像宏块是包括多块像素相同的区域、高亮区域,变化区域,轧空变化区域包括非常细微的线条,常常会出现细至只有一两个像素宽的线条。现有技术在利于历史参考数据进行编码处理时所采用的策略包括:基于历史编码数据获取一个或多个参考帧(i帧),参考帧是当前帧(p帧,非参考帧)之前的某一个图像帧,也可以是多个图像帧,每一个参考帧与真实存在过的某一帧图像数据相同。在编码处理当前帧图像时,可以将当前帧中每一个宏块与参考帧中相同位置的宏块进行比对,如果有相同的,则标记当前宏块为不变宏块,则不需要对宏块内的数据进行编码,而是直接引用参考帧中的宏块编号即可,对于这样的宏块在解码时,则只需要根据编号从参考帧中找到相应宏块内容拷贝过来即可;如果没有查找到与当前宏块相匹配的参考帧,即,参考帧中没有任何宏块内容可直接引用,因此需要确定出当前宏块的类型,直接根据适当的编码方式对宏块本身的数据进行编码。上述的编码策略在针对屏幕场景中的图像,在相同的资源尤其是内存占用情况下,能够存储的历史信息将比较少,不能最大程度的利用屏幕图像的特点。
44.基于上述的数据编码方法因无法高效利用历史数据,导致编码效率降低的问题,本实施例提供一种数据编码方法,该方法通过多组历史数据进行编码处理,获取一帧图像之后,将当前图像帧以宏块为单位依次与参考池中多个参考帧中每个虚拟参考帧对应位置上的宏块进行比对,如果比对到数据完全相同的宏块,则将当前宏块确定为不变宏块,并记录当前虚拟参考帧的编号作为该宏块的编码数据;如果没有比对到数据完全相同的宏块,则将相应宏块确定为非不变宏块,对于非不变宏块来说,则需要根据相应宏块的宏块类型,去采用对应的编码算法对相应宏块进行编码。最后,将不变宏块和非不变宏块的编码数据融合成码流后,发送给解码端。
45.本方案主要描述的是屏幕图像数据编码装置的多片参考的方案。
46.本实施所提供的数据编码解码方法利用多参考帧,在使用帧间预测编码时,可以同时参考多个参考帧,但是这些参考帧并不是以全帧为单位组织和保存的,从而不仅仅能够提高编码的准确率,也能够降低处理参考帧的资源空间,实现了提高编码的效率。
47.如上述阐述的屏幕图像特性,即屏幕图像常常出现大部分区域无变化,只有很小一部分区域持续变化,例如一个网页的大部分都是静止的,只有一片广告区域在来回切换不同的广告内容。如果将每帧都作为一个整体保存为参考帧,固然可以实现多参考帧功能,但是相同的区域将会保存多份,浪费了用于存储参考帧像素的内存区域,那么能够存储的参考帧数目也比较少,那么对于变化的广告区域,能够存储的历史信息也很少。本技术实施例中采用了分片参考和存储的方案后,对于相同的部分仅存储1份,变化的部分则利用未用到的内存尽可能多的存储,更有效的利用了参考帧空间,对于网页广告的例子,就意味着对于变化的广告区域,将存储更多的历史信息,将会提高图像编码效率。
48.以下对本技术实施例提供的数据传输方法的应用环境作简要说明:
49.请参见图1,本技术实施例提供的一种数据编码解码方法应用于数据处理系统,该系统包括编码设备101和解码设备102,编码设备101基于多帧参考数据编码处理原始数据,生成目标数据,并向解码设备102发送,解码设备102解码根据参考帧进行解码处理。
50.上述编码设备101包括图像采集模块、宏块分析模块、文字宏块编码模块、图像编码模块、虚拟参考帧管理模块、参考片缓存池和参考片管理模块。
51.上述的图像采集模块,用于根据预设采集规则,采集服务器远端的屏幕画面,其中,采集规则包括采集的帧率和采集的时间;
52.上述的宏块分析模块,用于在采集到的一帧图像后,对每个宏块进行分析,确定当前宏块的类型,如划分为文字类型的宏块或者图像类型的宏块;
53.在区分完毕宏块类型后,再在虚拟参考帧管理模块中查找虚拟参考帧中是否有相同位置的历史宏块和当前宏块内容一样的,若有,则改判其为不变宏块并记录虚拟参考帧号;若无,则维持其文字宏块或者图像宏块的分类属性;
54.上述的文字宏块编码模块,用于编码处理文字类型的宏块;
55.上述的图像宏块编码模块,用于编码处理图像类型的宏块;
56.上述的虚拟参考帧管理模块,管理64个虚拟参考帧,循环使用。每当编完一帧图像,都需要申请一个新的虚拟参考帧对象,里面挂接上真正具有内存资源的参考片。虚拟参考帧是上述宏块分析模块进行不变宏块搜索和比较的对象;
57.上述的参考片缓存池,申请并维护了m个参考片空间。虽然虚拟参考帧管理模块是参考帧,但是虚拟的参考帧并不具有内存空间,它只是一个引用与组织者,真正存储历史参考像素数据的是参考片。参考片均在空间中维护,它也是采用循环回收使用的机制;
58.上述的参考片管理模块,管理参考片缓存池中的参考片资源,使得参考片被循环使用;
59.上述的码流融合模块,将各种类型宏块编码出来的码流进行融合拼接,形成全帧的码流,发送到解码端。
60.上述的解码设备102包括:码流解析模块、文字宏块解码模块、参考片管理模块、图像宏块解码模块、
61.上述的码流解析模块,用于解析编码端发来的码流,将其划分为宏块码流为单位;
62.上述的文字宏块解码模块,用于解码处理文字宏块的码流为原始像素数据;
63.上述的虚拟参考帧管理模块,工作方式同编码端的虚拟参考帧管理模块,此处不再赘述;
64.上述的图像宏块解码模块,用于解码处理图像类型的宏块的码流为原始像素数据;
65.上述的参考片管理模块,工作方式同编码端的参考片管理模块,此处不再赘述;
66.上述的参考片缓存池,与同编码端的参考片缓存池,此处不再赘述;
67.上重建帧生成,如果宏块类型是不变宏块,则将码流中指示的虚拟参考帧号从码流中读出,并调用虚拟参考帧管理模块从指定的虚拟参考帧中读取该位置的宏块的像素数据,拷贝到当前帧该位置的宏块解码像素数据区中,完成不变宏块的解码;对于文字宏块或图像宏块,则读取图像宏块解码模块和文字宏块解码模块的输出内容,最终将所有宏块解码出来的像素数据进行拼接,形成完整的重建帧,即解码出来的帧。
68.请参见图2,以下实施例以上述编码设备为执行主体,将本技术实施例提供的方法应用于基于多帧参考数据进行编码处理为例进行具体说明。本技术实施例提供的数据编码方法包括如下步骤201-步骤203:
69.步骤201、获取当前宏块及当前宏块的目标位置。
70.所述所述当前宏块为初始图像所包括的至少一个宏块中的一块,目标位置用于指示当前宏块位于初始图像中的位置信息。
71.本技术实施例中初始图像可以是采集服务器端的屏幕图像生成的图像,其中,数据编码装置中的图像采集模块可实时按照固定帧率采集服务器端的屏幕画面,得到实时采集到的多屏幕图像。
72.当前帧图像可包括屏幕图像中展示的首帧图像和非首帧图像。屏幕图像中展示的首帧图像为图像采集模块采集到的第一帧的屏幕画面,屏幕图像中展示的非首帧图像为图像采集模块采集到的第二帧以及第二帧之后的多帧的屏幕画面。在对当前帧图像进行编码时,可针对当前帧图像中每一宏块进行编码,得到当前帧图像的编码结果。
73.步骤202、根据所述当前宏块的目标位置,依次遍历参考池中每个虚拟参考片中目标位置所匹配的虚拟参考帧。
74.所述参考池包括m个虚拟参考片,每个虚拟参考片包括n个虚拟参考帧,所述虚拟参考帧是根据历史编码数据生成的,虚拟参考帧与真实的参考帧之间存在映射关系,即参考片和该参考片在全帧中的位置做出了一个映射,间接的也就将参考片中的每个宏块和该宏块在全帧中的位置做的映射,从而能够更进一步的节省处理资源。
75.此处提及的参考片,并不体现每个宏块在帧内的位置。而在编码第1帧图像时,需要将每个宏块和历史编码数据(之前编码处理过的图像)的相同位置的宏块进行比较。
76.示例性的,本实施例采取16x16像素的方块为宏块大小,采用的图像分辨率为1920x1080,将全帧图像平均的划分为16个参考片。图3a(图3a中不清楚的部分与本实施例的方案无关)给出了将1帧画面划分为16个参考片,其中每个虚线隔开的部分即为参考片。
77.参考片缓存池中申请4个参考帧的空间,一个空间存储16个参考片,即4*16=64个参考片的空间。图3b展示了参考片缓存池中的64个参考片空间,其中的数字1~64是每个参
考片空间的序号,每个空间内存储的内容会发生变化,但序号不变,序号唯一标记了每个参考片对应的存储空间。
78.对应于64个参考片资源,设定了64个虚拟参考帧。虚拟参考帧的数量和参考片空间的数量可设置相等,虚拟参考帧并不占用内存资源。每个虚拟参考帧的尺寸和实际编码帧完全相同,其也可被划分为16个参考片区,划分方法也和实际编码帧相同。参考片和虚拟参考帧都是循环使用的,即当第64个被使用后,下一次使用的即是第1个。
79.步骤203、若查找到与当前宏块相匹配的目标虚拟参考帧,则根据所述目标参考帧,完成所述当前宏块的编码处理。
80.上述步骤中根据所述目标参考帧及目标参考宏块,完成所述当前宏块的编码处理,包括:
81.获取所述目标参考帧的索引信息;
82.根据所述索引信息标记所述当前宏块,以使得根据所述索引信息所匹配的预设参考帧,完成当前宏块的编码处理。
83.本技术实施例中在编码处理当前帧的时候,根据参考池中的虚拟参考帧确定当前帧是否为不变宏块,若是不变宏块则根据虚拟参考帧编码处理当前帧,若是变化宏块,则可以根据当前帧的类型进行编码处理,在编码处理当前宏块后,会继续处理下一个宏块,直至处理完成初始图像中的所有宏块,最后可将各种类型宏块编码出来的码流进行融合拼接,形成全帧的码流,发送到解码端进行解码操作。例如,在当前宏块为文字宏块时,采用如调色板量化或huffman熵编码的方式进行编码,便于保留图像细节;在确定首当前宏块为图像宏块时,采用如dct变换等方式进行编码,便于在图像质量较高的情况下维持较低的码流。
84.本技术实施例中在当前宏块为变化宏块的情况下,编码处理当前宏块后,还包括:更新虚拟参考帧,虚拟参考帧管理模块从虚拟参考帧池中以循环复用的方式调取一个新的虚拟参考帧对象,将当前帧中存在新出现的宏块的那些参考片区域,更新到虚拟参考帧对象中,更新的时候,实际上是从参考片池中调取参考片空间,放到参考片中,然后再将参考片映射到虚拟参考帧对象上。
85.本实施例提供的图像编码方法,属于多参考帧范畴的技术,即在编码1帧图像时,可同时参考多个历史上编过的帧的画面,便于更好的利用屏幕图像帧间的特点,在同样的内存资源占用情况下保存更多的历史信息,历史信息存储的越多,在编1帧画面时降低码流的能力就越强。将全帧画面划分为n个参考片,n的取值最大可以为1帧中全部宏块数量的值,最小为1。也就是说,参考片的大小最大为全帧画面的分辨率,最小为1个宏块的大小,宏块为数据编码装置编码的最基本单元。
86.本实施例能够利用屏幕图像中帧间常常出现大片完全不变的区域的特点,最大程度的利用内存资源,存储更多、更久远的历史信息,为编码帧提供了更多的参考信息,从而降低了码流,尤其适用于图像只有局部变化的远程办公场景。
87.在本技术的一个可选实施例中,上述步骤202在依次遍历参考池中每个虚拟参考片中目标位置所匹配的虚拟参考帧,之前还包括:
88.判断当前宏块是否为首帧图像,若是,则根据首帧图像生成参考池中的参考帧,具体的包括:确定采集到的当前帧图像为屏幕图像中展示的首帧图像,首帧图像中包括多个宏块,每个宏块大小相同;基于首帧图像中每个宏块的所属类型,确定每个宏块对应的编码
方式;基于每个宏块对应的编码方式,对首帧图像进行编码,得到首帧图像的编码码流。
89.参见图3a给出的示例画面,在当前帧图像为屏幕图像中展示的首帧图像时,首帧图像中所有的宏块都是新的,在进行编码时,所有的宏块都可采用帧内的形式进行编码。
90.首帧图像可被划分为多个参考片,每个参考片中包括多个宏块,对采集到的首帧图像进行编码之后,本实施例方法还可以包括:
91.基于首帧图像中参考片与宏块的对应关系,将首帧图像编码后的每个参考片的像素数据存储至参考片缓存池中,参考片缓存池用于存储首帧图像中多个参考片的区域像素;基于首帧图像的编码结果生成第一虚拟参考帧,第一虚拟参考帧对应有首帧图像中每个参考片的标识索引。
92.其中,在编码完首帧图像(此帧称第1帧)后,由于全部16个参考片位置全部都存在新的宏块内容,因此将这16个区域的像素全部保存到参考片缓存池中,将占用图3b中序号为1~16的参考片存储区。
93.本实施例中展示的画面上用斜体字标出的1~16,可理解为这16个参考片的内容都是新的,将全部存储到参考片存储区中。图3b中的参考片存储区是真正拥有内存资源的,可用来存储像素数据的。
94.通过参考池存储多帧参考片,是为了更好的利用屏幕图像帧间的特点,在同样的内存资源占用情况下保存更多的历史信息,历史信息存储的越多,在编1帧画面时降低码流的能力就越强。
95.请参考附图4,在本技术的一个可选实施例中,上述步骤202依次遍历参考池中每个虚拟参考片中目标位置所匹配的虚拟参考帧,包括如下步骤401至步骤408:
96.步骤401、处理帧初始图像中当前宏块。
97.标记此时初始化变量n=1;即查找参考帧的起始位置。
98.步骤402、在参考池中查找虚拟参考帧中当前位置的参考片以及宏块是否为空,如果为空,跳步骤404步骤,将n加1,检查下一个虚拟参考帧;如果不为空,则跳转步骤403。
99.步骤403、判断当前宏块和参考池中的参考宏块的像素是否相匹配。
100.步骤404、增加变量n,即检查下一个虚拟参考帧。
101.步骤405、如果两个宏块的像素相同,转步骤407,将宏块判定为不变宏块,并记录n的值,随后随着这个宏块的类型编入码流;如果不同则转步骤404。
102.步骤406:如果n加1后没有超过了最大虚拟参考帧号,则转换步骤402在下一个的虚拟参考帧中继续比较宏块。
103.反之如果n加1后已经超过了最大虚拟参考帧号,则表明所有虚拟参考帧搜寻完毕,则跳转至步骤408。
104.步骤407、将宏块判定为不变宏块,并同步记录n,n后续将编入码流。
105.步骤408、若在历史记录中找不到相同宏块宏块不能判定为不变宏块,表示历史记录中找不到该位置宏块和当前宏块内容相同的,当前宏块不能判定为不变宏块,维持其为文字宏块或图像宏块的属性。
106.本技术实施例通过遍历参考池,能够快速准确的查找到与当前宏块相匹配的参考帧,通过采用分片参考和存储方式,对于相同的部分仅存储1份,变化的部分则利用未用到的内存尽可能多的存储,更有效的利用了参考帧空间,对于网页广告的例子,就意味着对于
变化的广告区域,会存储更多的历史信息,同时,提高压缩率。
107.本技术实施例中,上述步骤202中的依次遍历参考池中每个虚拟参考片中目标位置所匹配的虚拟参考帧之后,还包括:
108.若在参考池中未查找到与当前宏块所匹配的目标参考宏块,则根据当前宏块和当前宏块的目标位置,在参考池中更新虚拟参考帧。
109.本技术实施例所提供的方法在编码处理一帧数据后,如果当前帧中出现了新的参考片,则需要更新虚拟参考帧以及参考片缓存池,即,将当前帧加入虚拟参考帧,并将当前帧中相对于之前所有虚拟参考帧发生变化的参考片全部存入参考片缓存池;在存储新的虚拟参考帧和参考片时,如果存储空间没满,就按顺序往后加,如果存储空间已满,则需要用新的虚拟参考帧和参考片数据覆盖最旧的一个虚拟参考帧和参考片数据。
110.在可选实施例中,本技术所提供的数据编码方法中中参考池中更新虚拟参考帧,包括:
111.获取参考池中已占用的虚拟参考片的位置p;
112.若所述虚拟参考帧片的位置p不是参考池中最后一帧的位置,则在第p+1位置所匹配的虚拟参考片中根据当前宏块更新虚拟参考帧。
113.本技术实施例在编码处理图像的过程中会根据当前宏块是否能够在参考池找到虚拟的参考帧,实时的更新参考池的数据,从而能够提供编码的效率,和参考池的使用效率。
114.如图所示:在编完每一帧图像后,都会申请一个虚拟参考帧,虚拟参考帧并不具备内存空间,但它也有和参考片相同区域的逻辑划分,每个虚拟参考帧可保存16个标识索引,分别指向第1帧图像中16个位置的参考片的位置。如当第1帧图像编完后,产生的虚拟参考帧名为vref-1,如图3c中所示,它里面的16个标识索引分别填充为1~16,表示图3a中参考片的序号。
115.图3b中的参考片,并不体现每个宏块在帧内的位置。而在编码第1帧图像时,需要将每个宏块和之前编过的帧(也叫参考帧)的相同位置的宏块进行比较,确定二者是否存在差异。
116.举例而言,在编码首帧图像的下一帧图像(此帧称第2帧)时,数据编码装置将全帧的每个宏块都和第一虚拟参考帧中同位置宏块进行比较得出,除了右下角的4个片区(如图3a中的序号12-16对应的四个参考片组成的片区)内存在有差异的宏块内容之外,其他12个片区中的像素完全和第一虚拟参考帧相同。
117.在宏块分析的过程中,将其他12个片区覆盖的宏块全部判定为不变宏块,12个片区称为不变参考片,并记录每个宏块的参考帧号为n=1,表示这些宏块都是参考第一虚拟参考帧的,此信息会随着宏块码流发送到解码端。在解码端需要维护同样的一份参考片区信息,这样才能完成解码。
118.而在右下角的四个区域,也就是图3d(图3d中不清楚的部分与本实施例中的方案无关)所示中标着斜体字17,18,19,20的四个区域,因为区域中存在新出现的宏块,这四个区域都将被写入参考片中,供后面的帧参考用。写入过程为:从参考片缓存池中取4个新的参考片空间,然后将这四个区域的数据写入,因为1~16参考片已经被占用,这里将取用第17,18,19,20这4个参考片。斜体字表示参考片对应的区域内容更新,非斜体字表示已经存
在于现有的参考片空间中,数字表示存在哪个参考片空间中,即参考片的序号。
119.又一些实施例中,对采集到的当前帧图像进行编码,包括:确定当前帧图像为屏幕图像中展示的非首帧图像,且当前帧图像不为首帧图像的下一帧图像;基于当前帧图像中的宏块,依次与当前帧图像之前的每一帧图像的第二虚拟参考帧中的宏块进行比对,确定当前帧图像中的不变参考片;基于每个不变参考片中宏块的所属类型,对每个不变参考片进行编码,得到当前帧图像的编码码流。
120.举例而言,在当前帧图像不为首帧图像的下一帧图像,且为第3帧图像时,参见图3d所示,仍是右下角发生了变化,将每个宏块都先和vref-1中同位置宏块进行比较,如果比中相同,则判定宏块为不变宏块,宏块对应的参考片为不变参考片,并记录虚拟参考帧号为1。如果和vref-1中的同位置宏块不同,再看vref-2中同位置宏块是否为空,若不为空则比较是否相同。参见图3d所示,第3帧图像除了右下角之外的其他区域都和vref-1中同位置宏块相同,它们都将被判定为不变宏块,宏块对应的参考片为不变参考片,且参考帧号为1。
121.从而,在对非首帧图像进行编码时,能够复用前帧图像的相同内容,对于相同的部分仅存储1份,占用一份存储资源,有效提升资源使用效率。
122.在对非首帧图像进行编码之后,本实施例方法还可以包括:基于当前帧图像中参考片与宏块的对应关系,将当前帧图像编码后的每个参考片的像素数据存储至参考片缓存池中;基于当前帧图像的编码结果生成第三虚拟参考帧,第三虚拟参考帧对应有当前帧图像中每个参考片的标识索引,直至当前帧图像为屏幕图像的尾帧图像。
123.举例而言,在编完第2帧图像后,将存在2个虚拟参考帧(第一虚拟参考帧和第二虚拟参考帧),可记为vref-1和vref-2。其中vref-1是满的,即每个位置的宏块都是有内容可供参考的,vref-2则只有右下角4个参考片位置中是有宏块的,其他位置的宏块都是空,也就是并没有实质上的参考数据。因为这部分的像素和第1帧图像是一样的,复用了vref-1中的像素,如图3c中vref-2所对应的图像展示。
124.在编完第3帧图像后,会将右下角的4个参考片大小的部分存到参考片中,步骤和编第2帧图像时相同。此时从参考片缓存池取出21,22,23,24这四个参考片,拷贝像素数据进去。在编完第3帧图像后,就存在3个虚拟参考帧了(如图3c所示的vref-1、vref-2和vref-3)。
125.同理,对第4帧图中进行编码时情况同上,在编完64帧图像后,虚拟参考帧的情况如图3c示例性所示。
126.图3c中列出了全部64个虚拟参考帧,每编完1帧图像后,会产生1个虚拟参考帧,虚拟参考帧设定为64个,如果编的帧数超过64,则会循环复用。
127.其中每个虚拟参考帧也是划分成16个逻辑上的参考片。可见第个1个虚拟参考帧即vref-1中引用了16个参考片,vref-2引用了4个,其他的类似。特别的,在vref-14中,参考片1~64已经全部被占用了,第14帧右下角出现的新的像素内容将会从参考片缓存区中循环调取之前已经被用的,作为存储新的参考像素使用。调取策略是,检查所有的虚拟参考帧中,哪些参考片区域的深度最深,也就是存在的参考片最多,把这些参考片中最久远的那些拿来使用。从vref-1到vref-13可见,右下角4个区域的参考片最深,每帧都有新的参考片被引用。而其他区域的无数字的部分,表示这部分内容已经在其他虚拟参考帧(本例中是vref-1)中已经有了,无需再存储了,这部分是空的。在编码的宏块分析环节,分析某宏块
时,将搜索所有64个虚拟参考帧的同位置的宏块,如果为空,就跳过这个虚拟参考帧,只和不为空的宏块进行比较。在vref-14中,取了参考片11,12,15,16存放此帧右下角的4个参考区的像素作为后面参考用,在vref-14中用斜体加下划线标识出来,标识这vref-14这个虚拟参考帧的这4个参考片是将原来11,12,15,16这4个参考片的回收使用的。
128.类似的,vref-15则回收使用了17,18,19,20这4个参考片的内存空间。在它之前,这4个参考片是vref-2在使用,直到vref-64被使用后,下一个虚拟参考帧将回到vref-1,此时可见vref-1中已经有了16个参考片对象,如果在编码当前帧图像时,某个区域的宏块是历史中没有的,需要更新参考片的时候,则不再从参考片缓存池中申请参考片,而是直接将vref-1中原有的参考片中的像素数据替换掉,完成vref-1的更新。
129.本技术实施例所提供的数据编码方法,在编码处理完毕当前宏块后,若当前宏块在历史记录中找不到相同的,则可以标记当前宏块为全新宏块,则可以通过当前宏块更新参考池:更新方法包括:假定当前的虚拟参考帧编号用到了n,则将n加1再对64取模,得到新的n值,是当前新申请的虚拟参考帧号;如果当前虚拟参考帧的这个位置已经存在参考片,则维持其不动,会直接将当前帧该参考片区域的像素拷贝进去作为新的参考片像素数据;否则通过参考片管理模块从参考片缓存区中申请一个参考片,用于存放新的像素数据;将当前帧的像素数据拷贝进入参考片中,供后续帧编码参考使用。
130.请参见图5,以下实施例以上述解码设备为执行主体,将本技术实施例提供的解码方法应用于基于多帧参考数据进行解码处理为例进行具体说明。本技术实施例提供的数据编码方法包括如下步骤501至步骤503:
131.步骤501、获取目标数据。
132.所述目标数据用于指示初始图像编码中的任一宏块生成的码流数据和标识信息,所述初始图像包括不变宏块和变化宏块。
133.其中,不变宏块是根据参考池中的参考帧编码处理后生成的码流数据,不变宏块的标识信息用于指示编码时所参考的帧;
134.变化宏块是在参考池中未查找到可以参考使用的帧,变化宏块的标识信息包括用于指示变化宏块类型的信息。
135.步骤502、解析所述目标数据,若目标数据指示为不变宏块,则根据所述标识信息,在参考池中查找到目标参考帧。
136.所述参考池包括m个虚拟参考片,每个虚拟参考片包括n个虚拟参考帧,所述虚拟参考帧是根据历史编码数据生成的。
137.解析所述目标数据,若目标数据指示为不变宏块,则根据所述标识信息,在参考池中查找到目标参考帧,所述参考池包括m个虚拟参考片,每个虚拟参考片包括n个虚拟参考帧,所述虚拟参考帧是根据历史编码数据生成;
138.根据所述目标参考帧,获取解码数据。
139.上述步骤中根据所述标识信息,在参考池中查找到目标参考帧,包括:
140.根据所述目标数据,获取所述标识信息,所述标识信息包括索引信息,所述索引信息用于指示虚拟参考帧所匹配的目标参考帧;
141.根据所述索引信息查找到目标参考帧。
142.步骤503、根据所述目标参考帧,解码处理所述目标数据。
143.若待解码的数据为变化宏块,则解析所述目标数据,若目标数据指示为变化类型的宏块,则根据所述标识信息,确定所述变化宏块的类型;
144.根据所述目标类型确定所述目标数据的解码策略,并解码处理所述目标数据。
145.例如,对于文字宏块或图像宏块,通过读取原始像素数据,将所有宏块解码出来的像素数据进行拼接,形成完整的重建帧,即解码出来的帧。
146.若待解码的数据是不变宏块,则将码流中指示的虚拟参考帧号从码流中读出,并从指定的虚拟参考帧中读取该位置的宏块的像素数据,拷贝到当前帧该位置的宏块解码像素数据区中,完成不变宏块的解码。
147.从而,解码端通过解析屏幕图像对应的每一帧图像的编码码流,得到每个宏块对应的解码数据,并生成重建帧,有效得出编码码流的解码帧图像
148.当解码处理完一帧图像后,需要更新虚拟参考帧,虚拟参考帧管理模块从虚拟参考帧池中以循环复用的方式调取一个新的虚拟参考帧对象,将当前帧中存在新出现的宏块的那些参考片区域,更新到虚拟参考帧对象中,更新的时候,实际上是从参考片池中调取参考片空间,放到参考片中,然后再将参考片挂接到虚拟参考帧对象上。
149.解码端运行一个和数据编码装置相同的虚拟参考帧机制和参考片机制。即数据编码装置和数据解码装置在每时每刻,虚拟参考帧和参考片池的情况都是相同的。数据解码装置只需执行更新虚拟参考帧和参考片池的动作,其作用原理和数据编码装置是相同的,主要是根据参考片区域内宏块类型是否全部为不变宏块为依据,如果不是,就需要更新虚拟参考帧中该参考片区的数据,方法也是从参考片池中调用资源,具体操作和编码端类似,此处不再赘述。
150.本技术实施例所提供的解码方法,解码端解析编码端发来的码流,将其划分为宏块码流为单位。根据宏块的不同情况来进行解码:针对不变宏块,则直接根据宏块码流中包含的虚拟参考帧号从对应虚拟参考帧中相应的宏块位置中读取出像素数据,然后将读取出的像素数据拷贝到重建帧中对应的宏块位置上,作为该宏块的解码数据。针对于变化宏块,则确定变化宏块的类型进行解码处理,对于图像宏块或者文字宏块则采用对应的解码算法对相应的宏块码流进行解码得到像素数据,将所有得到的像素数据按照其宏块位置拼接完成后,得到最终重建帧数据,也就是解码数据。一帧解码完成后,解码端也会按照与编码端相同的机制判断是否需要更新虚拟参考帧和参考片缓存池,并在需要更新时进行更新。
151.本公开实施例提供一种数据编码装置,如图6所示,该数据编码装置60包括:获取模块601、处理模块602和编码模块603,
152.获取模块601,用于获取当前宏块及当前宏块的目标位置,所述当前宏块为初始图像所中的宏块,所述初始图像至少根据采集显示设备的显示图像生成;
153.处理模块602,用于根据所述当前宏块的目标位置,依次遍历参考池中每个虚拟参考片中目标位置所匹配的虚拟参考帧,所述参考池包括m个虚拟参考片,每个虚拟参考片包括n个虚拟参考帧,所述虚拟参考帧是根据历史编码数据生成的;
154.编码模块603,用于若在所述参考池中查找到与当前宏块相匹配的目标虚拟参考帧,则根据所述目标虚拟参考帧,完成所述当前宏块的编码处理。
155.关于上述数据编码装置的具体限定可以参见上文中对于数据编码处理方法的限定,在此不再赘述。上述数据编码装置中的各个模块可全部或部分通过软件、硬件及其组合
来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
156.本公开实施例提供一种数据解码装置,如图7所示,该数据解码装置70包括:获取模块701、处理模块702和编码模块703,
157.所述获取模块701用于,获取目标数据,所述目标数据用于指示初始图像编码中的任一宏块生成的码流数据和标识信息,所述初始图像包括不变宏块和变化宏块;
158.所述处理模块702用于解析所述目标数据,若目标数据指示为不变宏块,则根据所述标识信息,在参考池中查找到目标参考帧,所述参考池包括m个虚拟参考片,每个虚拟参考片包括n个虚拟参考帧,所述虚拟参考帧是根据历史编码数据生成的;
159.所述编码模块703用于根据所述目标参考帧,解码处理所述目标数据。
160.关于上述数据解码装置的具体限定可以参见上文中对于数据解码处理方法的限定,在此不再赘述。上述数据编码装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
161.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时可以实现如上数据编码方法或数据解码方法中的任一步骤。
162.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
163.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
164.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
165.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
166.尽管已描述了本技术的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优
选实施例以及落入本技术范围的所有变更和修改。
167.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
技术特征:
1.一种数据编码方法,其特征在于,所述方法包括:获取当前宏块及当前宏块的目标位置,所述当前宏块为初始图像所中的宏块,所述初始图像至少根据采集显示设备的显示图像生成;根据所述当前宏块的目标位置,依次遍历参考池中每个虚拟参考片中目标位置所匹配的虚拟参考帧,所述参考池包括m个虚拟参考片,每个虚拟参考片包括n个虚拟参考帧,所述虚拟参考帧是根据历史编码数据生成的;若在所述参考池中查找到与当前宏块相匹配的目标虚拟参考帧,则根据所述目标虚拟参考帧,完成所述当前宏块的编码处理。2.根据权利要求1所述的方法,其特征在于,所述根据所述目标虚拟参考帧,完成所述当前宏块的编码处理,包括:获取所述目标虚拟参考帧的索引信息,所述索引信息用于索引预设参考帧的存储信息;根据所述索引信息标记所述当前宏块,以使得根据所述预设参考帧,完成当前宏块的编码处理。3.根据权利要求2所述的方法,其特征在于,所述方法还包括:若在参考池中未查找到与当前宏块所匹配的目标参考宏块,则根据当前宏块和当前宏块的目标位置,在参考池中更新虚拟参考帧;标记所述当前宏块为变化宏块,并根据所述当前宏块的宏块类型,编码处理所述当前宏块。4.根据权利要求3所述的方法,其特征在于,所述在参考池中更新虚拟参考帧,包括:获取参考池中已占用的虚拟参考片的位置p;若所述虚拟参考帧片的位置p不是参考池中最后一帧的位置,则在第p+1位置所匹配的虚拟参考片中根据当前宏块更新虚拟参考帧。5.根据权利要求4所述的方法,其特征在于,所述在第p+1位置所匹配的虚拟参考片中根据当前宏块更新虚拟参考帧,包括:获取参考池中当前已占用虚拟参考帧的数量;若当前已经占用参考宏块的数量未超过预设值,则在第p+1位置所匹配的虚拟参考片中根据当前宏块更新虚拟参考帧。若当前已经占用参考宏块的数量已超过预设值,则判断p+1处的位置是否为最后一帧;若不是最后一帧,则在p+2处的目标位置存储参考宏块。6.根据权利要求1所述的方法,其特征在于,所述方法还包括:若当前序列中初始图像已完成编码处理,但是参考池中的参考帧仍有闲置空间,则根据当前参考池中虚拟参考帧的使用频率,更新参考池中的虚拟参考帧。7.一种数据解码方法,其特征在于,所述方法包括:获取目标数据,所述目标数据用于指示初始图像编码中的任一宏块生成的码流数据和标识信息,所述初始图像包括不变宏块和变化宏块;解析所述目标数据,若目标数据指示为不变宏块,则根据所述标识信息,在参考池中查找到目标参考帧,所述参考池包括m个虚拟参考片,每个虚拟参考片包括n个虚拟参考帧,所述虚拟参考帧是根据历史编码数据生成的;
根据所述目标参考帧,解码处理所述目标数据。8.根据权利要求7所述的方法,其特征在于,所述方法还包括:解析所述目标数据,若目标数据指示为变化类型的宏块,则根据所述标识信息,确定所述变化宏块的类型;根据所述目标类型确定所述目标数据的解码策略,并解码处理所述目标数据。9.根据权利要求7所述的方法,其特征在于,所述方法中根据所述标识信息,在参考池中查找到目标参考帧包括:根据所述目标数据,获取所述标识信息,所述标识信息包括索引信息,所述索引信息用于指示虚拟参考帧所匹配的目标参考帧;根据所述索引信息查找到目标参考帧。10.一种数据编码装置,其特征在于,所述数据编码装置用于实现权利要求1至6中任一项所述的方法的步骤。11.一种数据解码装置,其特征在于,所述数据解码装置用于实现权利要求7至9中任一项所述的方法的步骤。
技术总结
本公开提供一种数据编码、解码方法及装置,涉及电子信息技术领域,能够解决图像编码解码处理效率低的问题。具体技术方案为:编码端根据参考池中的虚拟参考帧确定当前帧是否为不变宏块,若是不变宏块则根据虚拟参考帧编码处理当前帧,若是变化宏块,则可以根据当前帧的类型进行编码处理;解码端根据参考池中的参考帧解码处理编码端发送的码流数据,实现了提高数据编码解码效率的技术效果。提高数据编码解码效率的技术效果。提高数据编码解码效率的技术效果。
技术研发人员:张路
受保护的技术使用者:西安万像电子科技有限公司
技术研发日:2023.05.10
技术公布日:2023/9/22
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:一种强宿根甘蔗品种的选育方法 下一篇:一种交流电机控制器电路复用方法与流程