CN103281538B - 基于滚动哈希和块级别帧内预测的帧内编码方法 - Google Patents

基于滚动哈希和块级别帧内预测的帧内编码方法 Download PDF

Info

Publication number
CN103281538B
CN103281538B CN201310225222.9A CN201310225222A CN103281538B CN 103281538 B CN103281538 B CN 103281538B CN 201310225222 A CN201310225222 A CN 201310225222A CN 103281538 B CN103281538 B CN 103281538B
Authority
CN
China
Prior art keywords
image block
image
block
pixel
buz
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201310225222.9A
Other languages
English (en)
Other versions
CN103281538A (zh
Inventor
谢伟凯
鲁晨平
申瑞民
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Jiaotong University
Original Assignee
Shanghai Jiaotong University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Jiaotong University filed Critical Shanghai Jiaotong University
Priority to CN201310225222.9A priority Critical patent/CN103281538B/zh
Publication of CN103281538A publication Critical patent/CN103281538A/zh
Application granted granted Critical
Publication of CN103281538B publication Critical patent/CN103281538B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

一种图像处理技术领域的基于滚动哈希和块级别帧内预测的帧内编码方法,选用具有可滚动式计算特性的哈希函数以及相应的滚动式算法建立关于图像已编码区域所包含的各种具有不同像素内容的图像块的位置信息及其像素内容的哈希值的图像块查找表,用于判断当前待编码图像块是否为该表中已存储图像块,并进一步将二元组作为当前待编码图像块的编码信息或对图像块查找表进行添加。本发明充分的利用屏幕图像中大量存在重复图像块来进一步提高帧内压缩率,并在保证最坏情况的计算开销的前提下,用较小的计算开销来确定在已经编码的图像区域内是否存在与当前待编码块相同的预测块,当屏幕图像中存在大量的重复的图像块时,本发明可以获得比已有方法更高的压缩率。

Description

基于滚动哈希和块级别帧内预测的帧内编码方法
技术领域
本发明涉及的是一种图像压缩处理技术领域的方法,具体是一种基于滚动哈希和块级别帧内预测的帧内编码方法。
背景技术
帧内编码是指对一帧图像的某一区域进行编码时无需依赖其它帧中的信息的一类编码方法。帧内编码方法在各种视频编码和静态图像编码中具有重要的作用。
视频编码技术处理的图像序列根据其信号来源可以分为自然场景视频(NaturalScene)和屏幕视频(ScreenContent)。前者是指从物理世界中采集的图像序列;后者是指从屏幕上显示的由计算机生成的图像序列。在屏幕视频的编码中,由于屏幕视频在帧间的运动较少,其整体的压缩率主要取决于帧内编码的效率。因此针对屏幕视频的特点的新的帧内编码方法已经成为近年来视频研究领域的一个热点。
H.264是目前为止已经实用的视频压缩标准中压缩率最高的一种。其帧内编码方法主要分为两个环节:1.帧内预测环节。该环节利用当前被编码块的左边一列和上边一行的已编码区域的像素值按照可选的多种方向进行外插(Extrapolation)获得对当前被编码块的一个预测块;2.残差编码环节。将预测块与实际待编码块相减获得一个残差。由于图像往往存在局部相似性,这个的残差的能量往往会比实际待编码块要小。最后对此残差做DCT变化,对得到的系数进行量化后再进行熵编码。
经对现有技术的文献检索发现,CuilingLan等在下一代视频编码标准H.265的草案制定过程中提出的编号为JCTVC-B084的提案中提出了一种称为BaseColorsandIndexMap(BCIM)的新的帧内压缩方法,(http://phenix.int-evry.fr/jct/doc_end_user/current_document.php?id=5230)。该方法先用聚类方法找出一个块中的若干主颜色作为调色板,然后把这个块中每个像素的颜色值量化到最相近的一种主颜色,并用在调色板中的索引作为其编码值。该方法利用了计算机生成的图像一般具有颜色数相对较少的特点,可以比H.264的帧内编码方法在输入内容为屏幕图像时达到更大的压缩率。
ZhouMinhua等人在下一代视频编码标准H.265的草案制定过程中提出的编号为JCTVC-G093(http://phenix.int-evry.fr/jct/doc_end_user/current_document.php?id=3343)的提案中提出了一种称为Sample-basedangularprediction(SAP)帧内无损压缩方法。该方法对H.264的帧内预测进行了扩展,预测块内的像素的预测值改为由其紧邻的左、左上、上方像素的值的外插来决定,而不是由这个块的左、左上、上方像素的值的外插决定。由于这种预测方式中基准像素离待预测像素更近,所以预测效果也更好,从而使残差更小。
但上述方法都没能充分的利用到屏幕图像中大量存在的图像块重复的特点-即在已经编码的部分图像区域内往往可以找到一个与待编码的图像块一模一样的块。这是因为屏幕图像本身就是由计算机生成的,其生成过程中往往就存在很多把同一个位图渲染在不同的位置的操作。比如通过实验可以发现,当以4x4作为编码块大小,一个“植物大战僵尸”游戏的一个典型场景的屏幕截图中,27.2%的待编码块是已经编码区域的某个块的重复;而一个在VisualStuido2008里进行代码编辑的场景的屏幕截图中,更是有高达89.8%的待编码块是已经编码区域的某个块的重复。在编码过程中,当能在已编码区域中找到一个与当前编码块一某一样的块(称为预测块),那么对这个当前块的编码就只需一个表示当前块采用了这种编码方式的码字和相应的预测块所在的位置,其编码开销比已有的帧内编码方式要小。为了区别于H.264中的只是利用编码块坐标左边一列和上边一行的已编码区域的像素值来预测当前块的帧内预测方式,把这里提出的帧内预测方式成为块级别帧内预测。
发明内容
本发明针对现有技术存在的上述不足,提出一种基于滚动哈希和块级别帧内预测的帧内编码方法,可以充分的利用屏幕图像中大量存在重复图像块来进一步提高帧内压缩率,即在保证最坏情况的计算开销的前提下,用较小的计算开销来确定在已经编码的图像区域内是否存在与当前待编码块相同的预测块,当屏幕图像中存在大量的重复的图像块时,本发明可以获得比已有方法更高的压缩率。
本发明是通过以下技术方案实现的,本发明选用具有可滚动式计算特性的哈希函数以及相应的滚动式算法建立关于图像已编码区域所包含的各种具有不同像素内容的图像块的位置信息及其像素内容的哈希值的图像块查找表,用于判断当前待编码图像块是否为该表中已存储图像块,并进一步将二元组(块级别帧内预测标志,所匹配的图像块的位置)作为当前待编码图像块的编码信息或对图像块查找表进行添加。
所述的图像块查找表为一维数组结构,表格内的每一个位置为一个队列,该队列中的每一项均为一个根据其哈希值和某种映射算法映射到此表格位置的图像块的二元组(图像块位置,图像块哈希值)。
所述的具有可滚动式计算特性的哈希函数优选为BUZ哈希函数;
所述的滚动式算法包括:RH1D算法、H2D算法、RH2D算法。
本发明具体包括以下步骤:
步骤1,对待编码图像的右侧添加数目等于编码块宽度W的像素列、下方添加数目等于编码块高度T的像素行,用RH1D算法滚动计算拓展图像中所有宽度为编码块宽度W的像素片段的BUZ哈希值(http://en.wikipedia.org/wiki/Rolling_hash)并保存到一个二维的像素片段BUZ哈希值存储表
所述的BUZ哈希值的计算方式为BUZhash(C1,C2,…,Ck)=sk-1(a(C1))⊕sk-2(a(C2))⊕…s(a(Ck-1))⊕a(Ck),其中:Ci表示第i个像素的值,sk(x)表示对x进行k次循环移位,⊕表示二进制异或操作,而a函数是一个随机映射表,它为每一种像素的可能取值提供一个L位整数X作为其映射值,且满足这样的特性,即对于总共L个比特位置,任何一个比特位置上,这个映射表中正好有一半的整数在这个比特位置上取值为1;
所述的RH1D算法为:BUZhash(Ci+1,Ci+2,…,Ci+W)=s(BUZhash(Ci,Ci+1,…,Ci+W-1)))⊕sw(a(Ci))⊕a(Ci+w),其中(Ci,Ci+1,…,Ci+W-1)与(Ci+1,Ci+2,…,Ci+W)是原图像中的两个宽度为W的紧邻像素片段;
所述的滚动计算是指:针对待编码图像的每一行,从第一个像素开始从左到右,依次针对每个当前像素,执行下面步骤:
a)针对从当前像素开始的右边的W个相邻像素(包括当前像素在内)构成的一个像素片段:
①当该像素片段不是每一行的第一个时,利用RH1D算法,根据i)当前像素片段紧邻的左边的像素值、ii)将当前像素片段窗口左移一个像素构成的像素片段的已计算出的BUZ哈希值,以及iii)当前像素片段的最右边的像素值计算得到该像素片段的BUZ哈希值;
②当该像素片段是每一行的第一个时,直接用BUZ哈希函数,从这个像素片段的所有像素值计算得到BUZ哈希值;
b)将这个像素片段的BUZ哈希值保存于二维的像素片段BUZ哈希值存储表中对应该像素片段的最左边像素坐标的单元中。
步骤2,基于像素片段BUZ哈希值存储表,按照预设顺序用H2D和RH2D算法滚动计算原图像中所有高为编码块高度T、宽为编码块宽度W的图像块的BUZ哈希值;
所述的预设顺序是指:按待编码图像中编码块的编码顺序,除了第一个编码块之外,每扫描到一个新的编码块位置时,按先从上到下,再从左到右的顺序来处理所有其右下角在前一个编码块的范围之内且其左边界和上边界没有超出原始图像范围的那些图像块。
所述的H2D算法为:BUZhash(R1,R2,…,RT)=sW*(T-1)(BUZhash(R1))⊕sW*(T-2)(BUZhash(R2))⊕…⊕sW*1(BUZhash(RT-1))⊕BUZhash(RT),其中:(R1,R2,…,RT)表示原图像中由垂直方向上相邻的T个宽度为W的像素片段构成的图像块;
所述的RH2D算法为:BUZhash(Ri+1,Ri+2,…,Ri+T)=sW(BUZhash(Ri,Ri+1,…,Ri+T-1))⊕sW*T(BUZhash(Ri))⊕BUZhash(Ri+T),其中(Ri,Ri+1,…,Ri+T-1)与(Ri+1,Ri+2,…,Ri+T)为原图像中垂直方向上紧邻的两个相邻图像块。
所述的滚动计算是指:
1)当该图像块位于除图像的顶部以外的其他位置,则采用RH2D算法,利用:i)该图像块的往上偏移一行的紧邻图像块的BUZ哈希值、ii)该图像块的顶部上方紧邻的一行像素片段的BUZ哈希值,以及iii)该图像块的最底部的一行像素片段的BUZ哈希值计算得到该图像块的BUZ哈希值;
2)当该图像块位于图像的顶部,则采用H2D算法从该图像块的各行的像素片段的BUZ哈希值计算得到。
步骤3,根据图像块的BUZ哈希值和图像块查找表的信息确定该图像块是否与图像块查找表中已存储的某个图像块相同,即:
当没有相同的图像块时,则将二元组(图像块位置,图像块BUZ哈希值)添加到图像块查找表的相应位置的队列中;并在该队列中的元素个数超出阈值时删除队列末尾的元素;
当存在相同的图像块时,且当前这个图像块恰好是一个需要编码的图像块,则将二元组(块级别帧内预测标志,所匹配的图像块的位置)作为这个编码块的一种优选帧内编码方式;
所述的添加是指:通过BUZ哈希值到图像块查找表位置的映射函数确定出该图像块所对应的图像块查找表中的位置,当该位置上的队列为空,将该二元组(当前图像块位置,BUZ哈希值)存入该队列,否则则对比当前图像块和该队列的中的所有图像块是否均不相同,如有相同图像块,则将该图像块信息调整至该队列的首位;如没有相同图像块,则将二元组(当前图像块位置,BUZ哈希值)***到该队列的第二个位置或第一个位置。
所述的映射函数是指采用图像块查找表的总位置数对BUZ哈希值取模得到或只用BUZ哈希值的全部L位中的若干位得到。
所述的对比是指:从队列头开始依次尝试比较队列中每个二元组中的图像块的BUZ哈希值与当前图像块的BUZ哈希值是否相同:当不同时直接跳到队列中下一个二元组;当两个图像块的BUZ哈希值相同时再逐像素位置比较两个图像块的像素值,当任一位置的像素值不同则直接跳到队列中下一个二元组,直至发现两个像素值完全相同的图像块或已经尝试了队列的最后一个二元组并停止对比。
技术效果
与现有技术相比,本发明可以快速的确定出已编码的图像区域中是否存在与当前编码块一模一样的图像块,当存在,可以提供一种极低开销的块级别帧内预测的编码模式,从而可以提高帧内编码的总体压缩率。本方法具有明确的计算复杂度上界,这是因为该算法的最费时的计算步骤为在BUZ哈希值一样时进行的图像块的逐像素比较,但由于算法中限制了每个图像块查找表位置中最多存储Scap个图像块信息,所以逐像素比较操作的执行次数不会超过(Scap*所有图像块个数)。本发明的方法尤其适合应用于屏幕视频的压缩,因为这样的视频图像序列中每一帧都大量存在图像块重复的现象。屏幕视频压缩是远程教育、基于云的虚拟桌面、网络会议、远程桌面共享、无线投影仪等领域的关键性技术,所以本发明具有极大的工业价值。
附图说明
图1是本发明方法总体流程图。
图2是实施例中块级别帧间预测编码方式的示意图。
图3是实施例中用RH1D算法滚动式计算像素片段的BUZ哈希值的示意图。
图4是实施例中用H2D算法计算图像块的BUZ哈希值的示意图。
图5是实施例中用RH2D算法滚动式计算当前图像块的BUZ哈希值的示意图。
具体实施方式
下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
实施例1
如图1所示,本实施例包括以下步骤:
步骤1,首先需要选定一个合适的编码块尺寸T和W。编码块选的太大,会导致图像中找到重复块的可能性降低,但编码块选的太小,会导致需要编码的块的个数增加,从而增加需要传输的编码信息的总数目增加。根据实验结果,选择8x8相对比较合适。
步骤2,对输入图像的右边和下边分别添加合适数目的像素列和像素行,其数目分别为W列与T行,其像素值任意。这个步骤是为了后续的处理中当当前处理的像素片段或图像块部分超过原始图像边界时无需做特殊处理。
步骤3,用RH1D算法滚动方式计算图像中所有长度为W的像素片段的BUZ哈希值并存储在一个二维的像素片段BUZ哈希值存储表中。具体来说需要针对待编码图像的每一行,从第一个像素开始从左到右,依次针对每个当前像素,执行下面步骤:
3.a)针对从当前像素开始的右边的W个相邻像素(包括当前像素在内)构成的一个像素片段:当这个像素片段是每一行的第一个,用某种特殊的处理方式来计算该像素片段的BUZ哈希值;其它情况都可以利用RH1D算法,并基于当前像素片段紧邻的左边的像素的值和将当前像素片段窗口左移一个像素位置构成的像素片段的已计算出的BUZ哈希值以及当前像素片段的最右边的像素的值来滚动式的计算出这个像素片段的BUZ哈希值
3.b)将这个像素片段的BUZ哈希值保存于二维的像素片段BUZ哈希值存储表中对应该像素片段的最左边像素坐标的单元中
BUZ哈希(http://en.wikipedia.org/wiki/Rolling_hash)是一种可以进行滚动式计算的哈希函数。其在针对输入时图像块、尤其是屏幕图像块时具有较好的哈希性能,另一方面计算开销应尽量小,而且其计算只涉及循环移位和异或操作,计算开销很小。BUZhash的字长的选择也比较关键,根据实验,对于8x8的编码块可以选择63bit字长。BUZhash的具体计算方法为BUZhash(C1,C2,…,Ck)=sk-1(a(C1))⊕sk-2(a(C2))⊕…s(a(Ck-1))⊕a(Ck),其中sk(x)表示对x进行k次循环移位,而a函数是一个随机映射表,它为每一种像素的可能取值提供一个L位整数X作为其映射值,为了提高哈希性能,这个随机映射表的构建应该满足这样的特性,即对于总共L个比特位置,任何一个比特位置上,这个映射表中正好有一半的整数在这个比特位置上取值为1;
所述的RH1D算法为:BUZhash(Ci+1,Ci+2,…,Ci+W)=s(BUZhash(Ci,Ci+1,…,Ci+W-1)))⊕sw(a(Ci))⊕a(Ci+w),其中(Ci,Ci+1,…,Ci+W-1)与(Ci+1,Ci+2,…,Ci+W)是原图像中的两个宽度为W的紧邻像素片段;
3.a中需要对每一行的第一个像素片段做特殊处理,这是因为对于这个像素片段,缺乏使用滚动式的RH1D算法所需的前一像素片段的BUZ哈希值和前一像素片段的第一个像素的值。为此,在本实施例中选择直接用原始BUZ哈希函数,从这个像素片段的所有像素值来计算BUZ哈希值。
步骤4,基于像素片段BUZ哈希值存储表,按照某种图像块处理顺序依次计算原图像中所有高为编码块高度T、宽为编码块宽度W的图像块的BUZ哈希值;除了位于图像顶部的图像块外所有图像块都根据RH2D算法,利用该图像块的往上偏移一个像素位置构成的图像块的BUZ哈希值、这个图像块的顶部上方紧接的一行像素片段的BUZ哈希值以及这个图像块的最底部的一行像素片段的BUZ哈希值来滚动式的计算该图像块的BUZ哈希值;对于位于图像的最顶部,用H2D算法来计算该图像块的BUZ哈希值。
所述的某种图像块处理顺序必须保证任一个已经处理过的图像块的右下角像素(X,Y)的位置与当前要处理的图像块的左上角像素位置(Xc,Yc)间满足Y<Yc或(Yc<=Y<=Yc+T-1且X<Xc)。这个要求的意义在于,这样可以保证在解码器端收到一个以块级别帧内预测模式编码的编码块时,其所指向的预测块是落在解码器已经解码出的图像区域内。在本实施例中,采用如下的处理顺序,按图像中编码块的编码顺序,即从图像的左上角开始,确定第一个编码块位置,每扫描一个编码块位置后,位置向右偏移一个编码块宽度,直到编码块位置完全超出原始图像,然后把编码块扫描位置的水平位置移到图像最左边,同时垂直方向位置向下偏移一个编码块高度,在这个扫描编码块的过程中,除了第一个编码块之外,每扫描到一个新的编码块位置时,按先从上到下,再从左到右的顺序来处理所有其右下角在前一个编码块的范围之内且其左边界和上边界没有超出原始图像范围的那些图像块。
其中所述的RH2D算法为:BUZhash(Ri+1,Ri+2,…,Ri+T)=sW(BUZhash(Ri,Ri+1,…,Ri+T-1))⊕sW*T(BUZhash(Ri))⊕BUZhash(Ri+T),其中(Ri,Ri+1,…,Ri+T-1)与(Ri+1,Ri+2,…,Ri+T)为原图像中垂直方向上紧邻的两个相邻图像块;
图像最顶部的图像块因为其缺乏前置图像块的BUZ哈希值,所以无法使用滚动式的RH2D算法。在本实施例中,选择是直接用H2D算法来从这个图像块的各行的像素片段的BUZ哈希值计算出来;
其中所述的H2D算法为:BUZhash(R1,R2,…,RT)=sW*(T-1)(BUZhash(R1))⊕sW*(T-2)(BUZhash(R2))⊕…⊕sW*1(BUZhash(RT-1))⊕BUZhash(RT),其中:(R1,R2,…,RT)表示原图像中由垂直方向上相邻的T个宽度为W的像素片段构成的图像块;
步骤5,上述步骤4中每当一个图像块的BUZ哈希值被计算出来以后,利用这个值和图像块查找表按一定比较算法来确定该图像块是否与图像块查找表中存储的某个图像块完全相同。如否,按某种队列***策略将这个新图像块的相关信息***图像块查找表中对应的队列;如是,按某种队列调整策略调整对应队列中的元素的存储顺序,同时当前图像块正好是处在某个编码块位置时,将二元组(块级别帧内预测标志,与当前图像块一致的先前图像块的位置)作为相应编码块的一种优选帧内编码方式;
其中的图像块查找表为一个一维数组,表格的每一个位置为一个队列,队列的每一个元素对应一个被映射到此表格位置的图像块的相关信息,这个信息具体表现为一个二元组(图像块位置,图像块BUZ哈希值)。这个查找表的位置个数是一个比较关键的参数,当太小,会导致可能实际具有不同BUZ哈希值的图像块被映射到同一个查找表位置,影响后续图像块比较时候的效率;当太大,则会占用太多空间。本实施例中,先确定图像中所有不同位置的图像块个数后,选一个比这个数目大的所有2的幂中最小的那个,这样做的好处是在后续从BUZ哈希值向图像块查找表位置映射时可以简单的使用BUZ哈希值的最后若干比特来作为查找表位置的索引,计算开销小。
步骤5中所述的比较算法具体包容如下步骤
5.a)确定该图像块对应的图像块查找表的位置。在本实施例中直接用图像块BUZ哈希值的全部L位中的后Z位作为对应图像块查找表位置的索引,其中Z满足2的Z次方恰好是图像块查找表的所有位置个数。
5.b)从对应的图像块查找表位置上的队列的队列头开始,依次尝试每个队列中的元素,当这个元素保存的BUZ哈希值与当前图像块的BUZ哈希值不一样,直接跳到队列中下一个元素,否则再逐像素位置比较当前图像块与该元素存储的图像块位置所指向的图像块,当碰到任何一个对应位置上两者的像素值不一样时,直接跳到队列中下一个元素,如逐像素比较发现两个块完全一致,那么不再尝试队列中下一个元素。
步骤5中所述的***策略具体为
5.c)确定***的位置。考虑到刚出现过的图像块也有较大的可能在最近会遇到匹配的图像块,所以让其尽量靠近队列头,从而可以在碰到匹配图像块时可以用较少的比较次数就可以确定。在本实施例中,可以是***到队列的第二个位置
5.d)确定是否以及如何淘汰一个旧的图像块信息。淘汰队列中旧图像块信息是为了给一个图像块需要进行比较的次数一个确定的上界,从而控制算法最差情况的复杂度。而选择淘汰哪一个图像块时应该考虑到尽可能淘汰不太可能在后续图像块中出现的那些图像块。在本实施例中选择为如这个队列的深度已经超过一个指定阈值Scap时,淘汰队列末尾的元素。
步骤5中所述的队列调整策略在本实施例中体现为把队列中匹配当前图像块的那个元素拿出并插在队列头。这样做的考虑是,已经出现重复的图像块会有更大的可能再次在后续图像区域出现,所以这样的调整后,后续的同BUZ哈希值的图像块再出现时有更大的可能只用进行一次逐像素比较。
图2中给出了本实施例中的块级别帧内预测的示意,其中200为当前处理的图像块,而且其正好为于一个编码块位置,而且其正好通过上述算法在已编码区域找到了一个完全一样的图像块201,那么可以用二元组(块级别帧内预测标志,块201的位置)作为编码块200的一种优选编码方式。其中块201的位置,可以用其左上角的像素在图像中的位置来表示。注意到块201的位置不需要一定是与某个编码块的位置重合。
图3中给出了本实施例中用RH1D滚动式计算像素片段的BUZ哈希值的示意。其中设编码块宽度为4。假设已经计算出由像素(Pa,Pb,Pc,Pd)构成的像素片段的BUZ哈希值,假设为Hi,那么图中由像素(Pb,Pc,Pd,Pe)构成的当前像素片段300的BUZ哈希值可以通过相应的RH1D算法,由Hi,像素Pa的值和像素Pe的值计算出来,具体=s(Hi)⊕s4(a(Pa))⊕a(Pe)。
图4给出了本实施例中用H2D算法基于图像块每一行的像素片段的BUZ哈希值计算图像块400的BUZ哈希值的示意。该图中假设编码块高度和宽度均为4。假设像素片段a到像素片段d各自的BUZ哈希值已经计算出来为Ha、Hb、Hc和Hd,那么图像块400的BUZ哈希值就等于s12(Ha)⊕s8(Hb)⊕s4(Hc)⊕Hd
图5给出了本实施例中用RH2D算法滚动式计算当前图像块的BUZ哈希值的示意。该图中假设编码块高度和宽度均为4。图中500所指向的为需要计算BUZ哈希值的当前图像块,501所指向的为当前图像块向上偏移一个像素位置的图像块,且已经计算出其BUZ哈希值,假设为Hi,j。那么图像块500的BUZ哈希值=s4(Hi,j)⊕s16(BUZhash(像素片段a))⊕BUZhash(像素片段e),其中像素片段a和像素片段e的BUZhash在步骤5中已经计算出来且存在BUZ哈希值的临时存储区域的对应位置中。
经过实验证明,在H.264编码方案中加入本实施例的方法后,针对典型的GUI场景的I帧码字开销可以降低5%到15%左右。

