CN109743570B - 一种屏幕内容视频的压缩方法 - Google Patents
一种屏幕内容视频的压缩方法 Download PDFInfo
- Publication number
- CN109743570B CN109743570B CN201910022363.8A CN201910022363A CN109743570B CN 109743570 B CN109743570 B CN 109743570B CN 201910022363 A CN201910022363 A CN 201910022363A CN 109743570 B CN109743570 B CN 109743570B
- Authority
- CN
- China
- Prior art keywords
- current coding
- block
- hash
- size
- image block
- 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.)
- Active
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明涉及一种屏幕内容视频的压缩方法,属于图像处理的技术领域,主要在现有的HEVC编码器上进行改进,解决了其基于哈希的帧间预测未能为当前编码块匹配相似图像块作为参考块以及编码过程中对图像块哈希值重复计算的问题。包括计算当前编码帧中所有图像块的哈希值;为当前帧生成哈希图;依据哈希图生成当前编码帧的哈希表;接下来对当前编码帧中的所有编码块执行以下步骤:从哈希图获取当前编码块的哈希值;在参考块中匹配到当前编码块的参考块;由HEVC完成当前编码块的编码。改进后的编码器在LD配置文件下的编码时间为原编码器的104%,平均BD码率增益为1.5%,在LD配置文件下的编码时间为原编码器的101%,平均BD码率增益为0.94%。
Description
技术领域
本发明属于图像处理的技术领域,具体地涉及一种屏幕内容视频的压缩方法。
背景技术
当前最新的国际标准为2013年制定的高效视频编码标准H.265/HEVC。HEVC-SCC的编码框架中,每个输入图像被划分为几个非重叠的编码树单元(Coding Tree Unit,CTU),每个CTU被分割成编码单元(Coding Unit,CU),使用四叉树结构递归,直到达到最小尺寸。每个CU进一步拆分为预测单元(Prediction Unit,PU),其大小范围从32x32到4x4。然后将PU进一步分解为变换单元(Transform Unit,tu)。采用速率失真优化(Rate-DistortionOptimization,RDO)来选择每个CU、PU和TU的最佳编码模式。视频编码联合协作小组(JointCollaborative Team on Video Coding,jct-vc)于2014年推出了屏幕内容编码(ScreenContent Coding,SCC)扩展的标准化,该标准是最新的高效视频编码标准。屏幕内容视频与传统的由相机拍摄的自然图像内容相比,需求文档定义的三种屏幕内容视频表现出了许多不同的特征,主要为没有传感器噪声、均匀平坦区域大、重复图像块多、对比度高、图像块颜色数量有限,运动偏移量大等。上述特征使传统的运动估计过程难以为当前编码块匹配到偏移量比较大的参考块,这是由于传统的运动估计只能在一个很小的范围中进行。然而,在整个参考帧区域内为当前编码块匹配参考块会耗费大量的时间和空间。因此,大量的基于哈希的方法被提出并使得大范围的运动估计更加实用。HEVC的SCC配置下应用的是Li等人设计的基于哈希的帧间块匹配框架。该框架与传统运动估计过程共同为当前编码块匹配参考块。在一个视频帧的编码过程结束后,如果该帧作为其他帧的参考帧,HEVC-SCC会用自下向上的哈希值计算方法获取这一帧中所有尺寸所有位置图像块的哈希值。哈希值是以从尺寸为2x2的块到尺寸为64x64的块的分层方式计算的。对于尺寸为2x2的块,其哈希值直接使用原始像素值的循环冗余校验码(Cyclic Redundancy Check,CRC)。之后会用小块的哈希值将作为输入值重用,以生成大型块的哈希值。为参考帧构建哈希表后,应对每个当前编码块执行基于哈希的搜索。如果使用基于哈希的方法找到匹配块,则将跳过正常的估计过程。否则,也会调用正常的估计过程来查找近似匹配。然而,基于CRC的哈希函数只能匹配与当前编码块相同的块,并不能充分利用到参考帧中与当前编码块部分匹配的图像块;另一方面,在对当前编码块应用基于哈希的匹配过程中,会计算其哈希值,而在当前帧编码完成后的哈希表生成过程中,将再次计算所有图像块的哈希值,增加编码时间复杂度。
发明内容
本发明的技术解决问题是:克服现有技术的不足,提供一种屏幕内容视频的压缩方法,其能够获得更高的压缩效率。
本发明的技术解决方案是:
基于HEVC框架,对其中基于哈希的帧间预测进行了改进,其特征在于,包括以下步骤:
(1)编码器在获取当前编码帧后,计算当前编码帧中每个图像块的两个哈希值,即循环冗余校验码和局部敏感哈希值,其中循环冗余校验码用来在参考帧中匹配与当前编码块相同的图像块;其中局部敏感哈希值用来在参考帧中匹配与当前编码块相似的图像块;
(2)根据(1)中生成的哈希值为当前编码帧生成哈希图,图中每个坐标存储当前编码帧中以该坐标为左上角的所有图像块的哈希值;
(3)根据(2)中生成的哈希图为当前编码帧生成哈希表;
(4)按照当前编码块的尺寸和在当前编码帧中的坐标,从(2)中生成的哈希图获取当前编码块的哈希值;
(5)在参考帧中为当前编码块匹配参考块
(6)HEVC将步骤(5)在参考帧中为当前编码块匹配到的参考块作为当前编码块在参考帧中的运动估计结果,并根据这个结果完成当前编码块后续的编码过程。
优选地,所述步骤(1)中:
对于当前编码帧中的每个图像块,即任意位置的尺寸为8*8,16*16,32*32和64*64的像素块,我们用两个哈希函数为这个图像块生成两个哈希值。
第一个哈希值是这个图像块的循环冗余校验码,这一部分是HEVC编码器中的循环冗余校验码生成函数生成的,属于公知技术。具体如下:
所述循环冗余校验码是一个40位的2进制数值.对于当前帧中尺寸为2N*2N的图像块的循环冗余校验码是由该图像块的4个尺寸为N*N的子图像块的循环冗余校验码生成的,其中N=1,2,4,8,16,32。
所述循环冗余校验码共包含R1,R2两部分,其中R1是截取自一个24位2进制数T1的低16位的2进制数值,R2是保留一个24位2进制数T2所有数值的24位2进制数值。
其T1的生成过程如下:
对于当前帧中每个尺寸为2*2的像素块,像素块分布如下:
a1,1a1,2
a2,1a2,2
其中a1,1,a1,2,a2,1,a2,2分别表示在这个尺寸为2*2的像素块中左上、右上、左下、右下四个点的像素值。
设该像素块的T1的初始值为0,Table1为一个提前预设值的参照表。
其中参照表Table1是一个包含256个整数的表格,Table1中第i个数值生成过程如下,
步骤一,设置highBit=223,ByteHighBit=27,m_truncPoly=0x5D6DCB
步骤二,设置remainder=0
步骤三,令mask=ByteHighBit
步骤四,如果mask==0,转到步骤八;否则执行步骤五。
步骤五,如果i-1和mask按位与的结果大于0,remainder和highBit按位异或并将结果储存在remainder;
步骤六,如果remainder和highBit按位与的结果大于0,remainder左移一位且remainder与m_truncPoly按位异或后将结果储存在remainder;否则,remainder左移一位。
步骤七,mask右移一位,转到步骤三
步骤八,Table1中第i个数值为remainder。
步骤九:T1右移16位,并且按位异或a1,1,得到索引Table1的下标index;
步骤十:T1左移8位,并且按位异或Table1表中的第index+1个数值;
步骤十一:用a1,2,a2,1,a2,2按照步骤八九的方法分别更新T1;
步骤十二:T1按位与224-1,并将结果储存在T1。
接下来,对于当前帧中每个尺寸为4*4的图像块,将图像块的四个尺寸为2*2子图像块的哈希值作为一个尺寸为2*2图像块的四个像素值,并按照上述步骤求取这个新的2*2图像块的T1。其中子图像块是指以这个4*4的图像块的左上角为左上角的尺寸为2*2的图像块,以这个4*4的图像块的右上角为右上角的尺寸为2*2的图像块,以这个4*4的图像块的左下角为左下角的尺寸为2*2的图像块,以这个4*4的图像块的右下角为右下角的尺寸为2*2的图像块。
接下来,按照以上方法用尺寸为4*4的图像块的T1值求取尺寸为8*8的图像块的T1值。
接下来,按照以上方法用尺寸为8*8的图像块的T1值求取尺寸为16*16的图像块的T1值。
接下来,按照以上方法用尺寸为16*16的图像块的T1值求取尺寸为32*32的图像块的T1值。
接下来,按照以上方法用尺寸为32*32的图像块的T1值求取尺寸为64*64的图像块的T1值。
其T2的生成过程如下:
对于当前帧中每个尺寸为2*2的像素块,像素块分布如下:
a1,1a1,2
a2,1a2,2
其中a1,1,a1,2,a2,1,a2,2分别表示在这个尺寸为2*2的像素块中左上、右上、左下、右下四个点的像素值。
设该像素块的T2的初始值为0,Table2为一个提前预设值的参照表。
其中参照表Table2是一个包含256个整数的表格,Table2中第i个数值生成过程如下,
步骤一,设置highBit=223,ByteHighBit=27,m_truncPoly=0x864CFB
步骤二,设置remainder=0
步骤三,令mask=ByteHighBit
步骤四,如果mask==0,转到步骤八;否则执行步骤五。
步骤五,如果i-1和mask按位与的结果大于0,remainder和highBit按位异或并将结果储存在remainder;
步骤六,如果remainder和highBit按位与的结果大于0,remainder左移一位且remainder与m_truncPoly按位异或后将结果储存在remainder;否则,remainder左移一位。
步骤七,mask右移一位,转到步骤三
步骤八,Table2中第i个数值为remainder。
步骤九:T2右移16位,并且按位异或a1,1,得到索引Table2的下标index;
步骤十:T2左移8位,并且按位异或Table2表中的第index+1个数值;
步骤十一:用a1,2,a2,1,a2,2按照步骤八九的方法分别更新T2;
步骤十二:T2按位与224-1,并将结果储存在T2。
接下来,对于当前帧中每个尺寸为4*4的图像块,将图像块的四个尺寸为2*2子图像块的哈希值作为一个尺寸为2*2图像块的四个像素值,并按照上述步骤求取这个新的2*2图像块的T2。其中子图像块是指以这个4*4的图像块的左上角为左上角的尺寸为2*2的图像块,以这个4*4的图像块的右上角为右上角的尺寸为2*2的图像块,以这个4*4的图像块的左下角为左下角的尺寸为2*2的图像块,以这个4*4的图像块的右下角为右下角的尺寸为2*2的图像块。
接下来,按照以上方法用尺寸为4*4的图像块的T2值求取尺寸为8*8的图像块的T2值。
接下来,按照以上方法用尺寸为8*8的图像块的T2值求取尺寸为16*16的图像块的T2值。
接下来,按照以上方法用尺寸为16*16的图像块的T2值求取尺寸为32*32的图像块的T2值。
接下来,按照以上方法用尺寸为32*32的图像块的T2值求取尺寸为64*64的图像块的T2值。
第二个哈希函数是局部敏感哈希函数,这一部分哈希值(Hash)由两个16位二进制数(Hfp和Hlp)组成。对于当前编码帧的任一图像块,即任意位置的尺寸为8*8,16*16,32*32和64*64的像素块,我们只提取这个图像块的亮度分量(Y分量),并将得到的亮度分量矩阵均匀下采样至8*8尺寸,即得到一个8*8的整数矩阵B。接下来我们计算B中所有数值的平均值Ave,并由此构建一个尺寸为8*8的二值化矩阵L。比较矩阵B中每个数值与Ave的大小,如果B中坐标为(i,j)(i,j都是取值为1到8的整数)的数值大于Ave,则L矩阵中坐标为(i,j)的值被设定为1;否则,L矩阵中坐标为(i,j)的值被设定为0。
Hfp仍由两个八位二进制数r和c构成,其中r中第j位二进制数字的计算方式用公式(1)表示
由r和c可以得到Hfp,用公式(3)表示
Hfp=(r<<8)+c (3)
Hlp则是一个16位二进制数,其计算方法如下:
此时我们将Hfp和Hlp合并起来即得到这个图像块的第二个哈希值,用公式(5)表示
Hash=(Hfp<<16)+Hlp (5)
优选地,所述步骤(2)中:
当前编码帧的哈希图是一个与当前编码帧等尺寸的矩阵,矩阵的宽与当前编码帧的水平像素数相等,矩阵的高与当前编码帧的垂直像素数相等。矩阵中每个点存储着以这个点的坐标为左上角的所有图像块的所有哈希值,即以这个点为左上角的8*8,16*16,32*32和64*64四种尺寸的图像块各自的两个哈希值共8个哈希值,不同大小尺寸图像块的哈希值以数字区分。
优选地,所述步骤(3)中:
当前编码帧的哈希表中存储当前编码帧中所有图像块的哈希值和在当前编码帧中的坐标,但在生成哈希表时,这些哈希值是由步骤(2)中生成的哈希图提供的。对应步骤(1)中对每个图像块生成的两个哈希值,我们为每一帧配备两个哈希表,第一个哈希表存储这一帧中所有图像块的循环冗余校验码和坐标;第二个哈希表存储这一帧中所有图像块的局部敏感哈希值和坐标。第一个哈希表的建立仍沿用HEVC中的方法,具体结构如图2所示,图2中00,11表示图像块的尺寸码,图像块的尺寸为8*8时,其尺寸码为00;图像块的尺寸为16*16时,其尺寸码为01;图像块的尺寸为32*32时,其尺寸码为10;图像块的尺寸为64*64时,其尺寸码为11。CRC16i(1≤i≤n)表示哈希表中第i个记录所对应的循环冗余校验码的高16位。Xim,Yim(1≤m≤n)表示哈希表中(尺寸码+CRC16i)的记录中存储的单向链表中第m个图像块的左上角在当前帧中的坐标,其中Xim为水平坐标,Yim是垂直坐标。CRC24nm表示哈希表中(尺寸码+CRC16n)的记录中存储的单向链表中第m个图像块的循环冗余检验码的低24位。在生成第二个哈希表时,如图3所示,00,11表示图像块的尺寸码,图像块的尺寸为8*8时,其尺寸码为00;图像块的尺寸为16*16时,其尺寸码为01;图像块的尺寸为32*32时,其尺寸码为10;图像块的尺寸为64*64时,其尺寸码为11。hfpi(1≤i≤n)表示哈希表中第i个记录所对应的局部敏感哈希值的hfp。Xim,Yim(1≤m≤n)表示哈希表中(尺寸码+hfpi)的记录中存储的单向链表中第m个图像块的左上角在当前帧中的坐标,其中Xim为水平坐标,Yim是垂直坐标。hlpim表示哈希表中(尺寸码+hfpi)的记录中存储的单向链表中第m个图像块的局部敏感哈希值的hlp。
步骤(1)中生成Hfp和图像块的尺寸码共同作为哈希表的索引,其中图像块尺寸码作为哈希表索引的高两位Hfp作为哈希表索引的低16位。表中的每个记录都是一个线性表,这个线性表中每个节点存储一个图像块的Hlp和坐标。
优选地,所述步骤(4)中:
在需要获取当前编码块的哈希值时,根据当前编码块左上角在当前编码帧中的坐标和当前编码块的尺寸,到步骤(2)生成的哈希图中查找。并按照步骤(3)中的方法生成当前编码块的尺寸码,与当前编码块的两个哈希值分别拼接成两个哈希表中的索引。
优选地,所述步骤(5)中:
在得到当前编码块的在两个哈希表中的索引后,在参考帧的哈希表中首先查找与当前编码块有相同的循环冗余校验码及尺寸码的图像块,如果这种图像块存在,将其作为当前编码块的参考块;否则,在参考帧的哈希表中查找与当前编码块由相同的局部敏感哈希值及尺寸码的图像块,如果这种图像块存在,将其作为当前编码块的参考块。如果以上两种方法都失败,则利用HEVC的传统运动估计进行参考块匹配。
优选地,所述步骤(6)中:
(6)HEVC将步骤(5)在参考帧中为当前编码块匹配到的参考块作为当前编码块在参考帧中的运动估计结果,并根据这个结果完成当前编码块后续的编码过程。该步骤是在HEVC框架基础上完成,属于现有技术。
本发明在编码器获取当前编码帧后,计算当前编码帧中所有图像块的哈希值,包括循环冗余校验码和局部敏感哈希值。并根据这些图像块在当前编码帧中的坐标和尺寸,将所有图像块的哈希值填到一个哈希图中,进而根据所生成的哈希图中的哈希值生成当前编码帧的哈希表。当编码器需要每个当前编码块的哈希值时,可以到哈希图中根据当前编码块的尺寸和坐标找到该图像块的哈希值,并利用这个哈希值在参考帧的哈希表中匹配与当前编码块相同或者相似的图像块作为参考块。最终将匹配结果作为运动估计结果送入HEVC编码器中完成当前编码块的编码。这样可以获得更高的压缩效率。
有益效果
从编码时间角度上看,编码时间的增加很小;但是从BD增益上来看,BD增益很大。也就是说在基本不增加编码时间的情况下,取得了较大的编码增益。
附图说明
图1本发明的方法流程图;
图2是本发明每一帧图像的循环冗余校验码哈希表结构示意图。
图3本发明每一帧图像的局部敏感哈希表结构示意图。
图4是本发明基于哈希参考块匹配的流程图。
具体实施方式
以下具体说明本发明:
由背景技术可知:
HEVC编码器的SCC配置下应用的是Li等人设计的基于哈希的帧间块匹配框架。其所使用的基于循环冗余校验码的哈希函数只能匹配与当前编码块相同的块,并不能充分利用到参考帧中与当前编码块部分匹配的图像块;另一方面,在对当前编码块应用基于哈希的匹配过程中,会计算其哈希值,而在当前帧编码完成后的哈希表生成过程中,将再次计算所有图像块的哈希值,增加编码时间复杂度。在本发明中,编码器在获取当前编码帧后,首先计算当前编码帧中所有图像块的哈希值,其中既包含图像块的循环冗余校验码,又包括局部敏感哈希值。每个像素由亮度值(Y分量)和色度值(U和V分量)组成,其中亮度值是一个像素的决定性因素,因此根据一个图像块的所有亮度值计算局部敏感哈希值。接下来,根据这些图像块在当前编码帧中的坐标和尺寸,将所有图像块的哈希值填到一个哈希图中,进而根据所生成的哈希图中的哈希值生成当前编码帧的哈希表。当编码器需要每个当前编码块的哈希值时,可以到哈希图中根据当前编码块的尺寸和坐标找到该图像块的哈希值,并利用这个哈希值在参考帧的哈希表中匹配与当前编码块相同或者相似的图像块作为参考块。最终将匹配结果送入HEVC编码器中完成预测模式选择和当前编码块的编码。
将本方法分为三个部分:当前编码帧所有图像块的哈希值生成,当前编码帧的哈希图及哈希表的构建和当前编码块的参考块匹配。在本文接下来的部分,对此方案进行详细的介绍。
1.当前编码帧所有图像块的哈希值生成
编码器获取当前编码帧后,会计算出当前编码帧中所有图像块的哈希值。
第一个哈希值是这个图像块的循环冗余校验码,这一部分由HEVC编码器中的循环冗余校验码函数生成,是一个40位的二进制数。
第二个哈希函数是局部敏感哈希函数,这一部分哈希值(Hash)由两个16位二进制数(Hfp和Hlp)组成。对于当前编码帧的任一图像块,即任意位置的尺寸为8*8,16*16,32*32和64*64的像素块,我们只提取这个图像块的亮度分量(Y分量),并将得到的亮度分量矩阵均匀下采样至8*8尺寸,即得到一个8*8的整数矩阵B。接下来我们计算B中所有数值的平均值Ave,并由此构建一个尺寸为8*8的二值化矩阵L。比较矩阵B中每个数值与Ave的大小,如果B中坐标为(i,j)(i,j都是取值为1到8的整数)的数值大于Ave,则L矩阵中坐标为(i,j)的值被设定为1;否则,L矩阵中坐标为(i,j)的值被设定为0。
Hfp仍由两个八位二进制数r和c构成,其中r中第j位二进制数字的计算方式用以下公式表示:
由r和c可以得到Hfp,用以下公式表示:
Hfp=(r<<8)+c
Hlp则是一个16位二进制数,其计算方法如下:
此时我们将Hfp和Hlp合并起来即得到这个图像块的第二个哈希值,用以下公式表示:
Hash=(Hfp<<16)+Hlp
2.当前编码帧的哈希图及哈希表的构建
当前编码帧的哈希图是一个与当前编码帧等尺寸的矩阵,即哈希图的宽等于当前编码帧的水平像素数,哈希图的高等于当前编码帧的垂直像素数,矩阵中每个点存储着以这个点的坐标为左上角的所有图像块的所有哈希值,即以这个点为左上角的8*8,16*16,32*32和64*64四种尺寸的图像块各自的两个哈希值共8个哈希值,其中不同大小尺寸图像块的哈希值以数字区分。
当前编码帧的哈希表中存储当前编码帧中所有图像块的哈希值及位置,但在生成哈希表时,这些哈希值是由步骤(2)中生成的哈希图提供的。对应步骤(1)中对每个图像块生成的两个哈希值,我们为每一帧配备两个哈希表,第一个哈希表存储这一帧中所有图像块的循环冗余校验码和坐标;第二个哈希表存储这一帧中所有图像块的局部敏感哈希值和坐标。第一个哈希表的建立仍沿用HEVC中的方法。在生成第二个哈希表时,步骤(1)中生成的Hfp和图像块的尺寸码作为哈希表的索引,其中图像块尺寸码作为哈希表索引的高两位Hfp作为哈希表索引的低16位,表中的每个记录都是一个线性表,这个线性表中每个节点存储一个图像块的Hlp和坐标,用图3表示。00,11表示图像块的尺寸码,hfpi(1≤i≤n)表示哈希表中第i个记录所对应的局部敏感哈希值的hfp。Xim,Yim(1≤m≤n)表示哈希表中(尺寸码+hfpi)的记录中存储的单向链表中第m个图像块的左上角在当前帧中的坐标,其中Xim为水平坐标,Yim是垂直坐标。hlpim表示哈希表中(尺寸码+hfpi)的记录中存储的单向链表中第m个图像块的局部敏感哈希值的hlp。
3.当前编码块的参考块匹配
这一部分的目的是为当前编码块在参考帧中进行大范围的相似参考块匹配,因此匹配过程共涉及到三种参考块匹配方法。
图4展示了编码器在为当前编码块匹配参考块的过程。在编码器获取尺寸为N*N(N=8,16,32或64)当前编码块的哈希值和尺寸码后。首先会利用当前编码块的循环冗余校验码和尺寸码在参考帧的第一个哈希表内匹配参考块,如果匹配到图像块,则将匹配到的图像块作为当前编码块的参考块;如果根据当前编码块的循环冗余校验码及尺寸码没有匹配到参考块,则进一步利用当前编码块的局部敏感哈希值及尺寸码在参考帧的第二个哈希表内匹配参考块,如果匹配到图像块,则将匹配到的图像块作为当前编码块的参考块;如果上述两种匹配方案都失败,则仍按照HEVC编码器中的传统运动估计为当前编码块匹配参考块。
在获得当前编码块的参考块后,HEVC会为当前编码块完成编码过程。
为了验证所提方案的有效性,将所得的解码器对应的编码方案与HEVC参考代码HM16.16_SCM8.5做了比较。对于测试序列,实验采用的配置文件为HEVC-SCC标准配置文件encoder_lowdelay_main(LD)和randomaccess_main_scc(RA)。为了更全面的反映本方案的效率,实验在四组量化参数22,27,32,37下进行。实验结果的客观评价采用BD-Rate度量。
表一中的数据首先包括实验视频序列在LD和RA配置文件下Y(亮度)分量的BD码率增益以及这些实验视频序列上的平均增益,其次包括改进后的编码器与原编码器平均编码时间的对比。以上数据以原编码器的数据为基准。
本发明在HEVC编码器上进行改进。为基于哈希的帧间预测加入了为当前编码块匹配相似块作为参考块的功能,并且利用哈希图解决了哈希值的重复计算问题。最终通过在改进后的编码器和原编码器上对实验视频序列的编码结果对比,改进后的编码器在LD配置文件下的平均编码时间为原编码器的104%,平均BD码率增益为1.5%,在LD配置文件下的平均编码时间为原编码器的101%,平均BD码率增益为0.94%。因为“为基于哈希的帧间预测加入了为当前编码块匹配相似块作为参考块的功能”是纯粹在原有功能上的附加,因此无可避免会增加编码时间,但是本发明通过避免哈希值的重复计算将编码时间的增加控制在4%范围内。总体来说,从编码时间角度上看,编码时间的增加很小;但是从BD增益上来看,BD增益很大。也就是说在基本不增加编码时间的情况下,取得了较大的编码增益。
表一
以上所述,仅是本发明的较佳实施例,并非对本发明作任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属本发明技术方案的保护范围。
Claims (1)
1.一种屏幕内容视频的压缩方法,基于HEVC框架,对其中基于哈希的帧间预测进行了改进,其特征在于,包括以下步骤:
(1)编码器在获取当前编码帧后,计算当前编码帧中每个图像块的两个哈希值,即循环冗余校验码和局部敏感哈希值,其中循环冗余校验码用来在参考帧中匹配与当前编码块相同的图像块;其中局部敏感哈希值用来在参考帧中匹配与当前编码块相似的图像块;
(2)根据(1)中生成的哈希值为当前编码帧生成哈希图,图中每个坐标存储当前编码帧中以该坐标为左上角的所有图像块的哈希值;
(3)根据(2)中生成的哈希图为当前编码帧生成哈希表;
(4)按照当前编码块的尺寸和在当前编码帧中的坐标,从(2)中生成的哈希图获取当前编码块的哈希值;
(5)在参考帧中为当前编码块匹配参考块;
(6)HEVC将步骤(5)在参考帧中为当前编码块匹配到的参考块作为当前编码块在参考帧中的运动估计结果,并根据这个结果完成当前编码块后续的编码过程;
其中,所述步骤(1)中:
所述的图像块为任意位置的尺寸为8*8,16*16,32*32和64*64的像素块;
所述的循环冗余校验码是由HEVC编码器的循环冗余校验码函数生成的,是一个40位二进制数,
所述的局部敏感哈希值Hash由16位二进制数Hfp和Hlp组成,即
Hash=(Hfp<<16)+Hlp
其中
Hfp由两个八位二进制数r和c构成,即Hfp=(r<<8)+c
其中,r中第j位二进制数字的计算方式用公式(1)表示
c中第i位二进制数字的计算方式用公式(2)表示
L为二值化矩阵,具体计算方法如下:
首先,提取图像块的亮度分量,即Y分量,并将得到的亮度分量矩阵均匀下采样至8*8尺寸,即得到一个8*8的整数矩阵B;
接下来,计算B中所有数值的平均值Ave,比较矩阵B中每个数值与Ave的大小,如果B中坐标为(i,j)的数值大于Ave,则L矩阵中坐标为(i,j)的值被设定为1;否则,L矩阵中坐标为(i,j)的值被设定为0,i,j为1到8的整数;
Hlp是一个16位二进制数,其计算方法具体如下:
其中,所述步骤(2)中:
所述的图像块为任意位置的尺寸为8*8,16*16,32*32和64*64的像素块,
所述的当前编码帧的哈希图是一个矩阵,
其中
所述矩阵的宽度与当前编码帧的水平像素数相等,矩阵的高度与当前编码帧的垂直像素数相等;
所述矩阵中的每个位置,存储以该位置坐标为左上角的图像块的哈希值,即循环冗余校验码和局部敏感哈希值;
其中,所述步骤(3)中:
所述哈希表共分两个:
第一个用来储存当前编码帧中所有图像块位置及其循环冗余校验码,第二个用来储存当前编码帧中所有图像块位置及其局部敏感哈希值,
两个哈希表结构相同,首先每个哈希表中都包含218个记录,每个记录中又存储一个单向链表;
所述的第一个哈希表的生成方法如下:
首先得到这个图像块的左上角像素在当前编码帧中的坐标;
接下来,在哈希图中按照图像块的坐标和尺寸找到这个图像块的循环冗余校验码;
接下来,根据图像块的尺寸决定图像块的尺寸码,所述尺寸码是一个2位二进制数,当图像块尺寸为8*8时,它的尺寸码是00;当图像块尺寸为16*16时,它的尺寸码是01;当图像块尺寸为32*32时,它的尺寸码是10;当图像块尺寸为64*64时,它的尺寸码是11;
接下来,截取图像块循环冗余校验码的高16位二进制数值与尺寸码拼接作为图像块应该存储在哈希表中记录的索引,其中,所述索引的生成方法如下:将图像块的尺寸码作为索引的高两位,将图像块的循环冗余校验码的高16位作为索引的低16位;
接下来,在哈希表中找到索引所对应的记录并得到记录中存储的单向链表,并将图像块的坐标信息和循环冗余校验码的低24位存储到单向链表的尾部;
对当前编码帧中所有图像块进行如上操作,生成第一个哈希表;
所述的第二个哈希表的生成方法如下:
首先得到这个图像块的左上角像素在当前编码帧中的坐标;
接下来,在哈希图中按照图像块的坐标和尺寸找到这个图像块的局部敏感哈希值;
接下来,根据图像块的尺寸决定图像块的尺寸码,所述尺寸码是一个2位二进制数,当图像块尺寸为8*8时,它的尺寸码是00;当图像块尺寸为16*16时,它的尺寸码是01;当图像块尺寸为32*32时,它的尺寸码是10;当图像块尺寸为64*64时,它的尺寸码是11;
接下来,用图像块局部敏感哈希值的Hfp与尺寸码拼接作为图像块应该存储在哈希表中记录的索引,其中,所述索引的生成方法如下:将图像块的尺寸码作为索引的高两位,将图像块的Hfp作为索引的低16位;
接下来,在哈希表中找到索引所对应的记录并得到记录中存储的单向链表,并将图像块的坐标信息和Hlp存储到单向链表的尾部;
对当前编码帧中所有图像块进行如上操作,生成第二个哈希表;
其中,所述步骤(4)具体如下:
首先得到当前编码块左上角在当前编码帧中的坐标A和当前编码块的尺寸;
接下来,在(2)中生成的哈希图中找到坐标A,并根据当前编码块的尺寸找到当前编码块的循环冗余校验码和局部敏感哈希值;
接下来,为当前编码块生成尺寸码;当前图像块尺寸为8*8时,它的尺寸码是00;当前图像块尺寸为16*16时,它的尺寸码是01;当前图像块尺寸为32*32时,它的尺寸码是10;当前图像块尺寸为64*64时,它的尺寸码是11;
接下来,为当前编码块生成在参考帧的第一个哈希表中的索引,其中,所述索引的生成方法如下:将图像块的尺寸码作为索引的高两位,将图像块的循环冗余校验码的高16位作为索引的低16位;其中,所述的参考帧由HEVC编码器中当前编码帧的参考帧列表中选取;
接下来,为当前编码块生成在参考帧的第二个哈希表中的索引,其中,所述索引的生成方法如下:将当前图像块的尺寸码作为索引的高两位,将当前图像块的Hfp作为索引的低16位;
最后,根据生成的索引,在第一个哈希表和第二个哈希表中得到当前编码块的哈希值;
其中,所述步骤(5)具体包括:
首先,在参考帧中为当前编码块匹配相同的图像块,即找到步骤(4)中生成的当前编码块在参考帧第一个哈希表中的索引所对应的记录,并在记录中的单向链表中查找与当前编码块的循环冗余校验码低24位相同的图像块;如果哈希表中存在这样的图像块,则继续步骤(6);其中,与当前编码块相同的图像块是指参考帧中与当前编码块对应位置像素都相等的图像块;
如果无法找到完全相同的图像块,则在参考帧中为当前编码块匹配相似图像块,即找到步骤(4)中生成的当前编码块在参考帧第二个哈希表中的索引所对应的记录,并在记录中的单向链表中查找与当前编码块的Hlp相同的图像块,如果哈希表中存在这样的图像块,则继续步骤(6);其中,与当前编码块相似的图像块是指参考帧中与当前编码块对应位置像素超过90%相同的图像块,
如果上述两种情况都不满足,则在参考帧中为当前编码块进行传统的运动估计,找到参考块后继续步骤(6)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910022363.8A CN109743570B (zh) | 2019-01-09 | 2019-01-09 | 一种屏幕内容视频的压缩方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910022363.8A CN109743570B (zh) | 2019-01-09 | 2019-01-09 | 一种屏幕内容视频的压缩方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109743570A CN109743570A (zh) | 2019-05-10 |
CN109743570B true CN109743570B (zh) | 2021-07-06 |
Family
ID=66364189
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910022363.8A Active CN109743570B (zh) | 2019-01-09 | 2019-01-09 | 一种屏幕内容视频的压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109743570B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111126620B (zh) * | 2019-12-10 | 2020-11-03 | 河海大学 | 一种用于时间序列的特征指纹生成方法及应用 |
CN111225214B (zh) * | 2020-01-22 | 2022-08-12 | 北京字节跳动网络技术有限公司 | 视频处理方法、装置及电子设备 |
CN111246208B (zh) * | 2020-01-22 | 2022-04-08 | 北京字节跳动网络技术有限公司 | 视频处理方法、装置及电子设备 |
CN112804528B (zh) * | 2021-02-05 | 2022-10-28 | 北京字节跳动网络技术有限公司 | 屏幕内容处理方法、装置及设备 |
CN113542750B (zh) * | 2021-05-27 | 2024-06-25 | 绍兴市北大信息技术科创中心 | 采用两套以上哈希表进行搜索的数据编码方法 |
CN113242430B (zh) * | 2021-05-31 | 2024-05-31 | 杭州当虹科技股份有限公司 | 视频编码方法 |
CN113542769B (zh) * | 2021-09-17 | 2021-12-10 | 苏州浪潮智能科技有限公司 | 一种视频图像编码方法、***、设备以及介质 |
CN116760986B (zh) * | 2023-08-23 | 2023-11-14 | 腾讯科技(深圳)有限公司 | 候选运动矢量生成方法、装置、计算机设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104780379A (zh) * | 2015-01-21 | 2015-07-15 | 北京工业大学 | 一种屏幕图像集合的压缩方法 |
CN108495139A (zh) * | 2018-04-18 | 2018-09-04 | 北方工业大学 | 屏幕内容编码的哈希块匹配 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9262986B2 (en) * | 2011-12-07 | 2016-02-16 | Cisco Technology, Inc. | Reference frame management for screen content video coding using hash or checksum functions |
GB2531003A (en) * | 2014-10-06 | 2016-04-13 | Canon Kk | Method and apparatus for vector encoding in video coding and decoding |
-
2019
- 2019-01-09 CN CN201910022363.8A patent/CN109743570B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104780379A (zh) * | 2015-01-21 | 2015-07-15 | 北京工业大学 | 一种屏幕图像集合的压缩方法 |
CN108495139A (zh) * | 2018-04-18 | 2018-09-04 | 北方工业大学 | 屏幕内容编码的哈希块匹配 |
Non-Patent Citations (2)
Title |
---|
Fast Hash-Based Inter-Block Matching for;Wei Xiao, Guangming Shi, Senior Member, IEEE, Bin Li, Member, IE;《IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY》;20161222;全文 * |
Hash-Based Block Matching;Weijia Zhu, Wenpeng Ding, Jizheng Xu, Yunhui Shi, and Baocai Yin;《IEEE TRANSACTIONS ON MULTIMEDIA》;20150429;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109743570A (zh) | 2019-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109743570B (zh) | 一种屏幕内容视频的压缩方法 | |
JP4085116B2 (ja) | ブロック単位での画像データの圧縮及び圧縮解除 | |
CN111405281A (zh) | 一种点云属性信息的编码方法、解码方法、存储介质及终端设备 | |
CN106415607A (zh) | 具有改进调色板表和索引图编码的先进屏幕内容编码方法 | |
CA2831967A1 (en) | Image compression using sub-resolution images | |
JP4522199B2 (ja) | 画像符号化装置及び画像処理装置及びそれらの制御方法、並びにコンピュータプログラム及びコンピュータ可読記憶媒体 | |
CN110383331A (zh) | 非局部适应性环路滤波器处理 | |
US11805276B2 (en) | Intra prediction method and device and computer-readable storage medium | |
CN103856776B (zh) | 边界和曲率驱动修复的图像编码和解码方法 | |
CN114900691A (zh) | 编码方法、编码器及计算机可读存储介质 | |
CN114640857A (zh) | 基于改进哈夫曼编码的图像压缩方法、3d降噪方法 | |
Schiopu et al. | Lossy depth image compression using greedy rate-distortion slope optimization | |
CN112637600B (zh) | 对数据进行有损或无损压缩的编码、解码的方法或装置 | |
CN107682699B (zh) | 一种近无损图像压缩方法 | |
KR100717002B1 (ko) | 영상 부호화 및 복호화 장치와, 그 방법, 및 이를 수행하기위한 프로그램이 기록된 기록 매체 | |
JPH03188768A (ja) | 画像圧縮装置 | |
CN106941610B (zh) | 基于改进方块编码的二值roi掩模编码方法 | |
Wang et al. | Deep correlated image set compression based on distributed source coding and multi-scale fusion | |
CN108174201A (zh) | 按视频内容提前终止编码块编码模式搜索的视频压缩方法 | |
JPH0937262A (ja) | 画像処理装置及び方法 | |
Cabral et al. | Pixel-position-based lossless image compression algorithm | |
US20240037801A1 (en) | Point cloud encoding and decoding method and decoder | |
CN116600107B (zh) | 基于ipms-cnn和空域相邻cu编码模式的hevc-scc快速编码方法及装置 | |
KR100495001B1 (ko) | 이미지 압축 부호화 방법 및 시스템 | |
JP3711104B2 (ja) | 画像圧縮装置および画像圧縮方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |