方向交替变换来回扫描串匹配的图像编码解码方法和装置
本申请是下列原申请的的分案申请:
原申请的申请日:2014-06-12
原申请的申请号:2014102595149
原申请的发明创造名称:一种图像编码方法和装置及解码方法和装置
本申请的说明书在原申请于2020年5月14日四审答辩最终提交的说明书(也是原申请最新的说明书)基础上进行了如下修改和删除:
1)在第[0007]段中将“MxM”修改为“M1xM2”。
2)删除第[0008]-[0010]段、第[0012]、第[0014]-[0018]段。
3)在第[0011]段中删除“一个一个CTU中的”。
4)删除第[0064]-[0069]段6段(其内容分别是编码方法的一个实施例、解码方法的一个实施例、编码装置的一个实施例、解码装置的一个实施例、在压缩码流中表示存在未匹配像素样值的一个实施例、匹配准则的若干实施例)。
5)在第[0075]段中删除关于匹配大小有两个参数分量和三个参数分量的段落。
6)在第[0079]段中删除关于“含任意形状匹配的匹配参数的压缩数据以及其他编码结果的压缩码流的实施例1”的段落。
7)删除第[0080]-[0089]段10段(其内容是含任意形状匹配的匹配参数的压缩数据以及其他编码结果的压缩码流的实施例2和实施例3、“像素”的扩展即大像素)。
技术领域
本发明涉及一种数字视频压缩编码及解码系统,特别是包含连续色调图像和非连续色调图像的数字复合图像和视频的编码及解码的方法和装置。
背景技术
随着云-移动计算、智能网络电视(IPTV)、无线显示连接(WIFI Display等)的发展与普及,多计算机之间、计算机主机与其他数字设备(如智能电视、智能手机、平板电脑等)之间及各种各类数字设备之间的互联已经成为现实并越来越成为一种主流趋势。这使得服务器端(“云”或“云片”)到用户端的实时屏幕传输成为当前的迫切需求。由于需要传输的屏幕视频数据量很大,以平板电脑2048x1536像素分辨率且60帧/秒刷新率的24位真彩色屏幕图像为例,需要传输的数据达每秒2048x1536x60x24=4320兆比特,如此多的数据要想在当前的网络条件下实现实时传输是不可能的,因此有效的数据压缩必不可少。
以计算机屏幕图像为代表的数字复合图像和视频的突出特点是包含文字、图形、线段及自然图像。其中,文字、图形、线段一般由计算机生成,具有非连续色调的特性,而自然图像是由摄像机拍摄得到的,具有连续色调的特性。当前,对自然图像和视频的压缩编码已经比较成熟,有许多既定的标准可采用。这些标准基本采用预测编码与变换编码及量化编码结合的混合编码的框架,但他们对屏幕图像的压缩效果较差,必须寻求更适合于屏幕图像压缩的算法来实现有效压缩。
充分利用计算机屏幕图像的特点,对计算机屏幕图像进行超高效率的压缩,也是正在制定中的最新国际视频压缩标准HEVC(High Efficiency Video Coding)的一个主要目标。
屏幕图像的数字视频信号的自然形式是图像的序列。一幅图像通常是由若干像素组成的矩形区域,如果一个数字视频信号每秒有50幅图像,那么一个30分钟的数字视频信号就是一个由30x60x50=90000幅图像组成的视频图像序列,有时也简称为视频序列或序列。对数字视频信号进行编码就是按照一定顺序对一幅一幅图像进行编码。在任一时刻,正在编码中的那一幅图像称为当前编码图像。同样,对数字视频信号的压缩码流进行解码就是按照同样顺序对一幅一幅图像的压缩码流进行解码。在任一时刻,正在解码中的那一幅图像称为当前解码图像。当前编码图像或当前解码图像都统称为当前图像。
在几乎所有视频图像编码的国际标准如MPEG-1/2/4,H.264/AVC以及HEVC中,对一幅图像进行编码时,都是把一幅图像划分成若干块M1xM2像素的子图像,称为“编码单元(Coding Unit简称CU)”,以CU为基本编码单位,对子图像一块一块进行编码。常用的M1或M2是8,16,32,64。因此,对一个视频图像序列进行编码就是对各个编码单元依次进行编码。同样,解码时也是对各个编码单元依次进行解码,最终重构出整个视频图像序列。
对一幅图像进行编码,就是依次对一个一个CU进行编码。在任一时刻,正在编码中的CU称为当前编码CU。对一幅图像进行解码,也是按照同样的顺序依次对一个一个CU进行解码。在任一时刻,正在解码中的CU称为当前解码CU。当前编码CU或当前解码CU都统称为当前CU。
在本发明专利申请中,“像素样值”、“像素值”、“样值”是同义词,根据上下文,可以明确是表示“像素”还是表示“一个像素分量” 还是表示“索引(即序号)”或者同时表示三者。如果从上下文不能明确,那么就是同时表示三者。
随着多媒体技术在计算机中的普及,今天和未来的日常使用计算机的屏幕图像中,一幅图像中常常含有很多字母、数字、文字、菜单、小图标、大图形、图表、表格等组成的位图(bitmap)。一幅这样的图像中有很多完全相同或相似的图案(pattern)。如英文仅有52个不同的字母(26个大写字母和26个小写字母),中文更是仅有很少几种不同的笔划构成。因此,在计算机屏幕图像中,找到任意形状的匹配像素样值串或匹配像素样值块,就可以用匹配串(块)的大小和与被匹配串(块)之间的距离(1维距离或2维距离)这两个参数来代表被匹配串(块)的全部信息,去除了图像像素中存在的冗余度,起到显著的图像数据压缩作用。
但是,现有技术中,基于邻近像素样值的帧内预测编码和基于方块(block)的帧间预测编码,都不能有效地找到图像中的任意形状匹配的图案,对这类图像和图案的编码效率很低。
发明内容
为了解决图像视频编码和解码的现有技术中的这一问题,本发明提供了一种基于任意形状匹配的图像编码与解码的方法和装置。
本发明的主要技术特征如图1和图2所示。
本发明的编码方法和装置中,最基本的特有技术特征就是在对当前编码单元CU编码时,按照一种或几种预先规定的像素样值排列扫描格式和匹配格式(两者合称为匹配模式),在已经完成编码的历史像素(重构像素)集合(也称为参考像素样值集)中进行搜索,逐个找到多个与当前编码CU的像素样值相匹配的最优的匹配串(块)。每个匹配串(块)可以具有任意形状并且可以用两个基本匹配参数,即匹配位置(也称匹配距离)p和匹配大小s来表征:
1)匹配位置p是在历史像素集合中找到的相应的匹配串(块)的第一个像素样值与当前编码CU中被匹配串(块)的第一个像素样值之间的线性(1维)距离或平面(2维)距离,也就是相对位置,其单位是像素样值。例如,p=125像素样值表示线性距离是125个像素样值,p=(34, 12)像素样值表示水平距离和垂直距离分别是34个像素样值和12个像素样值。
2)匹配大小是匹配串(或块)的1维长度(或2维面积)。其单位也是像素样值。例如,s=100像素样值表示匹配串和被匹配串都分别有100个像素样值、s=8x12像素样值表示匹配块和被匹配块都分别有8x12=96个像素样值。显然,在匹配块的场合,一个块的大小s一般需要用多个参数分量来表示。例如,块是矩形的情形,s一般含有两个分量即矩形的宽度和高度(有时也称为长和宽)。再例如,块是平行四边形的情形,s一般也含有两个分量即平行四边形的底和高。又例如,块是梯形的情形,s一般含有三个分量即梯形的上底、下底和高。
这多个任意形状匹配串(块)再加上可能的未匹配像素值无缝拼接正好形成当前编码CU完整的正方形状。图1有3种匹配模式(包括像素样值排列扫描格式和匹配格式)的任意形状匹配的例。图1(a)表示的一幅图像中CU m,CU m+1,CU m+2这3个CU分别采用3种匹配模式进行任意形状匹配。一般来说,一幅当前图像中,可以所有CU都使用同一种匹配模式,也可以不同CU自适应地使用不同的匹配模式。
匹配串(块),也称为匹配参考串(块),其所在的参考像素样值集的大小是一个预先确定的编码和解码参数。这个参数如果不写入压缩码流,解码器就必须把参考像素样值集的大小设定为整幅当前解码图像,预留足够的存储空间,很可能超出实际需求,加大解码器的实现成本。因此,编码器应该把实际使用的参考像素样值集的大小写入压缩码流传送给解码器,使解码器可以仅预留恰当大小的参考像素样值集的存储空间,达到最高的工作效率。
参考像素样值集存储的是当前图像中已经经过编码或解码的重构像素值,而重构像素值通常是经历过多道工序后才达到完全的重构的。因此,参考像素样值集内存储的重构像素值一般包括不同种类的完全重构像素和不同程度的部分重构像素即仅经历过部分工序的重构像素。不同的匹配模式可以采用同一种类的重构像素作为参考像素,也可以采用不同种类的重构像素作为参考像素。同一匹配模式中,也可以在不同的匹配位置采用不同种类的重构像素作为参考像素。不同种类的重构像素的例包括:1)预测值加上残差值后的预测补偿后但未经过后处理(包括去块效应滤波和/或样值自适应补偿)的重构像素;2)预测补偿后并且经过后处理的重构像素。
例1:采用垂直扫描1维串形匹配的匹配模式进行任意形状匹配
图1(a)的序号为m的CU(CU m)采用垂直扫描1维串形匹配的匹配模式进行任意形状匹配。在垂直扫描1维串形匹配的匹配模式中,历史像素先以LCU序号的顺序排列,而在一个LCU内,像素样值以垂直扫描格式逐列排列,这样,历史像素最终排列成一个一维的像素样值串。例如,在图1(a)中,一个LCU的大小是16x16像素,每个像素有3个样值(分量),深度为1,因此一个CU的大小也是16x16像素。历史像素排列成的一维像素样值串中的第一个像素样值是序号为0的LCU即CU(CU 0)的第1列的顶端第一个像素样值。一列像素中,以垂直扫描格式自上而下排列。因此,所述一维像素样值串中的第二个像素样值是CU 0的第1列的顶端数下来第二个像素样值。第1列之后排列的是第2列,同样也是以垂直扫描格式自上而下排列像素样值。这样逐列排列一直到CU 0的第16列,之后排列的是图1(a)中序号为1的LCU即CU(CU 1)的第一列像素,依次类推。图1(a)所示一幅图像中,水平方向共有h个LCU即CU。因此,序号为h-1的LCU即CU(CU h-1)的第16列像素是第一个LCU行(共有h个LCU即CU)的最后(最右)1列像素,之后排列的是序号为h的LCU即CU(CU h)的第1列像素,也就是第二个LCU行的最左1列像素。图1(a)的序号为m的LCU即CU m中画出了任意形状匹配中的前3个被匹配串:
1)第一个被匹配串(图1(a)的CU m中编号为圈内1的像素样值串)有42个像素样值(=14个像素)。在历史像素中找到的对应的匹配串在序号为0的LCU即CU 0和序号为1的LCU即CU1中(编号也是圈内1),前5个像素(15个像素样值)是CU 0的第16列的最后5个像素,而后9个像素(27个像素样值)是CU 1的第1列的最前9个像素。匹配串的第一个像素样值是CU 0的第16列的第34个像素样值,所以其位置的线性(1维)地址是
一个LCU的像素样值数xLCU序号 + 列的像素样值数x(列编号-1) + 列内像素样值编号 =768 x 0+48 x 15+34=754。
而被匹配串的第一个像素样值是序号为m的LCU即CU m的第1列的第1个像素样值,所以其位置的线性(1维)地址是
768 x m+48 x 0+1=768m+1。
所以这个编号为圈内1的任意形状匹配的匹配位置是p=768m+1-754=768m-753。而其匹配大小(长度)显然是s=42。p和s的单位都是像素样值。
2)第二个被匹配串(图1(a)的CU m中编号为圈内2的像素样值串)有33个像素样值(=11个像素)。在历史像素中找到的对应的匹配串在CU 0中(编号也是圈内2),前7个像素(21个像素样值)是CU 0的第3列的最后7个像素,而后4个像素(12个像素样值)是CU 0的第4列的最前4个像素。这个匹配串的第一个像素样值是CU 0的第3列的第28个像素样值,而被匹配串的第一个像素样值是CU m的第1列的第43个像素样值,所以这个编号为圈内2的任意形状匹配的匹配位置是p=(768m+48 x 0+43)-(768 x 0+48 x 2+28)=768m-81。而其匹配大小(长度)显然是s=33。
3)第三个被匹配串(图1(a)的CU m中编号为圈内3的像素样值串)有45个像素样值(=15个像素)。在历史像素中找到的对应的匹配串在CU h-1和CU h中(编号也是圈内3),前13个像素(39个像素样值)是CU h-1的第16列的最后13个像素,而后2个像素(6个像素样值)是CU h的第1列的最前2个像素。这个匹配串的第一个像素样值是CU h-1的第16列的第10个像素样值,而被匹配串的第一个像素样值是CU m的第2列的第28个像素样值,所以这个编号为圈内3的任意形状匹配的匹配位置是p=(768m+48 x 1+28)-(768 x (h-1)+48x 15+10)=768(m-h+1)-654。而其匹配大小(长度)显然是s=45。
例2:采用垂直扫描2维保形(2D-shape-preserved)匹配的匹配模式进行任意形状匹配
图1(a)的序号为m+1的当前编码CU(CU m+1)采用垂直扫描2维保形匹配的匹配模式进行任意形状匹配。在垂直扫描2维保形匹配的匹配模式中,历史像素保留原始图像的2维排列格式,且在一个像素中,3个像素分量(样值)是垂直排列,而在当前编码CU内,像素样值则以垂直扫描格式逐列排列并且在各列内统一自上而下排列。在历史像素中搜索匹配像素样值串时,在当前编码CU内,被匹配像素样值以垂直扫描格式自上而下移动,一列扫描和匹配完了之后,接着扫描和匹配右边相邻的一列。在历史像素中找到的匹配像素样值串必须与当前编码CU中的被匹配像素样值串保持完全一致的2维形状。图1(a)的CU m+1中画出了采用垂直扫描2维保形匹配模式的任意形状匹配中的前2个被匹配串:
1)第一个被匹配串(图1(a)的CU m+1中编号为圈内4的像素样值串)有45个像素样值(=15个像素)。在历史像素中找到的对应的匹配串在CU 1和CU h+1中(编号也是圈内4)。这个匹配串跨越2个CU的边界,3个像素(9个像素样值)在CU 1中,而另外12个像素(36个像素样值)在CU h+1中。历史像素集合中的匹配串与当前编码CU中的被匹配串具有完全相同的2维形状,也就是,匹配串是形成1列的45个像素样值,被匹配串也同样是形成1列的45个像素样值。匹配串的第一个像素样值是CU 1的第3列的第40个像素样值,所以其位置的平面(2维)坐标地址是
水平坐标=这个位置左方的像素列数=18,
垂直坐标=这个位置上方的像素样值数=39。
而被匹配串的第一个像素样值是CU m+1的第1列的第1个像素样值。设当前编码CU m+1的左方有本帧图像的h列像素而上方有本帧图像的v个像素样值,则被匹配串的第一个像素样值的位置的平面(2维)坐标地址是
水平坐标=h + 0=h,
垂直坐标=v + 0=v。
所以这个编号为圈内4的任意形状匹配的匹配位置是p=(h-18, v-39),也即匹配串和被匹配串中任意两个相对应的像素样值之间的水平距离是h-18而垂直距离是v-39。这个编号为圈内4的任意形状匹配的匹配大小显然是s=45。p和s的单位都是像素样值。
2)第二个被匹配串(图1(a)的CU m+1中编号为圈内5的像素样值串)有60个像素样值(=20个像素)。在历史像素中找到的对应的匹配串跨越了CU 1,CU 2,CU h+1,CU h+2这4个CU。这个匹配串(编号也是圈内5)的2个像素(6个像素样值)在CU 1中,2个像素(6个像素样值)在CU 2中,15个像素(45个像素样值)在CU h+1中,1个像素(3个像素样值)在CU h+2中。历史像素集合中的匹配串与当前编码CU中的被匹配串具有完全相同的2维形状。也就是,匹配串由3列组成,第1列有3个像素样值,第2列有48个像素样值,第3列有9个像素样值,第1列与第2列的底部对齐,而第2列与第3列的顶部对齐,这个匹配串的垂直高度(含上、下端点像素)为16个像素,等同于当前编码CU m+1的高度。被匹配串也完全同样由3列组成,第1列有3个像素样值,第2列有48个像素样值,第3列有9个像素样值,第1列与第2列的底部对齐,而第2列与第3列的顶部对齐,这个被匹配串的垂直高度(含上、下端点像素)当然也是当前编码CU m+1的高度即16个像素。这个匹配串的第一个像素样值是CU h+1的第15列的第40个像素样值,其左方有本帧图像的30列像素,上方有本帧图像的87个像素样值,而被匹配串的第一个像素样值是CU m+1的第1列的第46个像素样值,其左方有本帧图像的h+0列像素,上方有本帧图像的v+45个像素样值,所以这个编号为圈内5的任意形状匹配的匹配位置是p=(h+0-30, v+45-87)=(h-30, v-42),也即匹配串和被匹配串中任意两个相对应的像素样值之间的水平距离是h-30而垂直距离是v-42。这个编号为圈内5的任意形状匹配的匹配大小显然是s=60。
本例中匹配模式的特征是匹配像素样值串与被匹配像素样值串都形成当前图像中的2维区域,是当前图像的一部分,这两个2维区域,一个在历史像素中,另一个在当前CU中,两个2维区域具有相等的大小,并且保持完全一致的2维形状。每个2维区域由像素值垂直排列所形成的列所组成,除了第一列和最后一列之外的中间各列都有相同的高度,即这个区域的高度,第一列与这个区域的底部对齐,而最后一列与这个区域的顶部对齐。区域的高度可以与当前CU的高度相等,也可以与当前CU的高度不等而取另外一个任意的值或从当前CU的高度导出的一个值,如后面的例6和例7所示当前CU的高度的二分之一或四分之一。第一列和最后一列也可以与中间各列有相同的高度,即等于这个区域的高度,这时,这个区域就是一个矩形或正方形,如后面的例6和例7所示;本例中的匹配区域是2维区域,匹配大小一般需要用两个或两个以上的参数分量来表示,在匹配区域的高度可以从编码过程和解码过程中的其他参数或变量导出的特殊情形(如等于当前CU的高度或其二分之一),匹配大小也可以仅用一个参数分量来表示。
例3:采用水平扫描2维保形(2D-shape-preserved)匹配的匹配模式进行任意形状匹配
图1(a)的序号为m+2的当前编码CU(CU m+2)采用水平扫描2维保形匹配的匹配模式进行任意形状匹配。在水平扫描2维保形匹配的匹配模式中,历史像素保留原始图像的2维排列格式,且在一个像素中,3个像素分量(样值)也是水平排列,而在当前编码CU内,像素样值则以水平扫描格式逐行排列并且在各行内统一从左向右排列。在历史像素中搜索匹配像素样值串时,在当前编码CU内,被匹配像素样值以水平扫描格式从左向右移动,一行扫描和匹配完了之后,接着扫描和匹配下边相邻的一行。在历史像素中找到的匹配像素样值串必须与当前编码CU中的被匹配像素样值串保持完全一致的2维形状。图1(a)的CU m+2中画出了采用水平扫描2维保形匹配模式的任意形状匹配中的前3个被匹配串:
1)第一个被匹配串(图1(a)的CU m+2中编号为圈内6的像素样值串)有72个像素样值(=24个像素)。在历史像素中找到的对应的匹配串在CU 1和CU 2中(编号也是圈内6)。这个匹配串跨越2个CU的边界,14个像素(42个像素样值)在CU 1中,而另外10个像素(30个像素样值)在CU 2中。历史像素集合中的匹配串与当前编码CU中的被匹配串具有完全相同的2维形状。也就是,匹配串由2行组成,第1行有48个像素样值,第2行有24个像素样值,第1行与第2行的左端对齐,这个匹配串的水平宽度(含左、右端点像素)为16个像素,等同于当前编码CUm+2的宽度。被匹配串也同样由2行组成,第1行有48个像素样值,第2行有24个像素样值,第1行与第2行的左端对齐,这个被匹配串的水平宽度(含左、右端点像素)当然也是当前编码CUm+2的宽度即16个像素。匹配串的第一个像素样值是CU 1的第2行的第28个像素样值,所以其位置的平面(2维)坐标地址是
水平坐标=这个位置左方的像素样值数=75,
垂直坐标=这个位置上方的像素行数=1。
而被匹配串的第一个像素样值是CU m+2的第1行的第1个像素样值。设当前编码CU m+2的左方有本帧图像的h个像素样值而上方有本帧图像的v行像素,则被匹配串的第一个像素样值的位置的平面(2维)坐标地址是
水平坐标=h + 0=h,
垂直坐标=v + 0=v。
所以这个编号为圈内6的任意形状匹配的匹配位置是p=(h-75, v-1),也即匹配串和被匹配串中任意两个相对应的像素样值之间的水平距离是h-75而垂直距离是v-1。这个编号为圈内6的任意形状匹配的匹配大小显然是s=72。p和s的单位都是像素样值。
2)第二个被匹配串(图1(a)的CU m+2中编号为圈内7的像素样值串)有45个像素样值(=15个像素)。在历史像素中找到的对应的匹配串在CU h和CU h+1中(编号也是圈内7)。这个匹配串跨越2个CU的边界,6个像素(18个像素样值)在CU h中,而另外9个像素(27个像素样值)在CU h+1中。历史像素集合中的匹配串与当前编码CU中的被匹配串具有完全相同的2维形状。也就是,匹配串由2行组成,第1行有24个像素样值,第2行有21个像素样值,这个匹配串的水平宽度(含左、右端点像素)为16个像素,等同于当前编码CU m+2的宽度。被匹配串也同样由2行组成,第1行有24个像素样值,第2行有21个像素样值,这个被匹配串的水平宽度(含左、右端点像素)当然也是当前编码CU m+2的宽度即16个像素。这个匹配串的第一个像素样值是CU h+1的第15行的第7个像素样值,其左方有本帧图像的54个像素样值,上方有本帧图像的30行像素,而被匹配串的第一个像素样值是CU m+2的第2行的第25个像素样值,其左方有本帧图像的h+24个像素样值,上方有本帧图像的v+1行像素,所以这个编号为圈内7的任意形状匹配的匹配位置是p=(h+24-54, v+1-30)=(h-30, v-29),也即匹配串和被匹配串中任意两个相对应的像素样值之间的水平距离是h-30而垂直距离是v-29。这个编号为圈内7的任意形状匹配的匹配大小显然是s=45。
3)第三个被匹配串(图1(a)的CU m+2中编号为圈内8的像素样值串)有54个像素样值(=18个像素)。在历史像素中找到的对应的匹配串在CU 1和CU 2中(编号也是圈内8)。这个匹配串跨越2个CU的边界,3个像素(9个像素样值)在CU 1中,而另外15个像素(45个像素样值)在CU 2中。历史像素集合中的匹配串与当前编码CU中的被匹配串具有完全相同的2维形状。也就是,匹配串由2行组成,第1行有27个像素样值,第2行有27个像素样值,这个匹配串的水平宽度(含左、右端点像素)为16个像素,等同于当前编码CU m+2的宽度。被匹配串也同样由2行组成,第1行有27个像素样值,第2行有27个像素样值,这个被匹配串的水平宽度(含左、右端点像素)当然也是当前编码CU m+2的宽度即16个像素。这个匹配串的第一个像素样值是CU 2的第11行的第13个像素样值,其左方有本帧图像的108个像素样值,上方有本帧图像的10行像素,而被匹配串的第一个像素样值是CU m+2的第3行的第22个像素样值,其左方有本帧图像的h+21个像素样值,上方有本帧图像的v+2行像素,所以这个编号为圈内8的任意形状匹配的匹配位置是p=(h+21-108, v+2-10)=(h-87, v-8),也即匹配串和被匹配串中任意两个相对应的像素样值之间的水平距离是h-87而垂直距离是v-8。这个编号为圈内8的任意形状匹配的匹配大小显然是s=54。
本例中匹配模式的特征是匹配像素样值串与被匹配像素样值串都形成当前图像中的2维区域,是当前图像的一部分,这两个2维区域,一个在历史像素中,另一个在当前CU中,两个2维区域具有相等的大小,并且保持完全一致的2维形状。每个2维区域由像素值水平排列所形成的行所组成,除了第一行和最后一行之外的中间各行都有相同的宽度,即这个区域的宽度,第一行与这个区域的右部对齐,而最后一行与这个区域的左部对齐。区域的宽度可以与当前CU的宽度相等,也可以与当前CU的宽度不等而取另外一个任意的值或从当前CU的宽度导出的一个值,如后面的例6和例7所示当前CU的宽度的二分之一或四分之一。第一行和最后一行也可以与中间各行有相同的宽度,即等于这个区域的宽度,这时,这个区域就是一个矩形或正方形,如后面的例6和例7所示;本例中的匹配区域是2维区域,匹配大小一般需要用两个或两个以上的参数分量来表示,在匹配区域的宽度可以从编码过程和解码过程中的其他参数或变量导出的特殊情形(如等于当前CU的宽度或其二分之一),匹配大小也可以仅用一个参数分量来表示。
例4:采用垂直扫描2维保形匹配且列扫描方向交替变换的匹配模式进行任意形状匹配
如图1(b)的CU m+1所例示,与例2即采用垂直扫描2维保形匹配的模式基本相同,唯一的不同之处是:在历史像素中搜索匹配像素样值串时,在当前编码CU内,被匹配像素样值以垂直扫描格式在第1列中自上而下移动,在第2列中自下而上移动,在第3列中又自上而下移动,交替变换扫描方向,一列扫描和匹配完了之后,接着扫描和匹配右边相邻的一列。历史像素中的匹配串的垂直扫描方向也是与被匹配串同步交替变换,与被匹配串的像素样值扫描移动方向一致。这种相邻列具有相反方向的扫描格式称为弓形扫描或称来回扫描格式。
例5:采用水平扫描2维保形匹配且行扫描方向交替变换的匹配模式进行任意形状匹配
如图1(b)的CU m+2所例示,与例3即采用水平扫描2维保形匹配的模式基本相同,唯一的不同之处是:在历史像素中搜索匹配像素样值串时,在当前编码CU内,被匹配像素样值以水平扫描格式在第1行中从左向右移动,在第2行中从右向左移动,在第3行中又从左向右移动,交替变换扫描方向,一行扫描和匹配完了之后,接着扫描和匹配下边相邻的一行。历史像素中的匹配串的水平扫描方向也是与被匹配串同步交替变换,与被匹配串的像素样值扫描移动方向一致。这种相邻行具有相反方向的扫描格式称为弓形扫描或称来回扫描格式。
例6:采用水平扫描2维保形匹配且一种固定匹配大小的匹配块为匹配单位的匹配模式进行任意形状匹配
与例3即采用水平扫描2维保形匹配的匹配模式基本相同,唯一不同的2点是:
1)在历史像素集合中搜索最优匹配时,不是以任意长度的像素样值串为单位,而是以预定的一种固定匹配大小的像素块为单位。如,以4x4像素的正方形为单位,或8x4像素的矩形为单位,或4x8像素的矩形为单位。也就是例2和例3中的所有由像素值排列形成的2维区域都是矩形或正方形。
2)由于在一个当前编码CU内,所有匹配块的匹配大小都是一个预定的固定尺寸,所以这个CU内任意一个匹配块,都可以用匹配位置p这一个参数来表征,而不需要用匹配位置p和匹配大小s两个参数来表征。
例7:采用水平扫描2维保形匹配且几种固定匹配大小的匹配块为匹配单位的匹配模式进行任意形状匹配
与例6基本相同,唯一不同的2点是:
1)在历史像素集合中搜索最优匹配时,不是以预定的一种固定匹配大小的像素块为单位,而是以预定的若干种固定匹配大小的像素块为单位。如,以4x4像素、8x4像素、4x8像素这3种预定的匹配大小的正方形和矩形为单位。也就是例2和例3中的所有由像素值排列形成的2维区域都是若干种预定的矩形或正方形。
2)对这若干种固定匹配大小,可以用编号来表示这预定的若干种匹配大小。所以这个CU内任意一个匹配块,都可以用匹配位置p和预定的若干种匹配大小的编号这两个参数来表征,而不需要用匹配位置p和匹配大小s两个参数来表征;匹配大小的编号通常比匹配大小本身占用更少的比特数。
本发明的解码方法和装置中,最基本的特有技术特征就是在对当前解码CU的压缩码流数据进行解码时,首先从码流数据中解析出该CU采用的任意形状匹配的匹配模式(如以上例1~例7所示的匹配模式的例),然后从码流数据中依次读出一个一个匹配串(块)的表征参数即匹配位置和匹配大小。在有些匹配模式,一个CU或LCU仅有预定的几种甚至一种固定的匹配大小,因此,每个匹配串或匹配块从码流数据中读出的并不是匹配大小本身,而是这几种预定的匹配大小的编号,甚至码流中根本就没有每个匹配串或匹配块的各自的匹配大小的信息,只有该CU或LCU共同的匹配大小的信息。在得到了一个匹配串(块)的匹配位置和匹配大小之后,解码工作就是根据任意形状匹配的匹配模式,从当前解码的被匹配串(块)的第一个像素样值的位置和匹配位置计算出历史像素集合中的匹配串(块)的第一个像素样值的位置。然后,再根据任意形状匹配的匹配模式,就可以从历史像素集合中复制整个匹配串(块)的由匹配大小指定的所有像素样值数,并将由匹配大小指定了其尺寸(长度或面积)的整个匹配串(块)移动和粘贴到当前解码中的被匹配串(块)的位置,复原出整个被匹配串(块)。这样依次复制、移动、粘贴一个一个匹配串(块),最终复原出整个当前解码CU的所有像素。可见,匹配方式的解码操作都至少包括“复制”操作,从解码的角度来看,匹配、匹配方式、匹配操作、匹配串、串匹配、匹配块、块匹配、匹配位置、匹配长度等也常称为复制、复制方式、复制操作、复制串、串复制、复制块、块复制、复制位置、复制长度等。
图2有3种匹配模式(包括像素样值排列扫描格式和匹配格式)的任意形状匹配的解码例。图2(a)表示的一幅图像中CU m,CU m+1,CU m+2这3个CU分别采用这3种匹配模式进行任意形状匹配。
图2(a)中的CU m采用了垂直扫描1维串形匹配的匹配模式进行任意形状匹配。因此,历史像素的排列格式是先以LCU序号的顺序排列,而在一个LCU内,像素样值以垂直扫描格式逐列排列,这样,历史像素最终排列成一个一维的像素样值串。解码时,从此历史像素集合中根据从码流数据中得到的匹配位置和匹配大小,逐个复制编号为圈内1的匹配串、编号为圈内2的匹配串、编号为圈内3的匹配串、……等,并将他们移动和粘贴到当前解码CU中编号为圈内1的被匹配串、编号为圈内2的被匹配串、编号为圈内3的被匹配串、……等的位置,复原出编号为圈内1的被匹配串、编号为圈内2的被匹配串、编号为圈内3的被匹配串、……等。编号为圈内1的匹配串的p=768m-753,s=42,所以是在以所述1维串形格式排列的历史像素中,从与当前被匹配串的位置距离为768m-753个像素样值的地方,复制42个像素样值,并把这42个像素样值移动和粘贴到编号为圈内1的被匹配串的位置,复原出整个编号为圈内1的被匹配串。同样,编号为圈内2的匹配串的p=768m-81,s=33,所以是在以所述1维串形格式排列的历史像素中,从与当前被匹配串的位置距离为768m-81个像素样值的地方,复制33个像素样值,并把这33个像素样值移动和粘贴到编号为圈内2的被匹配串的位置,复原出整个编号为圈内2的被匹配串。用同样方式,可解码和复原编号为圈内3的被匹配串、……等CU m中的所有被匹配串。
图2中的CU m+1采用了垂直扫描2维保形匹配的匹配模式进行任意形状匹配,其中(a)采用光栅扫描而(b)采用弓形扫描(也称来回扫描)。因此,历史像素保留原始图像的2维排列格式,且在一个像素中,3个像素分量(样值)是垂直排列。解码时,从此历史像素集合中根据从码流数据中得到的匹配位置和匹配大小,逐个复制编号为圈内4的匹配串、编号为圈内5的匹配串、……等,并将他们移动和粘贴到当前解码CU中编号为圈内4的被匹配串、编号为圈内5的被匹配串、……等的位置,复原出编号为圈内4的被匹配串、编号为圈内5的被匹配串、……等。编号为圈内4的匹配串的p=(h-18, v-39),s=45,所以是在以图像的2维格式排列的历史像素中,从与当前被匹配串的位置的水平距离为h-18个像素样值和垂直距离为v-39个像素样值的地方,复制45个像素样值,并把这45个像素样值移动和粘贴到编号为圈内4的被匹配串的位置,复原出整个编号为圈内4的被匹配串。同样,编号为圈内5的匹配串的p=(h-30, v-42),s=60,所以是在以图像的2维格式排列的历史像素中,从与当前被匹配串的位置的水平距离为h-30个像素样值和垂直距离为v-42个像素样值的地方,复制60个像素样值,并把这60个像素样值移动和粘贴到编号为圈内5的被匹配串的位置,复原出整个编号为圈内5的被匹配串。用同样方式,可解码和复原CU m+1中的所有被匹配串。
图2中的CU m+2采用了水平扫描2维保形匹配的匹配模式进行任意形状匹配,其中(a)采用光栅扫描而(b)采用弓形扫描(也称来回扫描)。因此,历史像素保留原始图像的2维排列格式,且在一个像素中,3个像素分量(样值)也是水平排列。解码时,从此历史像素集合中根据从码流数据中得到的匹配位置和匹配大小,逐个复制编号为圈内6的匹配串、编号为圈内7的匹配串、编号为圈内8的匹配串、……等,并将他们移动和粘贴到当前解码CU中编号为圈内6的被匹配串、编号为圈内7的被匹配串、编号为圈内8的匹配串、……等的位置,复原出编号为圈内6的被匹配串、编号为圈内7的被匹配串、编号为圈内8的匹配串、……等。编号为圈内6的匹配串的p=(h-75, v-1),s=72,所以是在以图像的2维格式排列的历史像素中,从与当前被匹配串的位置的水平距离为h-75个像素样值和垂直距离为v-1个像素样值的地方,复制72个像素样值,并把这72个像素样值移动和粘贴到编号为圈内6的被匹配串的位置,复原出整个编号为圈内6的被匹配串。同样,编号为圈内7的匹配串的p=(h-30, v-29),s=45,所以是在以图像的2维格式排列的历史像素中,从与当前被匹配串的位置的水平距离为h-30个像素样值和垂直距离为v-29个像素样值的地方,复制45个像素样值,并把这45个像素样值移动和粘贴到编号为圈内7的被匹配串的位置,复原出整个编号为圈内7的被匹配串。用同样方式,可解码和复原编号为圈内8的被匹配串、……等CU m+2中的所有被匹配串。
以上通过若干特定的具体实例说明本发明的技术特征。本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在不背离本发明的精神下进行各种修饰或改变。
本发明的编码方法的一般流程示意图如图3(a)所示。本发明的编码方法包括如下步骤:
1)像素特性分析评估、前处理和编码方式选择步骤;对当前CU和邻近CU的像素样值特性进行分析评估,对输入像素样值进行必要的前处理,预先判断任意形状匹配编码方式是否适合用来对当前CU进行编码,本步骤是可选的,即可以跳过本步骤,直接进入下一步骤;所述分析评估的办法的例:依据或参考邻近CU的编码结果的办法,计算当前CU中不同颜色的像素的个数的办法;所述前处理的例:样值量化、颜色量化和基于颜色的像素聚类、用调色板和索引来精确或近似地表示输入原始像素的颜色;
2)任意形状匹配编码步骤;使用任意形状匹配编码方式和已编码的历史像素(重构像素)暂存区(也称为参考像素样值集)对当前CU进行任意形状匹配编码运算;所述任意形状匹配编码的输入是输入原始像素或其经过前处理的像素;所述任意形状匹配编码的输出是匹配串(块)的匹配位置及匹配大小或其变体,未匹配像素值或其变体,匹配残差和其他任意形状匹配编码结果参数和变量;所述匹配位置是用来表示与所述当前CU中匹配当前像素值相匹配的匹配参考像素值在所述参考像素样值集内的什么位置的变量参数;所述任意形状匹配编码方式以可变大小的像素样值串或块(称为匹配当前串或匹配当前块,其位置既可用一个2维坐标也可用一个线性地址来表示)为单位进行匹配编码,所述匹配参考像素值形成所述参考像素样值集内的一个匹配串或匹配块,称为匹配参考串或匹配参考块,其位置也是既可用一个2维坐标也可用一个线性地址来表示,因而在所述任意形状匹配编码方式中,所述匹配位置既可用匹配参考串(块)的2维坐标与匹配当前串(块)的2维坐标之差也可用匹配参考串(块)的线性地址与匹配当前串(块)的线性地址之差,通称为位移矢量来表示;由于匹配参考串(块)的大小(等于匹配当前串(块)的大小)是可变的,所以还需要另一个称为匹配大小的变量参数来表示其大小;在匹配串的场合,匹配大小一般就是匹配串的长度;在匹配块的场合,一个块的大小一般需要用多个参数分量来表示;例如,块是矩形的情形,匹配大小一般含有两个分量即矩形的宽度和高度(有时也称为长和宽);再例如,块是平行四边形的情形,匹配大小一般也含有两个分量即平行四边形的底和高;又例如,块是梯形的情形,匹配大小一般含有三个分量即梯形的上底、下底和高;所述未匹配像素值是依据预先确定的匹配准则在所述参考像素样值集内未找到匹配的输入原始像素样值或其经过前处理的像素样值;所述未匹配像素值是一个输入原始像素样值或其经过前处理的像素样值,所以也可以用其在当前CU中的位置来表示;所述未匹配像素值也可以用一个通过计算得到的有损或无损的仿匹配样值来近似;如果匹配大小为1,这个匹配串(块)也可以作为未匹配像素值来处理;所述匹配残差是输入原始像素样值与所述匹配参考像素值之差,如果任意形状匹配编码方式预先确定的匹配准则是绝对精确的无损匹配,则所述匹配残差为零,即这种任意形状匹配编码方式就没有匹配残差作为输出,如果一种任意形状匹配编码方式预先确定的匹配准则是近似的有损匹配,则所述匹配残差可能不为零,另一种有损匹配的情形是首先对输入原始像素样值进行样值量化、颜色量化或者基于颜色的像素聚类、用调色板和索引来近似表示输入原始像素的颜色的前处理,然后再进行任意形状匹配编码,在这种情形,由于样值量化、颜色量化或者基于颜色的像素聚类、调色板和索引表示的像素是有损的,即使任意形状匹配编码本身是无损的,所述匹配残差(即输入原始像素样值与所述匹配参考像素值之差)也可能不为零;所述其他任意形状匹配编码结果的例:匹配模式,使用匹配串构成任意形状块的规则,匹配参数的变体的类型,匹配位置的计算规则,匹配大小的计算规则,等;对所述当前CU进行任意形状匹配编码的最基本和本质的结果是I(I≥ 0)个匹配串(块)和J(J ≥ 0)个未匹配像素值,输出I对(匹配位置,匹配大小)和J个未匹配像素值;所述I个匹配串(块)和J个未匹配像素值无缝拼接正好形成完整的当前CU;
3)其余的匹配方式和各种常用技术编码与重构运算步骤,完成当前CU的所有其余编码和重构运算,对输入视频图像的输入原始像素、各种参数和变量进行其他匹配方式和各种常用技术,如帧内预测、帧间预测、块匹配、调色板匹配、条匹配、微块匹配、微块串匹配、仿匹配样值预测插值、变换、量化、逆变换、反量化、对应于预测残差和匹配残差的补偿(即取残差运算的逆运算)、预测并求残差、DPCM、一阶和高阶差分、映射、游程、索引、去块效应滤波、样值自适应补偿(Sample Adaptive Offset),的编码与重构运算以及熵编码运算;所述其余的匹配方式是指编码方法中不同于所述步骤2)进行的任意形状匹配编码的匹配方式;本步骤的输入是上述步骤1)和步骤2)的输出和输入原始像素以及来自所述参考像素样值集的参考像素;本步骤的输出是重构像素(包括完全重构像素和不同程度的部分重构像素)和含任何形状匹配编码结果和其他编码结果的压缩码流;所述重构像素放入所述参考像素样值集之中,用作后续任意形状匹配编码运算、其余的匹配方式和各种常用技术编码与重构运算步骤所需要的参考像素;所述压缩码流是本编码方法的最后输出,包含了对应的解码方法进行解码与重构所需要的全部语法元素,特别是匹配位置及匹配大小或其变体、未匹配像素值或其变体等语法元素。
本发明的解码方法的一般流程示意图如图3(b)所示。本发明的解码方法包括如下步骤:
1)压缩码流数据解析与部分解码步骤;对输入的含任意形状匹配编码的匹配位置及匹配大小或其变体、未匹配像素值或其变体的压缩数据以及所有其他语法元素压缩数据的压缩码流进行熵解码,并解析出熵解码得到的各种数据的意义,对一部分语法元素,特别是与任意形状匹配编码有关的语法元素,进行熵解码后的部分解码(如变换解码、预测并做补偿即求残差运算的逆运算、DPCM解码、一阶和高阶差分解码、映射解码、游程解码、索引解码);把解析和部分解码后得到的匹配位置及匹配大小或其变体、未匹配像素值或其变体等任意形状匹配参数输出给后续任意形状匹配解码步骤;把解析得到的所有其他语法元素如与任意形状匹配残差、其余的匹配方式的匹配模式和匹配参数、各种常用技术的编码结果等有关的语法元素的熵解码结果输出数据(即熵解码的结果)输出给后续其余的匹配方式和各种常用技术解码与重构运算步骤;特别是,依据从压缩码流数据中解析得到的信息或者依据从压缩码流数据中解析得到的信息再加上对当前CU以及邻近CU的特性进行分析评估的结果,决定是否对当前CU进行任意形状匹配解码;所述分析评估的办法的例:依据或参考邻近CU的若干解码结果的办法,使用任意形状匹配解码方式和其他解码方式对当前CU先做一轮部分预解码并评估部分预解码结果的办法;如果决定对当前CU进行任意形状匹配解码,则顺序执行下一步骤,否则,跳至步骤3);
2)任意形状匹配解码步骤;使用任意形状匹配解码方式和已完成解码的历史像素(重构像素)暂存区(也称为参考像素样值集)对当前CU进行任意形状匹配解码运算;所述任意形状匹配解码运算的输入是在步骤1)中从压缩码流数据中解析和解码得到的I(I ≥ 0)对(匹配位置,匹配大小)或其变体和J(J ≥ 0)个未匹配像素值或其变体等任意形状匹配参数;所述匹配位置是用来表示从参考像素样值集内的什么位置复制匹配参考样值并将其粘贴到当前CU的匹配当前样值的位置;显而易见,匹配当前样值是匹配参考样值的复制品,两者在数值上是相等的;任意形状匹配解码方式以可变大小的像素样值串或块(称为匹配当前串或匹配当前块,其位置既可用一个2维坐标也可用一个线性地址来表示)为单位进行任意形状匹配解码,所述匹配参考样值形成所述参考像素样值集内的一个匹配串(块),称为匹配参考串(块),其位置也是既可用一个2维坐标也可用一个线性地址来表示,因而在任意形状匹配解码方式中,所述匹配位置既可用匹配参考串(块)的2维坐标与匹配当前串(块)的2维坐标之差也可用匹配参考串(块)的线性地址与匹配当前串(块)的线性地址之差,通称为位移矢量来表示,由于匹配参考串(块)的大小(等于匹配当前串(块)的大小)是可变的,所以还需要另一个称为匹配大小的变量参数来表示其大小;在匹配串的场合,匹配大小一般就是匹配串的长度;在匹配块的场合,一个块的大小一般需要用多个参数分量来表示;例如,块是矩形的情形,匹配大小一般含有两个分量即矩形的宽度和高度(有时也称为长和宽);再例如,块是平行四边形的情形,匹配大小一般也含有两个分量即平行四边形的底和高;又例如,块是梯形的情形,匹配大小一般含有三个分量即梯形的上底、下底和高;所述未匹配像素值是直接从压缩码流数据中解析和解码得到的像素值并将其粘贴到当前CU的当前解码中像素值的位置,所述未匹配像素值通常不存在于所述参考像素样值集;如果从压缩码流数据中解析和解码得到的不是未匹配像素值本身而是未匹配像素值的位置,那么就把未匹配像素值的位置输出到后续步骤3)以计算仿匹配像素值;所述任意形状匹配解码运算的输出是所述匹配当前样值(在数值上与匹配参考样值相等)加上所述未匹配像素值(或其位置);所述匹配当前样值和可能存在的所述未匹配像素值(或其位置)全部合起来就构成所述当前CU的完整的任意形状匹配解码输出;最后得到的I(I ≥ 0)个匹配串(块)和J(J≥ 0)个未匹配像素值无缝拼接正好形成完整的当前CU;进行任意形状匹配解码运算时,首先确定匹配参考样值在历史像素(重构像素)暂存模块(也称为参考像素样值集)中所处的位置以及确定由匹配参考样值构成的匹配区域(匹配区域可以是匹配串或匹配块)的形状大小,然后从所述位置复制所述形状大小的所述匹配区域内的匹配参考样值,并将所述匹配参考样值移动和粘贴到当前解码中匹配当前样值的位置,复原出匹配当前样值;本模块的输出是所有复原的所述匹配当前样值以及可能的未匹配像素值;
3)其余的匹配方式和各种常用技术解码与重构运算步骤,完成当前CU的所有其余解码和重构运算,对当前解码中匹配串(或匹配块)或当前解码中CU的各种参数和变量进行其他匹配方式和各种常用技术,如帧内预测、帧间预测、块匹配、调色板匹配、条匹配、微块匹配、微块串匹配、仿匹配样值预测插值、逆变换、反量化、对应于预测残差和匹配残差的补偿(即取残差运算的逆运算)、预测并做补偿(即求残差运算的逆运算)、DPCM、一阶和高阶差分、映射、游程、索引、去块效应滤波、样值自适应补偿(Sample Adaptive Offset),的解码和重构运算;所述其他匹配方式是指解码方法中不同于所述步骤2)进行的任意形状匹配解码的匹配方式;本步骤的输入是上述步骤1)输出的所有其他语法元素如匹配残差的熵解码输出数据和步骤2)的输出即所述匹配当前样值加上可能存在的所述未匹配像素值(或其位置),以及来自所述参考像素样值集内的参考像素;本步骤的输出是重构像素(包括完全重构像素和不同程度的部分重构像素);所述重构像素放入所述参考像素样值集之中,用作后续任意形状匹配解码运算、其余的匹配方式和各种常用技术解码与重构运算步骤所需要的参考像素;所述完全重构像素也是本解码方法的最后输出。
本发明的编码装置的一般示意图如图4(a)所示。整个编码装置由以下模块组成:
1)像素前处理和任意形状匹配编码模块:对输入视频图像像素值施行像素前处理和任意形状匹配编码,产生并输出匹配串(块)的匹配位置及匹配大小或其变体,未匹配像素值或其变体,匹配残差和其他任意形状匹配编码结果参数和变量;所述像素前处理的例:样值量化、颜色量化和基于颜色的像素聚类、用调色板和索引来精确或近似表示输入原始像素的颜色;所述匹配位置是用来表示与所述当前CU中匹配当前像素值相匹配的匹配参考像素值在历史像素(重构像素)暂存模块(也称为参考像素样值集)内的什么位置的变量参数;所述任意形状匹配编码方式以可变大小的像素样值串或块(称为匹配当前串或匹配当前块,其位置既可用一个2维坐标也可用一个线性地址来表示)为单位进行匹配编码,所述匹配参考像素值形成所述参考像素样值集内的一个匹配串或匹配块,称为匹配参考串或匹配参考块,其位置也是既可用一个2维坐标也可用一个线性地址来表示,因而在所述任意形状匹配编码方式中,所述匹配位置既可用匹配参考串(块)的2维坐标与匹配当前串(块)的2维坐标之差也可用匹配参考串(块)的线性地址与匹配当前串(块)的线性地址之差,通称为位移矢量来表示;由于匹配参考串(块)的大小(等于匹配当前串(块)的大小)是可变的,所以还需要另一个称为匹配大小的变量参数来表示其大小;在匹配串的场合,匹配大小一般就是匹配串的长度;在匹配块的场合,一个块的大小一般需要用多个参数分量来表示;例如,块是矩形的情形,匹配大小一般含有两个分量即矩形的宽度和高度(有时也称为长和宽);再例如,块是平行四边形的情形,匹配大小一般也含有两个分量即平行四边形的底和高;又例如,块是梯形的情形,匹配大小一般含有三个分量即梯形的上底、下底和高;所述未匹配像素值是依据预先确定的匹配准则在所述参考像素样值集内未找到匹配的输入原始像素样值或其经过前处理的像素样值;所述未匹配像素值是一个输入原始像素样值或其经过前处理的像素样值,所以也可以用其在当前CU中的位置来表示;所述未匹配像素值也可以用一个通过计算得到的有损或无损的仿匹配样值来近似;如果匹配大小为1,这个匹配串(块)也可以作为未匹配像素值来处理;所述匹配残差是输入原始像素样值与所述匹配参考像素值之差,如果任意形状匹配编码方式预先确定的匹配准则是绝对精确的无损匹配,则所述匹配残差为零,即这种任意形状匹配编码方式就没有匹配残差作为输出,如果一种任意形状匹配编码方式预先确定的匹配准则是近似的有损匹配,则所述匹配残差可能不为零,另一种有损匹配的情形是首先对输入原始像素样值进行样值量化、颜色量化或者基于颜色的像素聚类、用调色板和索引来近似表示输入原始像素的颜色的前处理,然后再进行任意形状匹配编码,在这种情形,由于样值量化、颜色量化或者基于颜色的像素聚类、调色板和索引表示的像素是有损的,即使任意形状匹配编码本身是无损的,所述匹配残差(即输入原始像素样值与所述匹配参考像素值之差)也可能不为零;所述其他任意形状匹配编码结果的例:匹配模式,使用匹配串构成任意形状块的规则,匹配参数的变体的类型,匹配位置的计算规则,匹配大小的计算规则,等;对所述当前CU进行任意形状匹配编码的最基本和本质的结果是I(I ≥ 0)个匹配串(块)和J(J ≥ 0)个未匹配像素值,输出I对(匹配位置,匹配大小)和J个未匹配像素值;所述I个匹配串(块)和J个未匹配像素值无缝拼接正好形成完整的当前CU;
2)其余的匹配方式和各种常用技术编码与重构模块:对输入视频像素、各种参数和变量施行其他匹配方式和各种常用技术,如帧内预测、帧间预测、块匹配、调色板匹配、条匹配、微块匹配、微块串匹配、仿匹配样值预测插值、变换、量化、逆变换、反量化、对应于预测残差和匹配残差的补偿(即取残差运算的逆运算)、预测并求残差、DPCM、一阶和高阶差分、映射、游程、索引、去块效应滤波、样值自适应补偿(Sample Adaptive Offset),的编码与重构运算以及熵编码运算;所述其余的匹配方式是指编码装置中不同于所述模块1)施行的任意形状匹配编码的匹配方式;本模块的输入是所述模块1)的输出、原始的所述输入视频像素和来自所述参考像素样值集的参考像素;本模块的输出是重构像素值(包括完全重构像素和不同程度的部分重构像素)和含任何形状匹配编码结果和其他编码结果的压缩码流;所述重构像素值放入历史像素(重构像素)暂存模块中,用作后续任意形状匹配编码运算、其余的匹配方式和各种常用技术编码和重构运算所需要的参考像素值;所述压缩码流是本编码装置的最后输出,包含了对应的解码方法进行解码与重构所需要的全部语法元素,特别是匹配位置及匹配大小或其变体、未匹配像素值或其变体等语法元素;
3)历史像素(重构像素)暂存模块:也称为参考像素样值集,暂存已重构的像素值,即在编码过程中到当前编码中CU或当前编码中匹配区域(可以是匹配串或匹配块)的开始位置为止的已重构像素值,用作当前和后续任意形状匹配编码的参考像素值,也用作对当前和后续CU施行其余的匹配方式和各种常用技术的编码和重构运算时所需要的参考像素值;重构像素值通常是经历过多道工序后才达到完全的重构的;因此,参考像素样值集内存储的重构像素值一般包括不同种类的完全重构像素和不同程度的部分重构像素即仅经历过部分工序的重构像素;不同的匹配模式可以采用同一种类的重构像素作为参考像素,也可以采用不同种类的重构像素作为参考像素;同一匹配模式中,也可以在不同的匹配位置采用不同种类的重构像素作为参考像素。
本发明的解码装置的一般示意图如图4(b)所示。整个解码装置由以下模块组成:
1)码流数据解析与部分解码模块:对输入的含任意形状匹配编码的匹配位置及匹配大小或其变体、未匹配像素值或其变体的压缩数据以及所有其他语法元素压缩数据的压缩码流施行熵解码,并解析出熵解码得到的各种数据的意义,对一部分语法元素,特别是与任意形状匹配编码有关的语法元素,进行熵解码后的部分解码(如变换解码、预测并做补偿即求残差运算的逆运算、DPCM解码、一阶和高阶差分解码、映射解码、游程解码、索引解码);把解析和部分解码后得到的匹配位置及匹配大小或其变体、未匹配像素值或其变体等任意形状匹配参数送往任意形状匹配解码模块;把解析得到的匹配残差等其他任意形状匹配编码结果、其余的匹配方式的匹配模式和匹配参数、各种常用技术的编码结果等的语法元素的熵解码结果输出数据(即熵解码的结果)送往其余的匹配方式和各种常用技术解码与重构模块;所述部分解码的其他的例:依据从压缩码流数据中解析得到的信息或者依据从压缩码流数据中解析得到的信息再加上对当前CU以及邻近CU的特性进行分析评估的结果,决定是否对当前CU进行任意形状匹配解码;所述分析评估的办法的例:依据或参考邻近CU的若干解码结果的办法,使用任意形状匹配解码方式和其他解码方式对当前CU先做一轮部分预解码并评估部分预解码结果的办法;
2)任意形状匹配解码模块:根据所述匹配位置及匹配大小或其变体、未匹配像素值或其变体等任意形状匹配参数施行任意形状匹配解码运算;本模块的输入是所述模块1)输出的从压缩码流数据中解析和解码得到的I(I ≥ 0)对(匹配位置,匹配大小)或其变体和J(J≥ 0)个未匹配像素值或其变体等任意形状匹配参数;所述匹配位置是用来表示从参考像素样值集内的什么位置复制匹配参考样值并将其粘贴到当前CU的匹配当前样值的位置;显而易见,匹配当前样值是匹配参考样值的复制品,两者在数值上是相等的;任意形状匹配解码方式以可变大小的像素样值串或块(称为匹配当前串或匹配当前块,其位置既可用一个2维坐标也可用一个线性地址来表示)为单位进行任意形状匹配解码,所述匹配参考样值形成所述参考像素样值集内的一个匹配串(块),称为匹配参考串(块),其位置也是既可用一个2维坐标也可用一个线性地址来表示,因而在任意形状匹配解码方式中,所述匹配位置既可用匹配参考串(块)的2维坐标与匹配当前串(块)的2维坐标之差也可用匹配参考串(块)的线性地址与匹配当前串(块)的线性地址之差,通称为位移矢量来表示,由于匹配参考串(块)的大小(等于匹配当前串(块)的大小)是可变的,所以还需要另一个称为匹配大小的变量参数来表示其大小;在匹配串的场合,匹配大小一般就是匹配串的长度;在匹配块的场合,一个块的大小一般需要用多个参数分量来表示;例如,块是矩形的情形,匹配大小一般含有两个分量即矩形的宽度和高度(有时也称为长和宽);再例如,块是平行四边形的情形,匹配大小一般也含有两个分量即平行四边形的底和高;又例如,块是梯形的情形,匹配大小一般含有三个分量即梯形的上底、下底和高;所述未匹配像素值是直接从压缩码流数据中解析和解码得到的像素值并将其粘贴到当前CU的当前解码中像素值的位置,所述未匹配像素值通常不存在于所述参考像素样值集;如果从压缩码流数据中解析和解码得到的不是未匹配像素值本身而是未匹配像素值的位置,那么就把未匹配像素值的位置输出到后续步骤3)以计算仿匹配像素值;所述任意形状匹配解码运算的输出是所述匹配当前样值(在数值上与匹配参考样值相等)加上所述未匹配像素值(或其位置);所述匹配当前样值和可能存在的所述未匹配像素值(或其位置)全部合起来就构成所述当前CU的完整的任意形状匹配解码输出;最后得到的I(I ≥ 0)个匹配串(块)和J(J ≥ 0)个未匹配像素值无缝拼接正好形成完整的当前CU;施行任意形状匹配解码运算时,首先确定匹配参考样值在历史像素(重构像素)暂存模块(也称为参考像素样值集)中所处的位置以及确定由匹配参考样值构成的匹配区域(匹配区域可以是匹配串或匹配块)的形状大小,然后从所述位置复制所述形状大小的所述匹配区域内的匹配参考样值,并将所述匹配参考样值移动和粘贴到当前解码中匹配当前样值的位置,复原出匹配当前样值;本模块的输出是所有复原的所述匹配当前样值以及可能的未匹配像素值;
3)其余的匹配方式和各种常用技术解码和重构模块:对当前解码中匹配串(或匹配块)或当前解码中CU的各种参数和变量施行其他匹配方式和各种常用技术,如帧内预测、帧间预测、逆变换、反量化、对应于预测残差和匹配残差的补偿(即取残差运算的逆运算)、DPCM、一阶和高阶差分、映射、游程、索引、去块效应滤波、样值自适应补偿(Sample AdaptiveOffset),的解码和重构运算;所述其他匹配方式是指解码装置中不同于所述模块2)施行的任意形状匹配解码的匹配方式;本模块的输出是重构像素值(包括完全重构像素值和不同程度的部分重构像素值);所述重构像素值放入历史像素(重构像素)暂存模块中,用作后续匹配解码运算、其余的匹配方式和各种常用技术解码和重构运算所需要的参考像素值;所述完全重构像素值也是本解码装置的最后输出;
4)历史像素(重构像素)暂存模块:也称为参考像素样值集,暂存已重构的像素值,即在解码过程中到当前解码中CU或当前解码中匹配区域(可以是匹配串或匹配块)的开始位置为止的已重构像素值,用作当前和后续任意形状匹配解码的参考像素值,也用作对当前和后续CU施行其余的匹配方式和各种常用技术的解码和重构运算时所需要的参考像素值;重构像素值通常是经历过多道工序后才达到完全的重构的;因此,参考像素样值集内存储的重构像素值一般包括不同种类的完全重构像素和不同程度的部分重构像素即仅经历过部分工序的重构像素;不同的匹配模式可以采用同一种类的重构像素作为参考像素,也可以采用不同种类的重构像素作为参考像素;同一匹配模式中,也可以在不同的匹配位置采用不同种类的重构像素作为参考像素。
优选地,所述样值是像素值用调色板和索引来表示时的索引值,所述参考样值、当前样值、参考样值集、参考样值暂存模块、匹配参考样值串(块)、匹配当前样值串(块)分别是参考索引、当前索引、参考索引集、参考索引暂存模块、匹配参考索引串(块)、匹配当前索引串(块)。
优选地,在压缩视频码流中,至少存在表示调色板的信息。
以上所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
附图说明
图1是任意形状匹配编码时,针对当前编码CU,在历史像素中搜索多段任意形状匹配串,其中(a)采用光栅扫描而(b)采用弓形扫描(也称来回扫描)。
图2是任意形状匹配解码时,从历史像素中把多段任意形状匹配串复制后粘贴到当前解码CU,其中(a)采用光栅扫描而(b)采用弓形扫描(也称来回扫描)。
图3是本发明的编码方法流程示意图和解码方法流程示意图。
图4是本发明的编码装置的模块组成示意图和解码装置的模块组成示意图。
具体实施方式
以下是本发明的更多的实施细节和变化。
任意形状匹配的匹配模式的若干实施例
匹配模式中,采用像素值垂直排列格式,即把一个2维区域的像素值先垂直排列,排列完一列后再排列另一列,和串形匹配格式,即匹配当前像素值和匹配参考像素值都形成像素值的串,两个串具有相等的长度,但不一定保持相同的2维形状;
或者
匹配模式中,采用像素值水平排列格式,即把一个2维区域的像素值先水平排列,排列完一行后再排列另一行,和串形匹配格式,即匹配当前像素值和匹配参考像素值都形成像素值的串,两个串具有相等的长度,但不一定保持相同的2维形状;
或者
匹配模式中,采用像素值垂直排列格式,即把一个2维区域的像素值先垂直排列,排列完一列后再排列另一列,和2维保形匹配格式,即匹配当前像素值和匹配参考像素值都形成2维区域,两个区域具有相等的大小,并且保持相同的2维形状;所述2维区域是由像素值垂直排列所形成的列所组成,除了第一列和最后一列之外的中间各列都有相同的高度,即这个区域的高度,第一列与这个区域的底部对齐,而最后一列与这个区域的顶部对齐;区域的高度可以与当前CU的高度相等,也可以与当前CU的高度不等而取另外一个任意的值或从当前CU的高度导出的一个值,如当前CU的高度的二分之一或四分之一;第一列和最后一列也可以与中间各列有相同的高度,即等于这个区域的高度,这时,这个区域是一个任意大小的矩形或正方形;在本匹配模式中,匹配区域是2维区域,匹配大小一般需要用两个或两个以上的参数分量来表示,在匹配区域的高度可以从编码过程和解码过程中的其他参数或变量导出的特殊情形(如等于当前CU的高度或其二分之一),匹配大小也可以仅用一个参数分量来表示;
或者
匹配模式中,采用像素值水平排列格式,即把一个2维区域的像素值先水平排列,排列完一行后再排列另一行,和2维保形匹配格式,即匹配当前像素值和匹配参考像素值都形成2维区域,两个区域具有相等的大小,并且保持相同的2维形状;所述2维区域是由像素值水平排列所形成的行所组成,除了第一行和最后一行之外的中间各行都有相同的宽度,即这个区域的宽度,第一行与这个区域的右部对齐,而最后一行与这个区域的左部对齐;区域的宽度可以与当前CU的宽度相等,也可以与当前CU的宽度不等而取另外一个任意的值或从当前CU的宽度导出的一个值,如当前CU的宽度的二分之一或四分之一;第一行和最后一行也可以与中间各行有相同的宽度,即等于这个区域的宽度,这时,这个区域是一个任意大小的矩形或正方形;在本匹配模式中,匹配区域是2维区域,匹配大小一般需要用两个或两个以上的参数分量来表示,在匹配区域的宽度可以从编码过程和解码过程中的其他参数或变量导出的特殊情形(如等于当前CU的宽度或其二分之一),匹配大小也可以仅用一个参数分量来表示;
或者
匹配模式中,采用像素值水平排列格式,即把一个2维区域的像素值先水平排列,排列完一行后再排列另一行,和2维保形匹配格式,即匹配当前像素值和匹配参考像素值都形成2维区域,两个区域具有相等的大小,并且保持相同的2维形状;所述2维区域是由像素值水平排列所形成的行所组成,所有行都有相同的宽度;所有行的左端点可以形成一条垂直的直线,这时,这个区域是一个矩形或正方形,也可以形成一条非垂直的斜线,这时,这个区域是一个平行四边形;
或者
匹配模式中,采用像素值水平排列格式,即把一个2维区域的像素值先水平排列,排列完一行后再排列另一行,和2维保形匹配格式,即匹配当前像素值和匹配参考像素值都形成2维区域,两个区域具有相等的大小,并且保持相同的2维形状;所述2维区域是由像素值水平排列所形成的行所组成,所有行的左端点形成一条直线,所有行的右端点形成另一条直线;这两条直线可以是平行的,这时,这个区域是一个平行四边形,也可以是非平行的,这时,这个区域是一个梯形;
一幅当前图像中,可以所有CU都使用同一种匹配模式,也可以不同CU自适应地使用不同的匹配模式。
匹配区域的匹配位置的实施例
匹配区域(区域可以是串或块)的匹配位置是匹配当前区域中第一个匹配当前样值与匹配参考区域中第一个匹配参考样值之间的相对位置。
匹配位置的表示法的实施例1
图像是2维数据,匹配串是匹配块的特例,即2个维度中的一个维度取值为1的特例;所以匹配位置本质上是一个2维的自然数变量,可以用一个自然数对(X,Y)来表示;但从数学上来说,用Xmax和Ymax来分别表示X和Y的最大值,则任何一个2维自然数对(X,Y)都可以转化成一个1维的自然数L:L = X + W*Y,其中W是一个预先设定的大于Xmax的自然数;L也可以有另一种计算方法:L = Y + H*X,其中H是一个预先设定的大于Ymax的自然数;显然,从L也可以计算出(X,Y):用L除以W,X和Y就分别是除法的余数和商;同样,X和Y分别是L除以H的商和余数;因此,匹配位置可以用一个自然数对(X,Y)来表示;也可以用一个自然数L来表示,(X,Y)与L可以通过一个在编码过程和解码过程中根据一种规则确定的自然数W或H来互相转换;所述匹配位置(X,Y)的一种计算方式是匹配参考样值的2维坐标(X1,Y1)与匹配当前样值的2维坐标(X2,Y2)之差再加上(图像宽度,图像高度),而X1和X2都小于图像宽度,Y1和Y2都小于图像高度,因此X和Y分别小于图像宽度的2倍和图像高度的2倍;由此可见所述W的例:图像宽度的2倍,所述H的例:图像高度的2倍。
匹配位置的表示法的实施例2
当前图像被划分成一个一个CU(或LCU),每个CU(或LCU)都被赋予一个序号,序号从零开始逐一递增;当前图像中的每个像素值也都被赋予一个编号(或称线性地址),编号从零开始逐一递增;像素值编号的排列顺序是先从CU(或LCU)序号小的开始排列,一个序号的CU(或LCU)的全部像素值都排列完之后,再排列下一个序号的CU(或LCU)的像素值;而在一个CU(或LCU)内部,像素样值以垂直格式逐列(或者水平格式逐行)排列;匹配区域的匹配位置是匹配参考区域中第一个匹配参考像素值的线性地址(即编号)与匹配当前区域中第一个匹配当前像素值的线性地址(即编号)的差。
受限的匹配位置的表示法的实施例
如果把匹配参考样值的位置限定于与匹配当前样值具有同样的水平位置或垂直位置,那么匹配位置(X,Y)中有一个为零(或其他常数);匹配位置就可以用一个自然数和一个表示水平还是垂直位置的标记位来表示。
匹配大小的表示法的实施例
匹配大小只有一个参数分量,表示匹配串的长度;
或者
匹配大小有一个直接参数分量,如表示匹配串(块)的像素值的个数,和一个从编码过程或解码过程中的其他参数或变量(如当前CU的高度或宽度)导出的参数分量,如表示匹配串(块)的高度或宽度。
像素值用调色板和索引来表示的实施例
像素值用一个含K个特定像素值的调色板和调色板中元素的索引k(0 ≤ k < K)来精确或近似地表示。调色板可以是静态的也可以是在编码过程和解码过程中被动态地更新;本发明的任意形状匹配方法和装置中所有涉及到“像素值”的地方都可以用像素值的“索引”来取代;例如,匹配当前样值,匹配参考样值,参考像素样值集等用匹配当前样值索引,匹配参考样值索引,参考像素样值索引集等来取代。
不同的匹配模式采用不同种类的重构像素的实施例
有两种种类的重构像素:种类I和种类II,有3种匹配模式:模式A、模式B、模式C;模式A和模式B采用种类I的重构像素,而模式C采用种类II的重构像素;也就是,对当前CU进行任意形状匹配编码或解码时,根据当前CU的匹配模式按照下列逻辑关系确定当前CU采用哪种重构像素作为参考像素:
如果(匹配模式==模式A)则采用种类I的重构像素作为参考像素;
如果(匹配模式==模式B)则采用种类I的重构像素作为参考像素;
如果(匹配模式==模式C)则采用种类II的重构像素作为参考像素;
以上符号“==”表示“相等于”。
同一匹配模式中,在不同的匹配位置采用不同种类的重构像素的实施例
有两种种类的重构像素:种类I和种类II,参考像素样值集被划分成3个部分:部分A、部分B和部分C;当匹配参考像素值在部分A和部分B时采用种类I的重构像素,而当匹配参考像素值在部分C时采用种类II的重构像素;也就是,对当前CU进行任意形状匹配编码或解码时,根据当前匹配串(块)的匹配位置按照下列逻辑关系确定当前匹配串(块)采用哪种重构像素作为参考像素:
如果(由匹配位置指定的匹配参考像素值位于部分A)则采用种类I的重构像素作为参考像素;
如果(由匹配位置指定的匹配参考像素值位于部分B)则采用种类I的重构像素作为参考像素;
如果(由匹配位置指定的匹配参考像素值位于部分C)则采用种类II的重构像素作为参考像素。
压缩码流中序列参数集含参考像素样值集的种类数及其大小的实施例
所述压缩码流的序列参数集含有载入了下列信息的语法元素:
… … 、参考像素样值集的种类数P、第1种类参考像素样值集的大小、第2种类参考像素样值集的大小、… … 、第P种类参考像素样值集的大小、… …
或者,只有一个种类的参考像素样值集的大小需要写入序列参数集(没有其他种类的参考像素样值集或者其他种类的参考像素样值集的大小不需要写入序列参数集)的情形,所述压缩码流的序列参数集含有载入了下列信息的语法元素:
… … 、参考像素样值集的大小、… …。