Claims (9)

1.一种基于滚动哈希和块级别帧内预测的帧内编码方法,其特征在于,选用具有可滚动式计算特性的哈希函数以及相应的滚动式算法建立关于图像已编码区域所包含的各种具有不同像素内容的图像块的位置信息及其像素内容的哈希值的图像块查找表,用于判断当前待编码图像块是否为该表中已存储图像块,并进一步将二元组作为当前待编码图像块的编码信息或对图像块查找表进行添加;
所述的二元组包含块级别帧内预测标志以及所匹配的图像块的位置;
所述的具有可滚动式计算特性的哈希函数为BUZ哈希函数;
所述的滚动式算法包括:RH1D算法、H2D算法、RH2D算法;
所述的图像块查找表为一维数组结构,表格内的每一个位置为一个队列,该队列中的每一项均为一个根据其哈希值和某种映射算法映射到此表格位置的图像块的二元组;
所述的图像块的二元组包含图像块位置以及图像块BUZ哈希值;
所述的方法具体包括以下步骤:
步骤1,对待编码图像的右侧添加数目等于编码块宽度W的像素列、下方添加数目等于编码块高度T的像素行,用RH1D算法滚动计算拓展图像中所有宽度为编码块宽度W的像素片段的BUZ哈希值并保存到一个二维的像素片段BUZ哈希值存储表;
步骤2,基于像素片段BUZ哈希值存储表,按照预设顺序用H2D和RH2D算法滚动计算原图像中所有高为编码块高度T、宽为编码块宽度W的图像块的BUZ哈希值;
步骤3,根据图像块的BUZ哈希值和图像块查找表的信息确定该图像块是否与图像块查找表中已存储的某个图像块相同,即:
当不存在相同图像块时,则将图像块的二元组添加到图像块查找表的相应位置的队列中;并在该队列中的元素个数超出阈值时删除队列末尾的元素;
当存在相同图像块时,且当前这个图像块恰好是一个需要编码的图像块,则将二元组作为这个编码块的一种优选帧内编码方式。
2.根据权利要求1所述的方法,其特征是,所述的BUZ哈希值的计算方式为BUZhash(C1,C2,…,Ck)=sk-1(a(C1))⊕sk-2(a(C2))⊕…s(a(Ck-1))⊕a(Ck),其中:Ci表示第i个像素的值,sk(x)表示对x进行k次循环移位,⊕表示二进制异或操作,而a函数是一个随机映射表,它为每一种像素的可能取值提供一个L位整数X作为其映射值,且满足这样的特性,即对于总共L个比特位置,任何一个比特位置上,这个映射表中正好有一半的整数在这个比特位置上取值为1。
3.根据权利要求1所述的方法,其特征是,所述的RH1D算法为:BUZhash(Ci+1,Ci+2,…,Ci+W)=s(BUZhash(Ci,Ci+1,…,Ci+W-1)))⊕sw(a(Ci))⊕a(Ci+w),其中(Ci,Ci+1,…,Ci+W-1)与(Ci+1,Ci+2,…,Ci+W)是原图像中的两个宽度为W的紧邻像素片段;
所述的H2D算法为:BUZhash(R1,R2,…,RT)=sW*(T-1)(BUZhash(R1))⊕sW*(T-2)(BUZhash(R2))⊕…⊕sW*1(BUZhash(RT-1))⊕BUZhash(RT),其中:(R1,R2,…,RT)表示原图像中由垂直方向上相邻的T个宽度为W的像素片段构成的图像块;
所述的RH2D算法为:BUZhash(Ri+1,Ri+2,…,Ri+T)=sW(BUZhash(Ri,Ri+1,…,Ri+T-1))⊕sW*T(BUZhash(Ri))⊕BUZhash(Ri+T),其中(Ri,Ri+1,…,Ri+T-1)与(Ri+1,Ri+2,…,Ri+T)为原图像中垂直方向上紧邻的两个相邻图像块。
4.根据权利要求1所述的方法,其特征是,步骤1中所述的用RH1D算法滚动计算是指:针对待编码图像的每一行,从第一个像素开始从左到右,依次针对每个当前像素,执行下面步骤:
a)针对从当前像素开始的右边的W个包括当前像素在内的相邻像素构成的一个像素片段:
①当该像素片段不是每一行的第一个时,利用RH1D算法,根据i)当前像素片段紧邻的左边的像素值、ii)将当前像素片段窗口左移一个像素构成的像素片段的已计算出的BUZ哈希值,以及iii)当前像素片段的最右边的像素值计算得到该像素片段的BUZ哈希值;
②当该像素片段是每一行的第一个时,直接用BUZ哈希函数,从这个像素片段的所有像素值计算得到BUZ哈希值;
b)将这个像素片段的BUZ哈希值保存于二维的像素片段BUZ哈希值存储表中对应该像素片段的最左边像素坐标的单元中。
5.根据权利要求1所述的方法,其特征是,所述的预设顺序是指:按待编码图像中编码块的编码顺序,除了第一个编码块之外,每扫描到一个新的编码块位置时,按先从上到下,再从左到右的顺序来处理所有其右下角在前一个编码块的范围之内且其左边界和上边界没有超出原始图像范围的那些图像块。
6.根据权利要求1所述的方法,其特征是,步骤2中所述的用H2D和RH2D算法滚动计算是指:
1)当该图像块位于除图像的顶部以外的其他位置,则采用RH2D算法,利用:i)该图像块的往上偏移一行的紧邻图像块的BUZ哈希值、ii)该图像块的顶部上方紧邻的一行像素片段的BUZ哈希值,以及iii)该图像块的最底部的一行像素片段的BUZ哈希值计算得到该图像块的BUZ哈希值;
2)当该图像块位于图像的顶部,则采用H2D算法从该图像块的各行的像素片段的BUZ哈希值计算得到。
7.根据权利要求1所述的方法,其特征是,步骤3中所述的添加是指:通过BUZ哈希值到图像块查找表位置的映射函数确定出该图像块所对应的图像块查找表中的位置,当该位置上的队列为空,将该图像块的二元组存入该队列,否则则对比当前图像块和该队列的中的所有图像块是否均不相同,如有相同图像块,则将该图像块信息调整至该队列的首位;如没有相同图像块,则将图像块的二元组***到该队列的第二个位置或第一个位置。
8.根据权利要求7所述的方法,其特征是,所述的映射函数是指采用图像块查找表的总位置数对BUZ哈希值取模得到或只用BUZ哈希值的全部L位中的若干位得到。
9.根据权利要求7所述的方法,其特征是,所述的对比是指:从队列头开始依次尝试比较队列中每个二元组中的图像块的BUZ哈希值与当前图像块的BUZ哈希值是否相同:当不同时直接跳到队列中下一个二元组;当两个图像块的BUZ哈希值相同时再逐像素位置比较两个图像块的像素值,当任一位置的像素值不同则直接跳到队列中下一个二元组,直至发现两个像素值完全相同的图像块或已经尝试了队列的最后一个二元组并停止对比。
CN201310225222.9A 2013-06-06 2013-06-06 基于滚动哈希和块级别帧内预测的帧内编码方法 Expired - Fee Related CN103281538B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310225222.9A CN103281538B (zh) 2013-06-06 2013-06-06 基于滚动哈希和块级别帧内预测的帧内编码方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310225222.9A CN103281538B (zh) 2013-06-06 2013-06-06 基于滚动哈希和块级别帧内预测的帧内编码方法

