背景技术
随着以远程桌面为典型表现形式的新一代云计算与信息处理模式及平台的发展和普及,多台计算机之间、计算机主机与智能电视、智能手机、平板电脑等其他数字设备之间及各种各类数字设备之间的互联已经成为现实并日趋成为一种主流趋势。这使得服务器端(云)到用户端的实时屏幕传输成为当前的迫切需求。由于需要传输的屏幕视频数据量很大,以平板电脑2048x1536像素分辨率且60帧/秒刷新率的24位真彩色屏幕图像为例,需要传输的数据达每秒 2048x1536x60x24=4320兆比特,如此多的数据要想在现实的网络条件下实现实时传输是不可能的,因此对于计算机屏幕图像的有效的数据压缩必不可少。
充分利用计算机屏幕图像的特点,对计算机屏幕图像进行超高效率的压缩,也是最新国际视频压缩标准HEVC(High Efficiency Video Coding)的一个主要目标。
计算机屏幕图像的一个显著特点是同一帧图像内通常会有很多相似甚至完全相同的像素图样(pixel pattern)。例如,计算机屏幕图像中常出现的中文或外文文字,都是由少数几种基本笔划所构成,同一帧图像内可以找到很多相似或相同的笔划。计算机屏幕图像中常见的菜单、图标等,也具有很多相似或相同的图样。现有的图像和视频压缩技术中采用的帧内预测(intra prediction)方式,仅参考相邻的像素样值,无法利用一帧图像中的相似性或相同性来提高压缩效率。现有技术中的帧内运动补偿(intra motioncompensation)方式也称为帧内块复制(intra block copy)方式,用几种固定大小(如4x4,8x8,16x16,32x32,64x64像素)的块来进行帧内块匹配(intra block matching)编码,也不能找到各种不同大小和形状的匹配。而另一种现有技术中的串匹配 (string matching)方式,虽然能有效找到各种不同大小和形状的匹配,但却存在复杂度、计算量、存储器读写带宽都较大等问题。因此,必须寻求新的编码工具,既能充分发掘和利用计算机屏幕图像中存在的相似或相同图样,以大幅度提高压缩效果,又把复杂度、计算量、存储器读写带宽等都控制在较小的范围内。
屏幕图像的数字视频信号的自然形式是图像的序列。一幅图像通常是由若干像素组成的矩形区域,如果一个数字视频信号每秒有50幅图像,那么一段 30分钟的数字视频信号就是一个由30x60x50=90000幅图像组成的视频图像序列,有时也简称为视频序列或序列。对数字视频信号进行编码就是对一幅一幅图像进行编码。
最新国际视频压缩标准HEVC中,对一幅图像进行编码时,把一幅图像划分成若干块MxM像素的子图像,称为“编码单元(Coding Unit简称CU)”,以CU为基本编码单位,对子图像一块一块进行编码。常用的M的大小是4,8, 16,32,64。因此,对一个视频图像序列进行编码就是对各个编码单元依次进行编码。同样,解码时也是对各个编码单元依次进行解码,最终重构出整个视频图像序列。
为适应一幅图像内各部分图像内容与性质的不同,有针对性地进行最有效的编码,一幅图像内各CU的大小可以是不同的,有的是8x8,有的是64x64,等等。为了使不同大小的CU能够无缝拼接起来,一幅图像总是先划分成大小完全相同具有NxN像素的“最大编码单元(Largest Coding Unit简称LCU)”,然后每个LCU再进一步划分成多个大小不一定相同的CU。例如,一幅图像先划分成大小完全相同的64x64像素的LCU(N=64)。其中某个LCU由3个32x32像素的CU和4个16x16像素的CU构成。而另一个LCU由2个32x32 像素的CU、3个16x16像素的CU和20个8x8像素的CU构成。对一幅图像进行编码,就是依次对一个一个CU进行编码。
一个彩色像素有3个分量(component)组成。最常用的两种像素色彩格式 (pixelcolor format)是由绿色分量、蓝色分量、红色分量组成的GBR色彩格式和由一个亮度(luma)分量及两个色度(chroma)分量组成的YUV色彩格式也称YCbCr色彩格式。因此,对一个CU进行编码时,可以把一个CU分成 3个分量平面(G平面、B平面、R平面或Y平面、U平面、V平面),对3 个分量平面分别进行编码;也可以把一个像素的3个分量捆绑组合成一个3元组,对由这些3元组组成的CU整体进行编码。前一种像素及其分量的排列方式称为图像(及其CU)的平面格式(planar format),而后一种像素及其分量的排列方式称为图像(及其CU)的叠包格式(packed format)。
YUV色彩格式又可根据是否对色度分量进行下采样再细分成若干种子格式:1个像素由1个Y分量、1个U分量、1个V分量组成的YUV4:4:4像素色彩格式;左右相邻的2个像素由2个Y分量、1个U分量、1个V分量组成的YUV4:2:2像素色彩格式;左右上下相邻按2x2空间位置排列的4个像素由4 个Y分量、1个U分量、1个V分量组成的YUV4:2:0像素色彩格式。一个分量一般用1个8~16比特的数字来表示。YUV4:2:2像素色彩格式和YUV4:2:0 像素色彩格式都是对YUV4:4:4像素色彩格式施行色度分量的下采样得到。一个像素分量也称为一个像素样值(pixel sample)或简单地称为一个样值 (sample)。
帧内块匹配(intra block matching,也称帧内运动补偿 intra motioncompensation或称帧内块复制intra block copy)编码就是在对一个 CU进行编码时,在同一帧内的已重构参考像素样值集之中的某个预定的搜索范围(search range)内搜索与所述CU(即被匹配块)之间匹配误差最小的一个匹配块(称为最优匹配块),然后把被匹配块与最优匹配块之间的相对位置 (称为移动矢量即motion vector简称MV)写入视频压缩码流中。
帧内块匹配解码就是在对一个CU进行解码时,根据从视频压缩码流中解析出来的一个MV,来确定同一帧内的已重构参考像素样值集之中的匹配块的位置,然后把所述匹配块复制和粘贴到所述CU(即被匹配块)的位置。
帧内串匹配(intra string matching)编码就是在对一个CU进行编码时,在同一帧内的已重构参考像素样值集之中的某个预定的搜索范围(search range) 内搜索得到一个或多个最优的可变长度的像素样值匹配串,每个匹配串用一个匹配相对位置(称为移动矢量即motion vector简称MV)和一个匹配长度,即一对(移动矢量,匹配长度)来表征。然后把一对或多对(移动矢量,匹配长度)写入视频压缩码流中。
帧内串匹配解码就是在对一个CU进行解码时,根据从视频压缩码流中解析出来的一对或多对(移动矢量,匹配长度),来确定同一帧内的已重构参考像素样值集之中的一个或多个像素样值匹配串的位置,然后把一个或多个所述匹配串复制和粘贴到所述CU的相对位置(即被匹配串的位置)。每个复制和粘贴的匹配串的像素样值数就是所述匹配长度。对应的被匹配串也具有相同的所述匹配长度。
具体实施方式
本发明的主要技术特征如图1所示。图1中表示的匹配微块串和被匹配微块串可以是叠包格式的匹配微块串和被匹配微块串,也可以是平面格式的一个分量(样值)的匹配微块串和被匹配微块串。因而本发明的方法和装置,既可以适用于对叠包格式的LCU和CU的像素的编码和解码,也可以适用于对平面格式的LCU和CU的一个平面的像素样值的编码和解码。图1中的一个微块由宽度为2高度为2的2x2=4个像素或像素样值组成,称为2x2微块。但本发明也可用其他尺寸的微块,如宽度为2高度为1的2x1=2个像素或像素样值组成的2x1微块,或宽度为1高度为2的1x2=2个像素或像素样值组成的1x2微块,或宽度为4高度为1的4x1=4个像素或像素样值组成的4x1微块,或宽度为1 高度为4的1x4=4个像素或像素样值组成的1x4微块,或宽度为4高度为4的 4x4=16个像素或像素样值组成的4x4微块。
本发明的编码方法和装置中,最基本的特有技术特征就是在对当前CU进行编码时,在已经完成编码的历史像素样值集合(也称已重构参考像素样值集) 中进行搜索,逐个找到一个或多个与当前编码CU的像素样值相匹配的以微块为基本匹配单位的最优的匹配微块串。每个匹配微块串用两个参数:移动矢量 (即匹配相对位置或匹配距离)和匹配微块数(简称微块数),即一对(移动矢量,微块数)来表征。每个匹配微块串都含有整数个微块,但匹配微块串的起始位置可以是已重构参考像素样值集之中任意像素样值的位置,与微块的尺寸无关,也不受微块的尺寸的限制。即,移动矢量以像素样值为单位而非微块为单位。与在已重构参考像素样值集之中找到的一个最优匹配微块串相对应的在当前CU之中的那些微块所组成的那个微块串称为被匹配微块串。被匹配微块串在当前CU之中的起始位置总是以微块为单位,不能是任意的像素样值的位置。
本发明的解码方法和装置中,最基本的特有技术特征就是在对当前解码CU 的压缩码流数据进行解码时,从码流数据中依次读出一对或多对(移动矢量,微块数)。然后,从当前解码的被匹配微块串的第一个微块的位置和移动矢量计算出已重构参考像素样值集之中的匹配微块串的的第一个微块的位置。接着,再根据预定的微块串的排列规则,从已重构参考像素样值集之中复制整个匹配微块串(含有由所述微块数确定的微块数目),将整个匹配微块串移动和粘贴到当前解码中的所述被匹配微块串的位置,复原出整个被匹配微块串。这样依次复制、移动、粘贴一个一个匹配微块串,最终复原出整个当前解码CU的所有像素样值。与编码时的情形一样,每个匹配微块串都含有整数个微块,但匹配微块串的起始位置可以是已重构参考像素样值集之中任意像素样值的位置,与微块的尺寸无关,也不受微块的尺寸的限制。即,移动矢量以像素样值为单位而非微块为单位。另一方面,被匹配微块串在当前CU之中的起始位置总是以微块为单位,不能是任意的像素样值的位置。
以上通过若干特定的具体实例说明本发明的技术特征。本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在不背离本发明的精神下进行各种修饰或改变。
本发明的编码方法的流程示意图如图2所示。本发明的编码方法包括如下步骤:
1)对一个输入的编码单元即CU的原始像素进行微块串匹配编码,产生出(1)以像素样值为单位的最优移动矢量即匹配相对位置或匹配距离和(2) 最优匹配微块串的以微块为单位的微块数;也就是从所述CU中的一个起始微块开始,在已重构参考像素样值集之中的一个预定的搜索范围内,按照预定的评估准则和微块串的排列规则,搜索得到一个或多个最优的匹配微块串;搜索得到的所述匹配微块串与所述CU中的相应的被匹配微块串有相同的所述微块数;所述移动矢量就是所述匹配微块串的位置坐标与所述被匹配微块串的位置坐标之差;所述移动矢量的单位是像素样值(整像素样值或二分之一、四分之一、八分之一像素样值)的最小坐标单位而非微块;所述微块数的单位则是微块而非像素样值的坐标单位;微块串匹配编码的输出是所述移动矢量、所述微块数以及匹配残差;所述匹配残差就是所述匹配微块串的像素样值的数值与所述被匹配微块串的像素样值的数值之差;
2)其余的常用编码和重构步骤,如帧内预测、帧间预测、变换、量化、逆变换、反量化、熵编码、去块效应滤波、样值自适应补偿 (Sample Adaptive Offset);本步骤的输入是上述步骤1)的输出和输入原始像素;本步骤的输出是重构像素和含移动矢量、微块数和其他编码结果的压缩码流;所述重构像素放入已重构参考像素样值暂存区中,用作后续微块串匹配编码步骤、其余常用编码和重构步骤所需要的参考像素;所述压缩码流也是本编码方法的最后输出。
本发明的解码方法的流程示意图如图3所示。本发明的解码方法包括如下步骤:
1)对含移动矢量、微块数和其他编码结果的压缩码流进行解析,输出1) 解析得到的匹配微块串的移动矢量和微块数,2)其余解析得到的数据;
2)使用输入的移动矢量及微块数进行一个当前CU的微块串匹配解码;也就是从已重构参考像素样值暂存区中由所述移动矢量和所述CU中当前被匹配微块串的位置计算确定的匹配微块串的位置,按照已知的微块串的排列规则,复制微块数量(长度)为微块数的整个匹配微块串的所有样值,并将整个所述匹配微块串移动和粘贴到当前所述被匹配微块串的位置,复原出整个所述被匹配微块串;所述被匹配微块串与所述匹配微块串有相同的所述微块数;所述移动矢量的单位是像素样值(整像素样值或二分之一、四分之一、八分之一像素样值)的最小坐标单位而非微块;所述微块数的单位则是微块而非像素样值的坐标单位;微块串匹配解码的输出是复原的所述被匹配微块串的像素样值;
3)其余的常用解码和重构步骤,如帧内预测、帧间预测、逆变换、反量化、熵解码、去块效应滤波、样值自适应补偿(Sample Adaptive Offset);本步骤的输入是上述步骤2)的输出和上述步骤1)的输出2)即其余解析得到的数据;本步骤的输出是重构像素;所述重构像素放入已重构参考像素样值暂存区中,用作后续微块串匹配解码步骤、其余常用解码和重构步骤所需要的参考像素;所述重构像素也是本解码方法的最后输出。
本发明的编码装置示意图如图4所示。整个编码装置由以下模块组成:
1)微块串匹配搜索编码模块:对输入视频图像像素样值施行微块串匹配编码,在每一个输入的编码单元即CU中,从一个起始微块开始,在已重构参考像素样值集之中的一个预定的搜索范围内,按照预定的评估准则和微块串的排列规则,搜索得到一个或多个最优的匹配微块串;搜索得到的所述匹配微块串与所述CU中的相应的被匹配微块串有相同的微块数;所述匹配微块串的位置坐标与所述被匹配微块串的位置坐标之差称为移动矢量;所述移动矢量的单位是像素样值(整像素样值或二分之一、四分之一、八分之一像素样值)的最小坐标单位而非微块;所述微块数的单位则是微块而非像素样值的坐标单位;本模块的输出是所述移动矢量、所述微块数以及匹配残差;所述匹配残差就是所述匹配微块串的像素样值的数值与所述被匹配微块串的像素样值的数值之差;
2)其余的各种常用技术编码和重构模块:施行各种常用技术,如帧内预测、帧间预测、变换、量化、逆变换、反量化、去块效应滤波、样值自适应补偿(Sample AdaptiveOffset),的编码和重构运算;本模块的输入是上述模块 1)的输出和原始输入视频图像像素;本模块的输出是重构像素和其余编码结果;所述重构像素放入已重构参考像素样值暂存模块中,用作后续微块串匹配编码、其余的各种常用技术编码和重构所需要的参考像素;
3)重构参考像素样值暂存模块:暂存到当前编码中被匹配微块串的位置为止或者到当前编码中CU的位置为止的的所有以前已重构像素样值,用作当前编码中被匹配微块串的参考像素样值(即候选的匹配微块串的像素样值),也用作施行各种常用技术的编码和重构运算时所需要的参考像素样值;
4)熵编码模块:对包括移动矢量、微块数、其余编码结果在内的所有需要输出到压缩码流中的编码结果施行熵编码运算;熵编码的结果也是本编码装置的最后输出。
本发明的解码装置示意图如图5所示。整个解码装置由以下模块组成:
1)熵解码模块:对输入的压缩码流施行熵解码,并解析出熵解码得到的各种数据的意义;把解析得到的移动矢量和微块数送往微块串匹配解码模块;把解析得到的其余数据送往其余的各种常用技术解码和重构模块;
2)微块串匹配解码模块:本模块的输入是移动矢量和微块数;本模块从已重构参考像素样值集之中由所述移动矢量和当前解码中被匹配微块串的位置计算确定的匹配微块串的位置,按照已知的微块串的排列规则,复制微块数量(长度)为微块数的整个匹配微块串的所有样值,并将整个所述匹配微块串移动和粘贴到当前解码中所述被匹配微块串的位置,复原出整个所述被匹配微块串;所述被匹配微块串与所述匹配微块串有相同的所述微块数;所述移动矢量的单位是像素样值(整像素样值或二分之一、四分之一、八分之一像素样值) 的最小坐标单位而非微块;所述微块数的单位则是微块而非像素样值的坐标单位;微块串匹配解码模块的输出是复原的所述被匹配微块串的像素样值;
3)其余的各种常用技术解码和重构模块:对当前解码中被匹配微块串或当前解码中CU施行其余的各种常用技术,如帧内预测、帧间预测、逆变换、反量化、去块效应滤波、样值自适应补偿(Sample Adaptive Offset),的解码和重构运算;本模块的输出是重构像素;所述重构像素放入已重构参考像素样值集之中,用作后续微块串匹配解码运算以及其余的各种常用技术解码和重构运算所需要的参考像素;所述重构像素也是本解码装置的最后输出;
4)重构参考像素样值暂存模块:暂存已重构参考像素样值集的像素样值,即到当前解码中被匹配微块串的位置为止或者到当前解码中CU的位置为止的所有以前已重构像素样值,用作当前解码中被匹配微块串的参考像素样值 (即匹配微块串的像素样值),也用作对当前解码中CU施行各种常用技术的编码和重构运算时所需要的参考像素样值。
以上所提供的图示仅以示意方式说明本发明的基本构想,图示中仅显示与本发明直接有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
以下是本发明的更多的实施细节和变体。
所述微块串匹配编码和解码方法或装置中,微块串的微块数仅能取几个预定的数字(如2、4、6、8、12、16),因此,对于每个匹配微块串,写入压缩码流或从码流码流数据中读出的并不是微块数本身,而是这几个预定的微块数的编号。