Publications (2)

Publication Number Publication Date
CN103281538A CN103281538A (zh) 2013-09-04
CN103281538B true CN103281538B (zh) 2016-01-13

Family

ID=49063967

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310225222.9A Expired - Fee Related CN103281538B (zh) 2013-06-06 2013-06-06 基于滚动哈希和块级别帧内预测的帧内编码方法

Country Status (1)

Country Link
CN (1) CN103281538B (zh)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10003792B2 (en) 2013-05-27 2018-06-19 Microsoft Technology Licensing, Llc Video encoder for images
CN105659602B (zh) 2013-10-14 2019-10-08 微软技术许可有限责任公司 用于视频和图像编码的帧内块复制预测模式的编码器侧选项
KR102170169B1 (ko) 2013-10-14 2020-10-26 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 비디오 및 이미지 코딩 및 디코딩을 위한 인트라 블록 카피 예측 모드의 피쳐
AU2013403225B2 (en) 2013-10-14 2018-06-14 Microsoft Technology Licensing, Llc Features of base color index map mode for video and image coding and decoding
KR102197505B1 (ko) * 2013-10-25 2020-12-31 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 비디오 및 이미지 코딩 및 디코딩에서의 해시 값을 갖는 블록의 표현
WO2015058395A1 (en) * 2013-10-25 2015-04-30 Microsoft Technology Licensing, Llc Hash-based block matching in video and image coding
KR20150050409A (ko) 2013-10-29 2015-05-08 주식회사 케이티 멀티 레이어 비디오 신호 인코딩/디코딩 방법 및 장치
US10542271B2 (en) * 2013-12-27 2020-01-21 Hfi Innovation Inc. Method and apparatus for major color index map coding
US10469863B2 (en) 2014-01-03 2019-11-05 Microsoft Technology Licensing, Llc Block vector prediction in video and image coding/decoding
US10390034B2 (en) 2014-01-03 2019-08-20 Microsoft Technology Licensing, Llc Innovations in block vector prediction and estimation of reconstructed sample values within an overlap area
US11284103B2 (en) 2014-01-17 2022-03-22 Microsoft Technology Licensing, Llc Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning
US10542274B2 (en) 2014-02-21 2020-01-21 Microsoft Technology Licensing, Llc Dictionary encoding and decoding of screen content
KR102210946B1 (ko) * 2014-03-04 2021-02-01 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 스크린 컨텐츠의 딕셔너리 인코딩 및 디코딩
CN105556971B (zh) 2014-03-04 2019-07-30 微软技术许可有限责任公司 针对帧内块复制预测中的块翻动和跳跃模式的编码器侧判定
KR102185245B1 (ko) 2014-03-04 2020-12-01 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 해시 기반 블록 매칭을 위한 해시 테이블 구성 및 이용가능성 검사
US9715559B2 (en) * 2014-03-17 2017-07-25 Qualcomm Incorporated Hash-based encoder search for intra block copy
US10136140B2 (en) 2014-03-17 2018-11-20 Microsoft Technology Licensing, Llc Encoder-side decisions for screen content encoding
KR102413529B1 (ko) 2014-06-19 2022-06-24 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 통합된 인트라 블록 카피 및 인터 예측 모드
US10681372B2 (en) 2014-06-23 2020-06-09 Microsoft Technology Licensing, Llc Encoder decisions based on results of hash-based block matching
JP6462119B2 (ja) * 2014-09-30 2019-01-30 マイクロソフト テクノロジー ライセンシング,エルエルシー コンピューティングデバイス
CN105874795B (zh) 2014-09-30 2019-11-29 微软技术许可有限责任公司 在波前并行处理被启用时对图片内预测模式的规则
GB2531005A (en) * 2014-10-06 2016-04-13 Canon Kk Improved encoding process using a palette mode
CN104469395B (zh) * 2014-12-12 2017-11-07 华为技术有限公司 图像传输方法和装置
CN104780379B (zh) * 2015-01-21 2018-03-09 北京工业大学 一种屏幕图像集合的压缩方法
US10212434B2 (en) * 2015-01-30 2019-02-19 Qualcomm Incorporated Palette entries coding in video coding
EP3254463A4 (en) 2015-02-06 2018-02-21 Microsoft Technology Licensing, LLC Skipping evaluation stages during media encoding
WO2016169020A1 (en) * 2015-04-23 2016-10-27 Mediatek Singapore Pte. Ltd. A simplified coding method for palette coding
WO2016192055A1 (zh) * 2015-06-03 2016-12-08 富士通株式会社 使用预测信息的图像编码方法、装置以及图像处理设备
CN106664405B (zh) 2015-06-09 2020-06-09 微软技术许可有限责任公司 用调色板模式对经逸出编码的像素的稳健编码/解码
US10038917B2 (en) 2015-06-12 2018-07-31 Microsoft Technology Licensing, Llc Search strategies for intra-picture prediction modes
US10136132B2 (en) 2015-07-21 2018-11-20 Microsoft Technology Licensing, Llc Adaptive skip or zero block detection combined with transform size decision
CN107534445B (zh) * 2016-04-19 2020-03-10 华为技术有限公司 用于分割哈希值计算的向量处理
US10390039B2 (en) 2016-08-31 2019-08-20 Microsoft Technology Licensing, Llc Motion estimation for screen remoting scenarios
CN106375771B (zh) * 2016-08-31 2019-05-24 西安万像电子科技有限公司 图像特征匹配方法和装置
US11095877B2 (en) 2016-11-30 2021-08-17 Microsoft Technology Licensing, Llc Local hash-based motion estimation for screen remoting scenarios
CN107911196B (zh) * 2017-10-27 2020-07-14 南京莱斯电子设备有限公司 一种雷达航迹报文传输方法
US10986349B2 (en) 2017-12-29 2021-04-20 Microsoft Technology Licensing, Llc Constraints on locations of reference blocks for intra block copy prediction
CN108495139A (zh) * 2018-04-18 2018-09-04 北方工业大学 屏幕内容编码的哈希块匹配
CN109409412A (zh) * 2018-09-28 2019-03-01 新华三大数据技术有限公司 图片处理方法及装置
CN109559270B (zh) * 2018-11-06 2021-12-24 华为技术有限公司 一种图像处理方法及电子设备
CN110634098A (zh) * 2019-06-13 2019-12-31 眸芯科技(上海)有限公司 无损稀疏图像的显示方法、装置及***
US11202085B1 (en) 2020-06-12 2021-12-14 Microsoft Technology Licensing, Llc Low-cost hash table construction and hash-based block matching for variable-size blocks
CN113873096A (zh) * 2020-06-30 2021-12-31 晶晨半导体(上海)股份有限公司 场景检测方法、芯片、电子设备以及存储介质
CN112804528B (zh) * 2021-02-05 2022-10-28 北京字节跳动网络技术有限公司 屏幕内容处理方法、装置及设备
CN116127457B (zh) * 2023-02-16 2024-05-14 软安科技有限公司 一种基于winnowing算法的恶意代码检测方法及***

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100454501B1 (ko) * 2001-12-26 2004-10-28 브이케이 주식회사 영상신호를 부호화 또는 복호화하기 위한 예측 장치 및 방법
KR20050026318A (ko) * 2003-09-09 2005-03-15 삼성전자주식회사 인트라 스킵 모드를 포함하는 비디오 인코딩_디코딩 장치및 방법
KR101503829B1 (ko) * 2007-09-07 2015-03-18 삼성전자주식회사 데이터 압축 장치 및 방법

Also Published As

Publication number Publication date
CN103281538A (zh) 2013-09-04

Similar Documents

Publication Publication Date Title
CN103281538B (zh) 基于滚动哈希和块级别帧内预测的帧内编码方法
US20200260117A1 (en) Methods and Apparatuses for Coding and Decoding Depth Map
TWI536811B (zh) 影像處理方法與系統、解碼方法、編碼器與解碼器
CN111819854B (zh) 用于协调多符号位隐藏和残差符号预测的方法和装置
US10542256B2 (en) Method and device for determining transform block size
US11272204B2 (en) Motion compensation method and device, and computer system
CN103281527B (zh) 图像编解码方法及相关装置
CN103338376A (zh) 一种基于运动矢量的视频隐写方法
CN112672149B (zh) 一种视频处理方法、装置、存储介质及服务器
JP7309884B2 (ja) クロマイントラ予測方法および装置、並びにコンピュータ記憶媒体
CN114900691B (zh) 编码方法、编码器及计算机可读存储介质
CN101389028A (zh) 一种基于空域分解的视频帧内编码方法
CN109819260A (zh) 基于多嵌入域融合的视频隐写方法和装置
CN110062231A (zh) 基于多层卷积神经网络的图像压缩方法
CN105681803A (zh) 一种大容量的hevc视频信息隐藏方法
Bao et al. Mdvsc—wireless model division video semantic communication for 6g
CN104754343B (zh) 图像处理方法与***、解码方法、编码器与解码器
CN107682699A (zh) 一种近无损图像压缩方法
US20180084276A1 (en) Method of Lookup Table Size Reduction for Depth Modelling Mode in Depth Coding
US10715822B2 (en) Image encoding method and encoder
US20110158521A1 (en) Method for encoding image using estimation of color space
CN116137659A (zh) 帧间编码的块划分方法和装置
Chakraborty et al. An efficient video coding technique using a novel non-parametric background model
CN114071159B (zh) 帧间预测方法、编码器、解码器及计算机可读存储介质
CN107358590A (zh) 基于超像素分割和相似组稀疏表示的立体视频误码掩盖方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160113

Termination date: 20180606