CN115086656A - 视频编解码方法、装置、计算机可读介质及电子设备 - Google Patents

视频编解码方法、装置、计算机可读介质及电子设备 Download PDF

Info

Publication number
CN115086656A
CN115086656A CN202110273047.5A CN202110273047A CN115086656A CN 115086656 A CN115086656 A CN 115086656A CN 202110273047 A CN202110273047 A CN 202110273047A CN 115086656 A CN115086656 A CN 115086656A
Authority
CN
China
Prior art keywords
value
displacement vector
direction component
vector residual
string
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.)
Pending
Application number
CN202110273047.5A
Other languages
English (en)
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202110273047.5A priority Critical patent/CN115086656A/zh
Publication of CN115086656A publication Critical patent/CN115086656A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本申请的实施例提供了一种视频编解码方法、装置、计算机可读介质及电子设备。该视频解码方法包括:从码流中解码出位移矢量残差第一方向分量符号值;若根据位移矢量残差第一方向分量符号值确定位移矢量残差第一方向分量的值小于0,则按照k1阶指数哥伦布码的方式进行反二值化处理得到位移矢量残差第一方向分量的绝对值;若确定位移矢量残差第一方向分量的值大于0,则按照t1阶指数哥伦布码的方式进行反二值化处理得到位移矢量残差第一方向分量的绝对值,t1与k1不相等;根据位移矢量残差第一方向分量绝对值,以及位移矢量残差第一方向分量符号值,确定位移矢量残差第一方向分量的值。本申请实施例的技术方案可以提高视频的编解码效率。

Description

视频编解码方法、装置、计算机可读介质及电子设备
技术领域
本申请涉及计算机及通信技术领域,具体而言,涉及一种视频编解码方法、装置、计算机可读介质及电子设备。
背景技术
现有的视频编码标准,帧内串复制(Intra String Copy,简称ISC)模式的串位移矢量(String Vector,简称SV)使用的运动矢量编码方法流程较为繁琐,编解码复杂度较高,影响了视频编解码效率。
发明内容
本申请的实施例提供了一种视频编解码方法、装置、计算机可读介质及电子设备,进而至少在一定程度上可以提高视频的编解码效率。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请实施例的一个方面,提供了一种视频解码方法,包括:从码流中解码出位移矢量残差第一方向分量符号值;若根据所述位移矢量残差第一方向分量符号值确定位移矢量残差第一方向分量的值小于0,则按照k1阶指数哥伦布码的方式进行反二值化处理得到位移矢量残差第一方向分量的绝对值,k1≥0;若根据所述位移矢量残差第一方向分量符号值确定位移矢量残差第一方向分量的值大于0,则按照t1阶指数哥伦布码的方式进行反二值化处理得到位移矢量残差第一方向分量的绝对值,t1≥0且t1与k1不相等;根据所述位移矢量残差第一方向分量绝对值,以及所述位移矢量残差第一方向分量符号值,确定所述位移矢量残差第一方向分量的值。
根据本申请实施例的一个方面,提供了一种视频编码方法,包括:确定位移矢量残差第一方向分量符号值;若根据所述位移矢量残差第一方向分量符号值确定位移矢量残差第一方向分量的值小于0,则按照k1阶指数哥伦布码的方式进行去二值化处理得到位移矢量残差第一方向分量的绝对值,k1≥0;若根据所述位移矢量残差第一方向分量符号值确定位移矢量残差第一方向分量的值大于0,则按照t1阶指数哥伦布码的方式进行去二值化处理得到位移矢量残差第一方向分量的绝对值,t1≥0且t1与k1不相等;根据所述位移矢量残差第一方向分量绝对值,以及所述位移矢量残差第一方向分量符号值进行编码处理。
根据本申请实施例的一个方面,提供了一种视频解码装置,包括:解码单元,配置为从码流中解码出位移矢量残差第一方向分量符号值;第一处理单元,配置为若根据所述位移矢量残差第一方向分量符号值确定位移矢量残差第一方向分量的值小于0,则按照k1阶指数哥伦布码的方式进行反二值化处理得到位移矢量残差第一方向分量的绝对值,k1≥0;第二处理单元,配置为若根据所述位移矢量残差第一方向分量符号值确定位移矢量残差第一方向分量的值大于0,则按照t1阶指数哥伦布码的方式进行反二值化处理得到位移矢量残差第一方向分量的绝对值,t1≥0且t1与k1不相等;第三处理单元,配置为根据所述位移矢量残差第一方向分量绝对值,以及所述位移矢量残差第一方向分量符号值,确定所述位移矢量残差第一方向分量的值。
在本申请的一些实施例中,基于前述方案,所述解码单元配置为:从码流中解码出位移矢量残差第一方向分量的标志位;若所述位移矢量残差第一方向分量的标志位为第一值,则从所述码流中解码出所述位移矢量残差第一方向分量符号值;其中,所述位移矢量残差第一方向分量的标志位为第一值表示所述位移矢量残差第一方向分量的值不为0。
在本申请的一些实施例中,基于前述方案,所述解码单元还配置为:若所述位移矢量残差第一方向分量的标志位为第二值,则确定所述位移矢量残差第一方向分量的值为0。
在本申请的一些实施例中,基于前述方案,所述解码单元配置为:若所述位移矢量残差第一方向分量符号值为第一值,则确定所述位移矢量残差第一方向分量的值小于0;若所述位移矢量残差第一方向分量符号值为第二值,则确定所述位移矢量残差第一方向分量的值大于0。
在本申请的一些实施例中,基于前述方案,所述解码单元还配置为:从所述码流中解码得到位移矢量残差第二方向分量绝对值,若所述位移矢量残差第二方向分量绝对值不为0,则从所述码流中解码得到位移矢量残差第二方向分量符号值;所述第三处理单元还配置为:根据所述位移矢量残差第二方向分量绝对值,以及所述位移矢量残差第二方向分量符号值,确定位移矢量残差第二方向分量的值。
在本申请的一些实施例中,基于前述方案,所述解码单元配置为:从码流中按照截断一元码的方式进行解码并进行反二值化处理,得到位移矢量残差第二方向分量的前缀值;根据所述位移矢量残差第二方向分量的前缀值,生成所述位移矢量残差第二方向分量绝对值。
在本申请的一些实施例中,基于前述方案,所述解码单元配置为:若所述位移矢量残差第二方向分量的前缀值小于或等于4,则将所述位移矢量残差第二方向分量的前缀值作为所述位移矢量残差第二方向分量绝对值;
若所述位移矢量残差第二方向分量的前缀值等于5,则将补偿值设为5,并基于从码流中继续解码得到的2位比特,按照2位定长码的方式进行反二值化处理得到位移矢量残差第二方向分量的后缀值,根据所述位移矢量残差第二方向分量的后缀值和所述补偿值生成所述位移矢量残差第二方向分量绝对值;
若所述位移矢量残差第二方向分量的前缀值等于6,则将补偿值设为9,并基于从码流中继续解码得到的3位比特,按照3位定长码的方式进行反二值化处理得到位移矢量残差第二方向分量的后缀值,根据所述位移矢量残差第二方向分量的后缀值和所述补偿值生成所述位移矢量残差第二方向分量绝对值;
若所述位移矢量残差第二方向分量的前缀值等于7,则将补偿值设为17,并基于从码流中继续解码得到的1位比特,确定所述位移矢量残差第二方向分量绝对值的奇偶性;从所述码流中继续进行解码,按照2阶指数哥伦布码的方式进行反二值化处理,根据所述2阶指数哥伦布码的方式进行反二值化处理的结果、所述补偿值和所述位移矢量残差第二方向分量绝对值的奇偶性生成所述位移矢量残差第二方向分量绝对值。
在本申请的一些实施例中,基于前述方案,所述解码单元配置为:若所述位移矢量残差第二方向分量的前缀值小于或等于2,则将所述位移矢量残差第二方向分量的前缀值作为所述位移矢量残差第二方向分量绝对值;若所述位移矢量残差第二方向分量的前缀值等于3,则将补偿值设为3,并基于从码流中继续解码得到的1位比特,确定所述位移矢量残差第二方向分量绝对值的奇偶性;从所述码流中继续进行解码,按照0阶指数哥伦布码的方式进行反二值化处理,根据所述0阶指数哥伦布码的方式进行反二值化处理的结果、所述补偿值和所述位移矢量残差第二方向分量绝对值的奇偶性生成所述位移矢量残差第二方向分量绝对值。
在本申请的一些实施例中,基于前述方案,所述位移矢量残差为:串位移矢量残差(String Vector Difference,简称SVD);或者运动位移矢量残差(Motion VectorDifference,简称MVD);或者块位移矢量残差(Block Vector Difference,简称BVD)。
在本申请的一些实施例中,基于前述方案,所述位移矢量残差为串位移矢量残差SVD;所述第三处理单元还配置为:若未获取到预测串位移矢量(String VectorPredictor,简称SVP),则将所述串位移矢量残差SVD作为串位移矢量SV;若获取到预测串位移矢量SVP,则根据所述串位移矢量残差SVD和所述预测串位移矢量SVP确定串位移矢量SV。
在本申请的一些实施例中,基于前述方案,所述位移矢量残差第一方向分量为串位移矢量残差垂直方向分量。
在本申请的一些实施例中,基于前述方案,若所述位移矢量残差第一方向分量为串位移矢量残差垂直方向分量,则所述解码单元还配置为:若所述串位移矢量残差垂直方向分量的值为0,则从所述码流中解码出串位移矢量残差水平方向分量符号值;所述第一处理单元还配置为:若根据所述串位移矢量残差水平方向分量符号值确定串位移矢量残差水平方向分量的值小于0,则按照k2阶指数哥伦布码的方式进行反二值化处理得到串位移矢量残差水平方向分量的绝对值,k2≥0;所述第二处理单元还配置为:若根据所述串位移矢量残差水平方向分量符号值确定串位移矢量残差水平方向分量的值大于0,则按照t2阶指数哥伦布码的方式进行反二值化处理得到串位移矢量残差水平方向分量的绝对值,t2≥0且t2与k2不相等;所述第三处理单元还配置为:根据所述串位移矢量残差水平方向分量绝对值,以及所述串位移矢量残差水平方向分量符号值,确定所述串位移矢量残差水平方向分量的值。
在本申请的一些实施例中,基于前述方案,若所述位移矢量残差第一方向分量为串位移矢量残差垂直方向分量,则所述解码单元还配置为:在从所述码流中解码出串位移矢量残差水平方向分量符号值之前,若解码的起始行是第0行,且当前串的起点所在行是奇数行,则从所述码流中解码出串位移矢量残差水平方向分量符号值;
所述第三处理单元还配置为:若当前串的起点所在行是偶数行,则将所述串位移矢量残差水平方向分量符号值设为第一值,以指示所述串位移矢量残差水平方向分量的值小于0,并按照k2阶指数哥伦布码进行反二值化处理得到串位移矢量残差水平方向分量的绝对值;根据所述串位移矢量残差水平方向分量绝对值,以及所述串位移矢量残差水平方向分量符号值,确定所述串位移矢量残差水平方向分量的值。
在本申请的一些实施例中,基于前述方案,若所述位移矢量残差第一方向分量为串位移矢量残差垂直方向分量,则所述第三处理单元还配置为:若所述串位移矢量残差垂直方向分量的值大于0,则将串位移矢量残差水平方向分量符号值设为第一值,以指示串位移矢量残差水平方向分量的值小于0;按照k2阶指数哥伦布码的方式进行反二值化处理得到串位移矢量残差水平方向分量的绝对值;根据所述串位移矢量残差水平方向分量绝对值,以及所述串位移矢量残差水平方向分量符号值,确定所述串位移矢量残差水平方向分量的值。
在本申请的一些实施例中,基于前述方案,若所述位移矢量残差第一方向分量为串位移矢量残差垂直方向分量,则所述第三处理单元还配置为:若所述串位移矢量残差垂直方向分量的值小于0,则从所述码流中解码出串位移矢量残差水平方向分量的标志位;若所述串位移矢量残差水平方向分量的标志位为第一值,则从所述码流中解码出所述串位移矢量残差水平方向分量符号值;其中,所述串位移矢量残差水平方向分量的标志位为第一值表示所述串位移矢量残差水平方向分量的值不为0;
若根据所述串位移矢量残差水平方向分量符号值确定串位移矢量残差水平方向分量的值小于0,则按照k2阶指数哥伦布码的方式进行反二值化处理得到串位移矢量残差水平方向分量的绝对值,k2≥0;
若根据所述串位移矢量残差水平方向分量符号值确定串位移矢量残差水平方向分量的值大于0,则按照t2阶指数哥伦布码的方式进行反二值化处理得到串位移矢量残差水平方向分量的绝对值,t2≥0且t2与k2不相等;
根据所述串位移矢量残差水平方向分量绝对值,以及所述串位移矢量残差水平方向分量符号值,确定所述串位移矢量残差水平方向分量的值。
在本申请的一些实施例中,基于前述方案,所述第三处理单元还配置为:若所述串位移矢量残差水平方向分量的标志位为第二值,则确定所述串位移矢量残差水平方向分量的值为0。
根据本申请实施例的一个方面,提供了一种视频编码装置,包括:确定单元,配置为确定位移矢量残差第一方向分量符号值;第四处理单元,配置为若根据所述位移矢量残差第一方向分量符号值确定位移矢量残差第一方向分量的值小于0,则按照k1阶指数哥伦布码的方式进行去二值化处理得到位移矢量残差第一方向分量的绝对值,k1≥0;第五处理单元,配置为若根据所述位移矢量残差第一方向分量符号值确定位移矢量残差第一方向分量的值大于0,则按照t1阶指数哥伦布码的方式进行去二值化处理得到位移矢量残差第一方向分量的绝对值,t1≥0且t1与k1不相等;编码单元,配置为根据所述位移矢量残差第一方向分量绝对值,以及所述位移矢量残差第一方向分量符号值进行编码处理。
根据本申请实施例的一个方面,提供了一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述实施例中所述的方法。
根据本申请实施例的一个方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中所述的方法。
根据本申请实施例的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实施例中提供的方法。
在本申请的一些实施例所提供的技术方案中,通过在位移矢量残差第一方向分量的值小于0时,按照k1阶指数哥伦布码的方式进行反二值化处理得到位移矢量残差第一方向分量的绝对值,并在位移矢量残差第一方向分量的值大于0时,按照t1阶指数哥伦布码的方式进行反二值化处理得到位移矢量残差第一方向分量的绝对值,t1与k1不相等,使得能够根据位移矢量残差第一方向分量的值采用不同阶指数的哥伦布码来确定位移矢量残差第一方向分量的绝对值,进而能够基于该绝对值和位移矢量残差第一方向分量符号值确定位移矢量残差第一方向分量的值,简化了位移矢量残差的编解码流程、降低了编解码复杂度,有助于提高视频的编解码效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示出了可以应用本申请实施例的技术方案的示例性系统架构的示意图;
图2示出视频编码装置和视频解码装置在流式传输系统中的放置方式示意图;
图3示出了一个视频编码器的基本流程图;
图4示出了帧间预测的示意图;
图5示出了确定候选MV的示意图;
图6示出了帧内块复制的示意图;
图7示出了帧内串复制的示意图;
图8示出了根据本申请的一个实施例的视频解码方法的流程图;
图9示出了根据本申请的一个实施例的视频解码方法的流程图;
图10示出了根据本申请的一个实施例的视频解码方法的流程图;
图11示出了根据本申请的一个实施例的视频解码装置的框图;
图12示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
需要说明的是:在本文中提及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
图1示出了可以应用本申请实施例的技术方案的示例性系统架构的示意图。
如图1所示,系统架构100包括多个终端装置,所述终端装置可通过例如网络150彼此通信。举例来说,系统架构100可以包括通过网络150互连的第一终端装置110和第二终端装置120。在图1的实施例中,第一终端装置110和第二终端装置120执行单向数据传输。
举例来说,第一终端装置110可对视频数据(例如由终端装置110采集的视频图片流)进行编码以通过网络150传输到第二终端装置120,已编码的视频数据以一个或多个已编码视频码流形式传输,第二终端装置120可从网络150接收已编码视频数据,对已编码视频数据进行解码以恢复视频数据,并根据恢复的视频数据显示视频图片。
在本申请的一个实施例中,系统架构100可以包括执行已编码视频数据的双向传输的第三终端装置130和第四终端装置140,所述双向传输比如可以发生在视频会议期间。对于双向数据传输,第三终端装置130和第四终端装置140中的每个终端装置可对视频数据(例如由终端装置采集的视频图片流)进行编码,以通过网络150传输到第三终端装置130和第四终端装置140中的另一终端装置。第三终端装置130和第四终端装置140中的每个终端装置还可接收由第三终端装置130和第四终端装置140中的另一终端装置传输的已编码视频数据,且可对已编码视频数据进行解码以恢复视频数据,并可根据恢复的视频数据在可访问的显示装置上显示视频图片。
在图1的实施例中,第一终端装置110、第二终端装置120、第三终端装置130和第四终端装置140可为服务器、个人计算机和智能电话,但本申请公开的原理可不限于此。本申请公开的实施例适用于膝上型计算机、平板电脑、媒体播放器和/或专用视频会议设备。网络150表示在第一终端装置110、第二终端装置120、第三终端装置130和第四终端装置140之间传送已编码视频数据的任何数目的网络,包括例如有线和/或无线通信网络。通信网络150可在电路交换和/或分组交换信道中交换数据。该网络可包括电信网络、局域网、广域网和/或互联网。出于本申请的目的,除非在下文中有所解释,否则网络150的架构和拓扑对于本申请公开的操作来说可能是无关紧要的。
在本申请的一个实施例中,图2示出视频编码装置和视频解码装置在流式传输环境中的放置方式。本申请所公开主题可同等地适用于其它支持视频的应用,包括例如视频会议、数字TV(television,电视机)、在包括CD、DVD、存储棒等的数字介质上存储压缩视频等等。
流式传输系统可包括采集子系统213,采集子系统213可包括数码相机等视频源201,视频源创建未压缩的视频图片流202。在实施例中,视频图片流202包括由数码相机拍摄的样本。相较于已编码的视频数据204(或已编码的视频码流204),视频图片流202被描绘为粗线以强调高数据量的视频图片流,视频图片流202可由电子装置220处理,电子装置220包括耦接到视频源201的视频编码装置203。视频编码装置203可包括硬件、软件或软硬件组合以实现或实施如下文更详细地描述的所公开主题的各方面。相较于视频图片流202,已编码的视频数据204(或已编码的视频码流204)被描绘为细线以强调较低数据量的已编码的视频数据204(或已编码的视频码流204),其可存储在流式传输服务器205上以供将来使用。一个或多个流式传输客户端子系统,例如图2中的客户端子系统206和客户端子系统208,可访问流式传输服务器205以检索已编码的视频数据204的副本207和副本209。客户端子系统206可包括例如电子装置230中的视频解码装置210。视频解码装置210对已编码的视频数据的传入副本207进行解码,且产生可在显示器212(例如显示屏)或另一呈现装置上呈现的输出视频图片流211。在一些流式传输系统中,可根据某些视频编码/压缩标准对已编码的视频数据204、视频数据207和视频数据209(例如视频码流)进行编码。
应注意,电子装置220和电子装置230可包括图中未示出的其它组件。举例来说,电子装置220可包括视频解码装置,且电子装置230还可包括视频编码装置。
在本申请的一个实施例中,以国际视频编码标准HEVC(High Efficiency VideoCoding,高效率视频编码)、VVC(Versatile Video Coding,多功能视频编码),以及中国国家视频编码标准AVS为例,当输入一个视频帧图像之后,会根据一个块大小,将视频帧图像划分成若干个不重叠的处理单元,每个处理单元将进行类似的压缩操作。这个处理单元被称作CTU(Coding Tree Unit,编码树单元),或者称之为LCU(Largest Coding Unit,最大编码单元)。CTU再往下可以继续进行更加精细的划分,得到一个或多个基本的编码单元CU(Coding Unit,编码单元),CU是一个编码环节中最基本的元素。
以下介绍对CU进行编码时的一些概念:
预测编码(Predictive Coding):预测编码包括了帧内预测和帧间预测等方式,原始视频信号经过选定的已重建视频信号的预测后,得到残差视频信号。编码端需要为当前CU决定选择哪一种预测编码模式,并告知解码端。其中,帧内预测是指预测的信号来自于同一图像内已经编码重建过的区域;帧间预测是指预测的信号来自已经编码过的、不同于当前图像的其它图像(称之为参考图像)。
变换及量化(Transform&Quantization):残差视频信号经过DFT(DiscreteFourier Transform,离散傅里叶变换)、DCT(Discrete Cosine Transform,离散余弦变换)等变换操作后,将信号转换到变换域中,称之为变换系数。变换系数进一步进行有损的量化操作,丢失掉一定的信息,使得量化后的信号有利于压缩表达。在一些视频编码标准中,可能有多于一种变换方式可以选择,因此编码端也需要为当前CU选择其中的一种变换方式,并告知解码端。量化的精细程度通常由量化参数(Quantization Parameter,简称QP)来决定,QP取值较大,表示更大取值范围的系数将被量化为同一个输出,因此通常会带来更大的失真及较低的码率;相反,QP取值较小,表示较小取值范围的系数将被量化为同一个输出,因此通常会带来较小的失真,同时对应较高的码率。
熵编码(Entropy Coding)或统计编码:量化后的变换域信号将根据各个值出现的频率进行统计压缩编码,最后输出二值化(0或者1)的压缩码流。同时,编码产生其他信息,例如选择的编码模式、运动矢量数据等,也需要进行熵编码以降低码率。统计编码是一种无损的编码方式,可以有效的降低表达同样信号所需要的码率,常见的统计编码方式有变长编码(Variable Length Coding,简称VLC)或者基于上下文的二值化算术编码(ContentAdaptive Binary Arithmetic Coding,简称CABAC)。
基于上下文的二值化算术编码(CABAC)过程主要包含3个步骤:二值化、上下文建模和二进制算术编码。在对输入的语法元素进行二值化处理后,可以通过常规编码模式和旁路编码模式(Bypass Coding Mode)对二元数据进行编码。旁路编码模式无须为每个二元位分配特定的概率模型,输入的二元位bin值直接用一个简单的旁路编码器进行编码,以加快整个编码以及解码的速度。一般情况下,不同的语法元素之间并不是完全独立的,且相同语法元素自身也具有一定的记忆性。因此,根据条件熵理论,利用其他已编码的语法元素进行条件编码,相对于独立编码或者无记忆编码能够进一步提高编码性能。这些用来作为条件的已编码符号信息称为上下文。在常规编码模式中,语法元素的二元位顺序地进入上下文模型器,编码器根据先前编码过的语法元素或二元位的值,为每一个输入的二元位分配合适的概率模型,该过程即为上下文建模。通过ctxIdxInc(context index increment,上下文索引增量)和ctxIdxStart(context index Start,上下文起始索引)即可定位到语法元素所对应的上下文模型。将bin值和分配的概率模型一起送入二元算术编码器进行编码后,需要根据bin值更新上下文模型,也就是编码中的自适应过程。
环路滤波(Loop Filtering):经过变化及量化的信号会通过反量化、反变换及预测补偿的操作获得重建图像。重建图像与原始图像相比由于存在量化的影响,部分信息与原始图像有所不同,即重建图像会产生失真(Distortion)。因此,可以对重建图像进行滤波操作,例如去块效应滤波(Deblocking filter,简称DB)、SAO(Sample Adaptive Offset,自适应像素补偿)或者ALF(Adaptive Loop Filter,自适应环路滤波)等滤波器,可以有效降低量化所产生的失真程度。由于这些经过滤波后的重建图像将作为后续编码图像的参考来对将来的图像信号进行预测,因此上述的滤波操作也被称为环路滤波,即在编码环路内的滤波操作。
在本申请的一个实施例中,图3示出了一个视频编码器的基本流程图,在该流程中以帧内预测为例进行说明。其中,原始图像信号sk[x,y]与预测图像信号
Figure BDA0002975441180000121
做差值运算,得到残差信号uk[x,y],残差信号uk[x,y]经过变换及量化处理之后得到量化系数,量化系数一方面通过熵编码得到编码后的比特流,另一方面通过反量化及反变换处理得到重构残差信号u'k[x,y],预测图像信号
Figure BDA0002975441180000122
与重构残差信号u'k[x,y]叠加生成图像信号
Figure BDA0002975441180000123
图像信号
Figure BDA0002975441180000124
一方面输入至帧内模式决策模块和帧内预测模块进行帧内预测处理,另一方面通过环路滤波输出重建图像信号s'k[x,y],重建图像信号s'k[x,y]可以作为下一帧的参考图像进行运动估计及运动补偿预测。然后基于运动补偿预测的结果s'r[x+mx,y+my]和帧内预测结果
Figure BDA0002975441180000125
得到下一帧的预测图像信号
Figure BDA0002975441180000126
并继续重复上述过程,直至编码完成。
基于上述的编码过程,在解码端针对每一个CU,在获取到压缩码流(即比特流)之后,进行熵解码获得各种模式信息及量化系数。然后量化系数经过反量化及反变换处理得到残差信号。另一方面,根据已知的编码模式信息,可获得该CU对应的预测信号,然后将残差信号与预测信号相加之后即可得到重建信号,重建信号再经过环路滤波等操作,产生最终的输出信号。
目前主流的视频编码标准(如HEVC、VVC、AVS3),均采用基于块的混合编码框架。具体是将原始的视频数据分成一系列的编码块,结合预测、变换和熵编码等视频编码方法,实现视频数据的压缩。其中,运动补偿是视频编码常用的一类预测方法,运动补偿基于视频内容在时域或空域的冗余特性,从已编码的区域导出当前编码块的预测值。这类预测方法包括:帧间预测、帧内块复制预测、帧内串复制预测等,在具体的编码实现中,可能单独或组合使用这些预测方法。对于使用了这些预测方法的编码块,通常需要在码流中显式或隐式的编码一个或多个二维的位移矢量,指示当前块(或当前块的同位块)相对它的一个或多个参考块的位移。
需要注意的是,在不同的预测模式及不同的实现下,位移矢量可能有不同的名称,本申请的实施例中统一按照以下方式进行描述:1)帧间预测中的位移矢量称为运动位移矢量(Motion Vector,简称MV);2)帧内块复制中的位移矢量称为块位移矢量(Block Vector,简称BV);3)帧内串复制中的位移矢量称为串位移矢量。
如图4所示,帧间预测利用视频时间域的相关性,使用邻近已编码图像的像素预测当前图像的像素,以达到有效去除视频时域冗余的目的,能够有效节省编码残差数据的比特。其中,P表示当前帧,Pr表示参考帧,B表示当前编码块,Br表示B的参考块。B'在参考帧中的坐标与B在当前帧中的坐标位置相同,Br的坐标为(xr,yr),B'的坐标为(x,y),当前编码块与其参考块之间的位移称为运动向量(即MV),其中,MV=(xr-x,yr-y)。
考虑到时域或空域邻近块具有较强的相关性,可以采用MV预测技术进一步减少编码MV所需要的比特。在H.265/HEVC中,帧间预测包含Merge和AMVP(Advanced MotionVector Prediction,高级运动矢量预测)两种MV预测技术。Merge模式会为当前PU(prediction unit,预测单元)建立一个MV候选列表,其中存在5个候选MV(及其对应的参考图像)。遍历这5个候选MV,选取率失真代价最小的作为最优MV。若编解码器依照相同的方式建立候选列表,则编码器只需要传输最优MV在候选列表中的索引即可。需要注意的是,HEVC的MV预测技术还有一种skip模式,是Merge模式的一种特例,通过Merge模式找到最优MV后,如果当前块和参考块基本一样,那么不需要传输残差数据,只需要传送MV的索引和一个skip flag即可。
Merge模式建立的MV候选列表中包含了空域和时域两种情形,对于B Slice,还包含组合列表的方式。其中,空域最多提供4个候选MV,它的建立如图5中(a)所示,空域列表按照A1->B1->B0->A0->B2的顺序建立,其中B2为替补,即当A1,B1,B0,A0中有一个或多个不存在时,则需要使用B2的运动信息;时域最多只提供1个候选MV,它的建立如图5中(b)所示,由同位块的MV按下式伸缩得到:
curMV=td/tb×colMV
其中,curMV和colMV分别表示当前块和同位块的MV,td和tb分别表示当前图像和同位图像与二者的参考图像之间的距离。若同位块上D0位置的PU不可用,则用D1位置的同位PU进行替换;对于B Slice中的PU,由于存在两个MV,其MV候选列表也需要提供两个MVP。HEVC通过将MV候选列表中的前4个候选MV进行两两组合,产生了用于B Slice的组合列表。
类似的,AMVP模式利用空域和时域邻近块的MV相关性,为当前PU建立候选预测MV列表。与Merge模式不同,AMVP模式候选预测MV列表中选择最优的预测MV,与当前编码块通过运动搜索得到的最优MV进行差分编码,即编码MVD=MV-MVP;解码端通过建立相同的列表,仅需要MVD与MVP(Motion Vector Predictor,预测运动矢量)在该列表中的序号即可计算当前编码块的MV。AMVP候选MV列表也包含空域和时域两种情形,不同的是AMVP列表长度仅为2。
HMVP(History based Motion Vector Prediction,基于历史的运动矢量预测)是H.266/VVC中新采纳的一种MV预测技术。HMVP是基于历史信息的运动矢量预测方法,历史编码块的运动信息被存储在HMVP列表中,并且用作当前CU的MVP。H.266/VVC将HMVP添加至Merge模式的候选列表中,其顺序在空域和时域MVP之后。HMVP技术以先进先出(FirstInput First Output,简称FIFO)队列存储先前编码块的运动信息,如果已存储的预测候选信息与刚刚编码完成的运动信息相同,这个重复的候选信息首先会被移除,然后将所有HMVP候选信息向前移动,并在FIFO队列的尾部会加入当前编码单元的运动信息。如果当前编码单元的运动信息与FIFO队列中任意候选的运动信息均不相同,则将最新的运动信息加到FIFO队列末尾。在向HMVP列表添加新的运动信息时,如果列表已达到最大长度,就去掉FIFO队列中的第一个候选信息,再将最新的运动信息加到FIFO队列末尾。在遇到新的CTU行时HMVP列表将重置(即清空)。在H.266/VVC中,HMVP列表大小设置为6,为了减少冗余检查操作的数量,引入了以下简化策略:
1、将用于Merge列表生成的HMVP候选的数量设置为(N<=4)?M:(8-N),其中,N表示Merge列表中现有候选的数量,M表示Merge表中可用的HMVP候选的数量。
2、一旦可用Merge列表的长度达到最大允许的长度减1,则HMVP的合并候选者列表构建过程终止。
帧内块复制(Intra Block Copy,简称IBC)是HEVC屏幕内容编码(Screen ContentCoding,简称SCC)扩展中采纳的一种编码工具,它显著提升了屏幕内容的编码效率。在AVS3和VVC中,也采纳了IBC技术以提升屏幕内容编码的性能,IBC利用屏幕内容视频在空间的相关性,使用当前图像上已编码图像的像素预测当前待编码块的像素,能够有效节省编码像素所需的比特。如图6所示,在IBC中当前块与其参考块之间的位移称为块位移矢量(BlockVector,简称BV)。H.266/VVC采用了类似于帧间预测BV技术进一步节省编码BV所需的比特。
帧内串复制技术按照某种扫描顺序(光栅扫描、往返扫描和Zig-Zag扫描等)将一个编码块分成一系列像素串或未匹配像素。类似于IBC,每个串在当前图像已编码区域中寻找相同形状的参考串,导出当前串的预测值,通过编码当前串像素值与预测值之间的残差来代替直接编码像素值,能够有效节省比特。图7给出了帧内串复制的示意图,深灰色的区域为已编码区域,白色的28个像素为串1,浅灰色的35个像素为串2,黑色的1个像素表示未匹配像素,串1到已编码区域中匹配到的已编码串的位移称之为串矢量1,串2到已编码区域中匹配到的已编码串的位移称之为串矢量2。
帧内串复制技术需要编码当前编码块中各个串对应的串矢量(String Vector,简称SV)、串长度以及是否有匹配串的标志等。其中,串矢量表示待编码串到其参考串的位移,串长度表示该串所包含的像素数量。在不同的实现方式中,串长度的编码多种方式,以下给出几种示例(部分示例可能组合使用):1)直接在码流中编码串的长度;2)在码流中编码处理该串后待处理像素数量,解码端则根据当前块的大小N、已处理的像素数量N1、解码得到待处理像素数量N2,计算得到当前串的长度L=N-N1-N2;3)在码流中编码一个标志指示该串是否为最后一个串,如果是最后一个串,则根据当前块的大小N和已处理的像素数量N1,计算得到当前串的长度L=N-N1。如果一个像素在可参考的区域中没有找到对应的参考,将直接对未匹配像素的像素值进行编码。
帧内块复制IBC和帧内串复制ISC是AVS3中两种屏幕内容编码工具,其均以当前图像为参考,通过运动补偿导出编码单元的预测值。考虑到IBC与ISC具有相似的参考区域,块位移矢量(BV)和串位移矢量(SV)具有较高的相关性,因此通过允许两者之间的预测进一步提高编码效率。AVS3使用一个类似于HMVP的帧内预测历史运动信息表(即IntraHMVP)来记录这两类编码块的位移矢量信息、位置信息、尺寸信息和重复次数,并由IntraHMVP导出预测块位移矢量(Block Vector Predictor,简称BVP)和预测串位移矢量。
AVS3中使用了一种称为基于类别的块位移矢量预测(Class based Block VectorPrediction,简称CBVP)的方法导出BVP,该方法按以下条件对IntraHMVP中的候选BV进行分类:
类别0:历史编码块的面积大于或等于64像素;
类别1:BV的频率大于或等于2;
类别2:历史编码块左上角的坐标位于当前块左上角坐标的左方;
类别3:历史编码块左上角的坐标位于当前块左上角坐标的上方;
类别4:历史编码块左上角的坐标位于当前块左上角坐标的左上方;
类别5:历史编码块左上角的坐标位于当前块左上角坐标的右上方;
类别6:历史编码块左上角的坐标位于当前块左上角坐标的左下方。
其中,每个类别中的实例按编码顺序的逆序排列(即编码顺序距离当前块越近,排序越靠前),第一个历史编码块对应的BV为该类对应的候选BV,然后按类别0到类别6的顺序添加每个类别对应的候选BV至CBVP列表。在向CBVP列表中添加新的BV时,需要检查CBVP列表中是否已存在重复的BV,仅当不存在重复的BV时,才将该BV添加至CBVP列表中。编码端在CBVP列表中选择最佳的候选BV作为BVP,并在码流中编码一个索引,表示最佳的候选BV所对应类别在CBVP列表中的索引,解码端根据该索引从CBVP列表中解码得到BVP。
在完成当前预测单元的解码后,如果当前预测单元的预测类型为块复制帧内预测,当NumOfIntraHmvpCand(历史运动信息列表里面的运动信息的个数)大于0时,根据当前预测块的块复制帧内预测的运动信息,按下述实施例中的方法更新IntraHMVP。当前预测块的帧内预测运动信息包括位移矢量信息、位置信息、尺寸信息和重复次数,其中块复制帧内预测块的位移矢量信息为块位移矢量;位置信息包括当前预测块左上角横坐标,左上角纵坐标;尺寸信息为宽度与高度的乘积;当前预测块的重复次数初始化为0。
同时,AVS3为ISC编码块中的每个串编码一个索引,指示该串的SVP在IntraHMVP中的位置。类似于帧间预测中的skip模式,当前串的SV等于SVP,无需编码SV与SVP之间的残差SVD。
在完成当前预测单元的解码后,如果当前预测单元的预测类型为串复制帧内预测,当NumOfIntraHmvpCand大于0时,根据当前预测块的帧内预测运动信息,按下述实施例中的方法更新IntraHMVP。帧内预测运动信息包括位移矢量信息、位置信息、尺寸信息和重复次数,其中当前串的位移矢量信息为串矢量;位置信息包括该串第一个像素样本的横坐标,纵坐标;尺寸信息为该部分的串长度;重复次数初始化为0。
以下介绍帧内预测历史运动信息表IntraHMVP的更新过程:帧内预测运动信息包括位移矢量信息、位置信息、尺寸信息和重复次数。在完成当前预测单元的解码后,如果当前预测单元的预测类型为块复制帧内预测或串复制帧内预测,且NumOfIntraHmvpCand大于0,则根据当前预测块的帧内预测运动信息,更新帧内预测历史运动信息表IntraHmvpCandidateList。假设IntraHmvpCandidateList[X]的位移矢量信息、位置信息、尺寸信息和重复次数分别记为intraMvCandX、posCandX、sizeCandX和cntCandX,则执行如下过程:
步骤101,将X初始化为0,将cntCur初始化为0。
步骤102,如果CntIntraHmvp=0,则IntraHmvpCandidateList[CntIntraHmvp]为当前预测单元的帧内预测运动信息,将CntIntraHmvp加1。
步骤103,如果CntIntraHmvp≠0,则根据intraMvCur和intraMvCandX是否相等判断当前预测块的帧内预测运动信息和IntraHmvpCandidateList[X]是否相同:
步骤1031,如果intraMvCur和intraMvCandX相同,则执行步骤104,否则,X加1。
步骤1032,如果X小于CntIntraHmvp,则执行步骤103;否则,执行步骤105。
步骤104,cntCur等于cntCandX的值加1。如果sizeCur小于sizeCandX,则当前sizeCur分别等于sizeCandX。
步骤105,如果X小于CntIntraHmvp,则:
步骤1051,i从X到CntIntraHmvp-1,令IntraHmvpCandidateList[i]等于IntraHmvpCandidateList[i+1];
步骤1052,IntraHmvpCandidateList[CntIntraHmvp-1]等于当前预测单元的帧内预测运动信息。
步骤106,如果X等于CntIntraHmvp且CntIntraHmvp等于NumOfIntraHmvpCand,则:
步骤1061,i从0到CntIntraHmvp-1,令IntraHmvpCandidateList[i]等于IntraHmvpCandidateList[i+1];
步骤1062,IntraHmvpCandidateList[CntIntraHmvp-1]等于当前预测单元的帧内预测运动信息。
步骤107,如果X等于CntIntraHmvp且CntIntraHmvp小于NumOfIntraHmvpCand,则IntraHmvpCandidateList[CntIntraHmvp]等于当前预测单元的帧内预测运动信息,CntIntraHmvp加1。
以下介绍AVS3中的串位移矢量SV的解码流程,在目前的AVS3中,以串扫描方向为水平方向为例,参照表1所示,AVS3中SV(IscSvX,IscSvY)解码的主要流程如下(表1中带下划线加粗的字段表示需要解码的语法元素,无下划线首字母大写的字段表示变量,变量的值可由语法元素解码得到):
步骤201,解码串矢量上方标志isc_sv_above_flag,如果isc_sv_above_flag的值为1,则IscSvX的值为0,IscSvY的值为-1。
步骤202,如果isc_sv_above_flag的值为0,则解码串矢量历史标志isc_sv_recent_flag。如果isc_sv_recent_flag的值为1,继续解码串矢量历史索引isc_sv_recent_index,根据isc_sv_recent_index的值,结合帧内预测历史运动信息表,查表获得IscSvX和IscSvY的值。
步骤203,如果isc_sv_recent_flag的值为0,则根据以下步骤解码得到SV:
步骤2031,解码串矢量Y分量标志isc_sv_y_non_zero_flag;
步骤2032,如果isc_sv_y_non_zero_flag的值为0,即IscSvY的值为0,按照以下步骤解码得到IscSvx:
(1)如果IsOddRow的值为1,即当前串所在行是奇数行(起始行为第0行),则解码串矢量X分量符号位isc_sv_x_sign并得到isc_sv_x_sign的值;如果isc_sv_x_sign的值为1,即IscSvx的值小于0;如果isc_sv_x_sign的值为0,即IscSvx的值大于0;
(2)如果IsOddRow的值为0,则令isc_sv_x_sign的值为1,即IscSvx的值小于0;
(3)解码并按照3阶指数哥伦布码的方法反二值化推导得到串矢量X分量绝对值isc_sv_x_abs_minus1,那么IscSvXAbs的值等于isc_sv_x_abs_minus1+1,然后再结合isc_sv_x_sign的值即可求得IscSvX的值。
步骤2033,如果isc_sv_y_non_zero_flag的值为1,即IscSvY的值不为0,则按照以下步骤依次解码得到IscSvy和IscSvx:
(1)解码串矢量Y分量符号位isc_sv_y_sign并得到isc_sv_y_sign的值;如果isc_sv_y_sign的值为1,即IscSvy的值小于0;如果isc_sv_y_sign的值为0,即IscSvy的值大于0;
(2)解码并按照3阶指数哥伦布码的方法反二值化推导得到串矢量Y分量绝对值isc_sv_y_abs_minus1,那么IscSvYAbs的值等于isc_sv_y_abs_minus1+1,再结合isc_sv_y_sign的值即可求得IscSvY的值;
(3)如果isc_sv_y_sign的值为0,即IscSvy的值大于0,则解码并按照3阶指数哥伦布的方法反二值化推导得到串矢量X分量绝对值isc_sv_x_abs_minus1,那么IscSvXAbs的值等于isc_sv_x_abs_minus1+1+SvOffset,直接令isc_sv_x_sign的值为1,即IscSvX的值小于0。再结合isc_sv_x_sign的值即可求得IscSvX的值。SvOffset的值通过AVS标准中定义的算法进行求得,此处不再赘述。
(4)如果isc_sv_y_sign的值为1,即IscSvy的值小于0,则解码串矢量X分量标志isc_sv_x_non_zero_flag。如果isc_sv_x_non_zero_flag的值为0,即IscSvX的值为0;
(5)如果isc_sv_x_non_zero_flag的值为1,则IscSvX的值不为0。然后解码串矢量X分量符号位isc_sv_x_sign并得到isc_sv_x_sign的值;如果isc_sv_x_sign的值为1,即IscSvx的值小于0;如果isc_sv_x_sign的值为0,即IscSvx的值大于0;
(6)解码并按照3阶指数哥伦布码的方法反二值化推导得到串矢量X分量绝对值isc_sv_x_abs_minus1,那么IscSvXAbs的值等于isc_sv_x_abs_minus1+1,再结合isc_sv_x_sign的值即可求得IscSvX的值。
Figure BDA0002975441180000211
表1
在表1中,串矢量上方标志isc_sv_above_flag[i]的值为“1”表示当前编码单元第i部分的串矢量是(0,-1);值为“0”表示串矢量不是(0,-1)。并且IscSvAboveFlag[i]等于isc_sv_above_flag[i]的值。
串矢量历史标志isc_sv_recent_flag[i]的值为“1”表示应从帧内复制历史信息表中导出当前编码单元第i部分的串矢量;值为“0”表示不应从帧内复制历史信息表中导出串矢量。并且IscSvRecentFlag[i]等于isc_sv_recent_flag[i]的值。如果位流中不存在isc_sv_recent_flag[i],那么IscSvRecentFlag[i]的值为0。
如果IscSvAboveFlag[i]和IscSvRecentFlag[i]的值均为0,那么当前编码单元第i部分的串矢量X分量的值由IscSvXNonZeroFlag[i]、IscSvXSign[i]和IscSvXAbs[i]确定,Y分量的值由IscSvYNonZeroFlag[i]、IscSvYSign[i]和IscSvYAbs[i]确定。
串矢量历史索引isc_sv_recent_index[i]表示当前编码单元第i部分的串矢量在帧内复制历史信息表中的索引值。IscSvRecentIndex[i]的值等于isc_sv_recent_index[i]的值。
串矢量X分量标志isc_sv_x_non_zero_flag[i]的值为“1”表示当前编码单元第i部分的串矢量的X分量的值不等于0;值为“0”表示X分量的值等于0。并且,IscSvXNonZeroFlag[i]等于isc_sv_x_non_zero_flag[i]的值。如果位流中不存在isc_sv_x_non_zero_flag[i],则IscSvXNonZeroFlag[i]的值为1。
串矢量Y分量标志isc_sv_y_non_zero_flag[i]的值为“1”表示当前编码单元第i部分的串矢量的Y分量的值不等于0;值为“0”表示Y分量的值等于0。并且,IscSvYNonZeroFlag[i]等于isc_sv_y_non_zero_flag[i]的值。如果位流中不存在isc_sv_y_non_zero_flag[i],则IscSvYNonZeroFlag[i]的值为1。
串矢量X分量符号位isc_sv_x_sign[i]表示当前编码单元第i部分的串矢量的X分量的符号位。并且IscSvXSign[i]等于isc_sv_x_sign[i]的值。如果位流中不存在isc_sv_x_sign[i],则IscSvXSign[i]的值为1。
串矢量Y分量符号位isc_sv_y_sign[i]表示当前编码单元第i部分的串矢量的Y分量的符号位。并且IscSvYSign[i]等于isc_sv_y_sign[i]的值。如果位流中不存在isc_sv_y_sign[i],则IscSvYSign[i]的值为1。
串矢量X分量绝对值isc_sv_x_abs_minus1[i]表示当前编码单元第i部分的串矢量的X分量的绝对值减1。并且IscSvXAbs[i]等于isc_sv_x_abs_minus1[i]的值加1。
串矢量Y分量绝对值isc_sv_y_abs_minus1[i]表示当前编码单元第i部分的串矢量的Y分量的绝对值减1。并且IscSvYAbs[i]等于isc_sv_y_abs_minus1[i]的值加1。
同时,在上述方法中,isc_sv_x_abs_minus1和isc_sv_y_abs_minus1的反二值化处理具体可以是在解析二元符号串之后通过查询如下表2中对应的synElVal值得到,在表2中,二元符号串是synElVal的值对应的3阶指数哥伦布码。
Figure BDA0002975441180000231
Figure BDA0002975441180000241
表2
以下介绍AVS3中块位移矢量残差BVD的解码流程,参照表3所示,AVS3中块位移矢量残差BVD解码的主要流程如下(表3中带下划线加粗的字段表示需要解码的语法元素,无下划线首字母大写的字段表示变量,变量的值可由语法元素解码得到):
步骤301,从码流中解码后推导出运动矢量残差水平方向的绝对值mv_diff_x_abs_bv,具体包括:
(1)从码流中按照截断一元码的方式(如表4-1或表4-2所示的两种截断一元码的形式,截断值maxVal=7)解码和反二值化得到前缀值mv_diff_x_abs_bv_pre,如果mv_diff_x_abs_bv_pre小于等于4,令offset等于mv_diff_x_abs_bv_pre,则mv_diff_x_abs_bv等于offset;
(2)如果mv_diff_x_abs_bv_pre等于5,则mv_diff_x_abs_bv的值属于区间[5,9)。令offset等于5,从码流中熵解码2位比特,按照2位定长码的方式反二值化(见表5)并推导得到后缀值mv_diff_x_abs_bv_suf,则mv_diff_x_abs_bv等于offset+mv_diff_x_abs_bv_suf;
(3)如果mv_diff_x_abs_bv_pre等于6,则mv_diff_x_abs_bv的值属于区间[9,17)。令offset等于9,从码流中熵解码3位比特,按照3位定长码的方式反二值化(见表5)并推导得到后缀值mv_diff_x_abs_bv_suf,则mv_diff_x_abs_bv等于offset+mv_diff_x_abs_bv_suf;
(4)如果mv_diff_x_abs_bv_pre等于7,则mv_diff_x_abs_bv的值属于区间[17,∞)。令offset等于17,继续从码流中解码1位比特得到指示mv_diff_x_abs_bv奇偶性的标识mv_diff_x_abs_bv_parity;
(5)在得到mv_diff_x_abs_bv_parity的值后,继续从码流中进行熵解码,按照2阶指数哥伦布码的方式反二值化(见表6所示的k阶指数哥伦布码表)得到mv_diff_x_abs_bv_k_eg,则mv_diff_x_abs_bv=offset+mv_diff_x_abs_bv_parity+2×mv_diff_x_abs_bv_k_eg;
步骤302,如果mv_diff_x_abs_bv的值不为0,则从码流中解码1位比特后推导出运动矢量残差水平方向值的符号mv_diff_x_sign_bv;
步骤303,从码流中解码后推导出运动矢量残差垂直方向的绝对值mv_diff_y_abs_bv。具体方法类似于步骤301中的(1)~(5)。
步骤304,如果mv_diff_y_abs_bv的值不为0,则从码流中解码1位比特后推导出运动矢量残差垂直方向值的符号mv_diff_y_sign_bv。
Figure BDA0002975441180000251
表3
在表3中,mv_diff_x_abs_bv表示块矢量水平分量差绝对值,mv_diff_y_abs_bv表示块矢量垂直分量差绝对值。其中,MvDiffXAbsBv等于mv_diff_x_abs_bv的值,MvDiffYAbsBv等于mv_diff_y_abs_bv的值。
mv_diff_x_sign_bv表示块矢量水平分量差符号值,mv_diff_y_sign_bv表示块矢量垂直分量差符号值。并且,MvDiffXSignbV的值等于mv_diff_x_sign_bv的值,MvDiffYSignBv的值等于mv_diff_y_sign_bv。如果位流中不存在mv_diff_x_sign_bv或mv_diff_y_sign_bv,那么MvDiffXSignBv或MvDiffYSignBv的值为0。
块矢量水平分量差值MvDiffXBv和块矢量垂直分量差值MvDiffYBv的值表示如下,取值范围是-32768~32767:
MvDiffXBv=(-1)MvDiffXSignBv×MvDiffXAbsBv
MvDiffYBv=(-1)MvDiffYSignBv×MvDiffYAbsBv
Figure BDA0002975441180000261
表4-1
Figure BDA0002975441180000262
表4-2
Figure BDA0002975441180000271
表5
Figure BDA0002975441180000272
表6
以下介绍AVS3中运动矢量残差MVD的解码流程,参照表7所示,AVS3中运动矢量残差MVD解码的主要流程如下(表7中带下划线加粗的字段表示需要解码的语法元素,无下划线首字母大写的字段表示变量,变量的值可由语法元素解码得到):
步骤401,从码流中解码后推导出运动矢量残差水平方向的绝对值mv_diff_x_abs,具体包括:
(1)从码流中按照截断一元码的方式(如表4-1或表4-2所示的两种截断一元码的形式,截断值maxVal=3)解码和反二值化得到前缀值mv_diff_x_abs_pre,如果mv_diff_x_abs_pre小于等于2,令offset等于mv_diff_x_abs_pre,则mv_diff_x_abs等于offset;
(2)如果mv_diff_x_abs_pre等于3,则mv_diff_x_abs的值属于区间[3,∞)。令offset等于3,继续从码流中解码1位比特得到指示mv_diff_x_abs奇偶性的标识mv_diff_x_abs_parity;
(3)在得到mv_diff_x_abs_parity的值后,继续从码流中进行熵解码,按照0阶指数哥伦布码的方式反二值化(见表6)得到mv_diff_x_abs_k_eg,则mv_diff_x_abs=offset+mv_diff_x_abs_parity+2×mv_diff_x_abs_k_eg;
步骤402,如果mv_diff_x_abs的值不为0,从码流中解码1位比特后推导出运动矢量残差水平方向值的符号mv_diff_x_sign;
步骤403,从码流中解码后推导出运动矢量残差垂直方向的绝对值mv_diff_y_ab。具体方法类似于步骤401中的(1)~(5)。
步骤404,如果mv_diff_y_abs的值不为0,则从码流中解码1位比特后推导出运动矢量残差垂直方向值的符号mv_diff_y_sign。
Figure BDA0002975441180000281
表7
在表7中,mv_diff_x_abs_l0表示L0运动矢量水平分量差绝对值,mv_diff_y_abs_l0表示L0运动矢量垂直分量差绝对值。来自参考图像队列0的运动矢量水平分量差值的绝对值MvDiffXAbsL0的值等于mv_diff_x_abs_l0的值,来自参考图像队列0的运动矢量垂直分量差值的绝对值MvDiffYAbsL0的值等于mv_diff_y_abs_l0的值。
mv_diff_x_sign_l0表示L0运动矢量水平分量差符号值,mv_diff_y_sign_l0表示L0运动矢量垂直分量差符号值。来自参考图像队列0的运动矢量水平分量差值的符号位MvDiffXSignL0的值等于mv_diff_x_sign_l0的值,来自参考图像队列0的运动矢量垂直分量差值的符号位MvDiffYSignL0的值等于mv_diff_y_sign_l0的值。如果位流中不存在mv_diff_x_sign_l0或mv_diff_y_sign_l0,则MvDiffXSignL0或MvDiffYSignL0的值为0。
运动矢量水平分量差值MvDiffXL0和运动矢量垂直分量差值MvDiffYL0的值表示如下,取值范围是-32768~32767:
MvDiffXL0=(-1)MvDiffXSignL0×MvDiffXAbsL0
MvDiffYL0=(-1)MvDiffYSignL0×MvDiffYAbsL0
由上述可知,在现有的视频编码标准(如VVC、AVS3)中,帧内串复制ISC模式的串位移矢量SV使用的运动矢量编码方法流程较为繁琐,编解码复杂度较高,且与帧间模式的运动矢量MV和帧内块复制IBC模式的块位移矢量BV的运动矢量编码方法完全不同。本申请实施例根据SV的统计特征,提出了一种符合SV分布特性的运动矢量编码方法,在简化SV编解码流程、降低SV编解码复杂度的同时,能保证视频的压缩性能,总体有助于SV编解码效率的提升。
以下对本申请实施例的技术方案的实现细节进行详细阐述:
图8示出了根据本申请的一个实施例的视频解码方法的流程图,该视频解码方法可以由具有计算处理功能的设备来执行,比如可以由终端设备或服务器来执行。参照图8所示,该视频解码方法至少包括步骤S810至步骤S840,详细介绍如下:
在步骤S810中,从码流中解码出位移矢量残差第一方向分量符号值。
在本申请的一个实施例中,位移矢量残差可以是串位移矢量残差SVD,也可以是运动位移矢量残差MVD,还可以是块位移矢量残差BVD。第一方向分量可以是垂直方向分量,或者可以是水平方向分量。
位移矢量残差第一方向分量符号值用于指示位移矢量残差第一方向分量的值是大于0还是小于0。具体而言,如果位移矢量残差第一方向分量符号值为第一值(比如为1时),则确定位移矢量残差第一方向分量的值小于0,如果位移矢量残差第一方向分量符号值为第二值(比如为0时),则确定位移矢量残差第一方向分量的值大于0。
在本申请的一个实施例中,可以先从码流中解码出位移矢量残差第一方向分量的标志位,该位移矢量残差第一方向分量的标志位用于指示位移矢量残差第一方向分量的值是否为0。如果位移矢量残差第一方向分量的标志位为第一值(比如为1时),则从码流中解码出位移矢量残差第一方向分量符号值;其中,位移矢量残差第一方向分量的标志位为第一值表示位移矢量残差第一方向分量的值不为0。如果位移矢量残差第一方向分量的标志位为第二值(比如为0时),则可以直接确定位移矢量残差第一方向分量的值为0。
在步骤S820中,若根据位移矢量残差第一方向分量符号值确定位移矢量残差第一方向分量的值小于0,则按照k1阶指数哥伦布码的方式进行反二值化处理得到位移矢量残差第一方向分量的绝对值,k1≥0。
在步骤S830中,若根据位移矢量残差第一方向分量符号值确定位移矢量残差第一方向分量的值大于0,则按照t1阶指数哥伦布码的方式进行反二值化处理得到位移矢量残差第一方向分量的绝对值,t1≥0且t1与k1不相等。
在步骤S840中,根据位移矢量残差第一方向分量绝对值,以及位移矢量残差第一方向分量符号值,确定位移矢量残差第一方向分量的值。
在本申请的一个实施例中,在得知位移矢量残差第一方向分量符号值之后,可以基于该符号值并根据位移矢量残差第一方向分量绝对值来得到位移矢量残差第一方向分量的值。比如,若位移矢量残差第一方向分量绝对值为isc_sv_y_abs_minus1(即串位移矢量残差垂直方向分量绝对值),那么若根据串位移矢量残差垂直方向分量符号值确定串位移矢量残差垂直方向分量的值IscSvY小于0,那么IscSvY=-(isc_sv_y_abs_minus1+1);若根据串位移矢量残差垂直方向分量符号值确定IscSvY大于0,那么IscSvY=isc_sv_y_abs_minus1+1。
图8所示实施例的技术方案使得能够根据位移矢量残差第一方向分量的值采用不同阶指数的哥伦布码来确定位移矢量残差第一方向分量的绝对值,进而能够基于该绝对值和位移矢量残差第一方向分量符号值确定位移矢量残差第一方向分量的值,简化了位移矢量残差的编解码流程、降低了编解码复杂度,有助于提高视频的编解码效率。
需要说明的是:在图8所示实施例的技术方案中,位移矢量残差可以是串位移矢量残差SVD,在这种情况下,若未获取到预测串位移矢量SVP,那么可以将串位移矢量残差SVD作为串位移矢量SV。即在没有SVP时,图8所示实施例的技术方案可以用于SV的解码,即SV=SVD。
若获取到预测串位移矢量SVP,则可以根据串位移矢量残差SVD和预测串位移矢量SVP确定串位移矢量SV。即在有SVP时,图8所示实施例的技术方案可以用于SV及SVD的解码,即SV=SVD+SVP。
同时,图8所示实施例的技术方案不仅可以用于SV/SVD的解码,而且也可以用于其它的幅值解码中,例如对帧间预测块的运动位移矢量残差MVD的解码,对帧内块复制IBC的块运动矢量残差BVD的解码等。
图9示出了根据本申请的一个实施例的视频解码方法的流程图,该视频解码方法可以由具有计算处理功能的设备来执行,比如可以由终端设备或服务器来执行。参照图9所示,该视频解码方法至少包括步骤S910至步骤S930,详细介绍如下:
在步骤S910中,从码流中解码得到位移矢量残差第二方向分量绝对值。
在本申请的一个实施例中,位移矢量残差可以是串位移矢量残差SVD,也可以是运动位移矢量残差MVD,还可以是块位移矢量残差BVD。第二方向分量可以是水平方向分量,或者可以是垂直方向分量。
在本申请的一个实施例中,从码流中解码得到位移矢量残差第二方向分量绝对值的过程可以是:从码流中按照截断一元码的方式进行解码并进行反二值化处理,得到位移矢量残差第二方向分量的前缀值,然后根据位移矢量残差第二方向分量的前缀值,来生成位移矢量残差第二方向分量绝对值。
可选地,在根据位移矢量残差第二方向分量的前缀值来生成位移矢量残差第二方向分量绝对值时,可以有如下实施例:
若位移矢量残差第二方向分量的前缀值小于或等于4,则将位移矢量残差第二方向分量的前缀值作为位移矢量残差第二方向分量绝对值;
若位移矢量残差第二方向分量的前缀值等于5,则将补偿值设为5,并基于从码流中继续解码得到的2位比特,按照2位定长码的方式进行反二值化处理得到位移矢量残差第二方向分量的后缀值,根据位移矢量残差第二方向分量的后缀值和补偿值生成位移矢量残差第二方向分量绝对值;
若位移矢量残差第二方向分量的前缀值等于6,则将补偿值设为9,并基于从码流中继续解码得到的3位比特,按照3位定长码的方式进行反二值化处理得到位移矢量残差第二方向分量的后缀值,根据位移矢量残差第二方向分量的后缀值和补偿值生成位移矢量残差第二方向分量绝对值;
若位移矢量残差第二方向分量的前缀值等于7,则将补偿值设为17,并基于从码流中继续解码得到的1位比特,确定位移矢量残差第二方向分量绝对值的奇偶性;从码流中继续进行解码,按照2阶指数哥伦布码的方式进行反二值化处理,根据2阶指数哥伦布码的方式进行反二值化处理的结果、补偿值和位移矢量残差第二方向分量绝对值的奇偶性生成位移矢量残差第二方向分量绝对值。
可选地,在根据位移矢量残差第二方向分量的前缀值来生成位移矢量残差第二方向分量绝对值时,还可以有如下实施例:
若位移矢量残差第二方向分量的前缀值小于或等于2,则将位移矢量残差第二方向分量的前缀值作为位移矢量残差第二方向分量绝对值;
若位移矢量残差第二方向分量的前缀值等于3,则将补偿值设为3,并基于从码流中继续解码得到的1位比特,确定位移矢量残差第二方向分量绝对值的奇偶性;从码流中继续进行解码,按照0阶指数哥伦布码的方式进行反二值化处理,根据0阶指数哥伦布码的方式进行反二值化处理的结果、补偿值和位移矢量残差第二方向分量绝对值的奇偶性生成位移矢量残差第二方向分量绝对值。
继续参照图9所示,在步骤S920中,若位移矢量残差第二方向分量绝对值不为0,则从码流中解码得到位移矢量残差第二方向分量符号值。
可选地,可以在确定位移矢量残差第二方向分量绝对值不为0时,从码流中继续解码1比特来确定位移矢量残差第二方向分量符号值。
在步骤S930中,根据位移矢量残差第二方向分量绝对值,以及位移矢量残差第二方向分量符号值,确定位移矢量残差第二方向分量的值。
需要说明的是:在图9所示实施例的技术方案中,位移矢量残差可以是串位移矢量残差SVD,在这种情况下,若未获取到预测串位移矢量SVP,那么可以将串位移矢量残差SVD作为串位移矢量SV。即在没有SVP时,图9所示实施例的技术方案可以用于SV的解码,即SV=SVD。
若获取到预测串位移矢量SVP,则可以根据串位移矢量残差SVD和预测串位移矢量SVP确定串位移矢量SV。即在有SVP时,图9所示实施例的技术方案可以用于SV及SVD的解码,即SV=SVD+SVP。
同时,图9所示实施例的技术方案优选可以用于SV/SVD的解码,在这种情况下,可以采用类似于BVD或者MVD的方式来实现对SV/SVD的解码,简化了SV的编解码流程、降低了编解码复杂度,有助于提高视频的编解码效率。
图10示出了根据本申请的一个实施例的视频解码方法的流程图,该视频解码方法可以由具有计算处理功能的设备来执行,比如可以由终端设备或服务器来执行。参照图10所示,该视频解码方法至少包括步骤S1010至步骤S1040,详细介绍如下:
在步骤S1010中,获取解码得到的串位移矢量残差垂直方向分量的值。
在本申请的一个实施例中,串位移矢量残差垂直方向分量的值可以通过前述图8所示实施例的方法解码得到,或者也可以通过前述图9所示实施例的方法解码得到,还可以通过现有标准中的解码方法获得。
在步骤S1020中,根据串位移矢量残差垂直方向分量的值与0之间的关系,获得串位移矢量残差水平方向分量符号值。
在本申请的一个实施例中,如果串位移矢量残差垂直方向分量的值为0,则可以直接从码流中解码出串位移矢量残差水平方向分量符号值。
在本申请的一个实施例中,当解码的起始行是第0行的情况下,若串位移矢量残差垂直方向分量的值为0,且当前串的起点所在行是奇数行时,可以再从码流中解码出串位移矢量残差水平方向分量符号值。同时,在这种情况下,如果当前串的起点所在行是偶数行,那么可以将串位移矢量残差水平方向分量的符号位设为第一值,以指示串位移矢量残差水平方向分量的值小于0。
在本申请的一个实施例中,如果串位移矢量残差垂直方向分量的值大于0,则可以将串位移矢量残差水平方向分量的符号位设为第一值,以指示串位移矢量残差水平方向分量的值小于0。
在本申请的一个实施例中,如果串位移矢量残差垂直方向分量的值小于0,则可以从码流中解码出串位移矢量残差水平方向分量的标志位的值。若串位移矢量残差水平方向分量的标志位为第一值(比如为1时),则从码流中解码出串位移矢量残差水平方向分量符号值,即串位移矢量残差水平方向分量的标志位为第一值表示串位移矢量残差水平方向分量的值不为0。如果串位移矢量残差水平方向分量的标志位为第二值(比如为0时),则可以确定串位移矢量残差水平方向分量的值为0。
继续参照图10所示,在步骤S1030中,根据串位移矢量残差水平方向分量符号值,确定哥伦布码的阶数,按照确定的哥伦布码的阶数进行反二值化处理得到串位移矢量残差水平方向分量的绝对值。
在本申请的一个实施例中,如果串位移矢量残差水平方向分量符号值指示串位移矢量残差水平方向分量的值小于0,则可以按照k2阶指数哥伦布码进行反二值化处理得到串位移矢量残差水平方向分量的绝对值,k2≥0;如果串位移矢量残差水平方向分量符号值指示串位移矢量残差水平方向分量的值大于0,则按照t2阶指数哥伦布码进行反二值化处理得到串位移矢量残差水平方向分量的绝对值,t2≥0且t2与k2不相等。
即本申请实施例的技术方案可以根据串位移矢量残差水平方向分量的值采用不同阶指数的哥伦布码来确定串位移矢量残差水平方向分量的绝对值,简化了串位移矢量残差的编解码流程、降低了编解码复杂度,有助于提高视频的编解码效率。
在步骤S1040中,根据串位移矢量残差水平方向分量绝对值,以及串位移矢量残差水平方向分量的符号位,确定串位移矢量残差水平方向分量的值。
在图10所示实施例的技术方案中,串位移矢量残差水平方向分量的值依赖于串位移矢量残差垂直方向分量的值,在这种情况下,需要先解码得到串位移矢量残差垂直方向分量的值,然后基于串位移矢量残差垂直方向分量的值来确定串位移矢量残差水平方向分量的值。具体分为串位移矢量残差垂直方向分量的值为0的情况、串位移矢量残差垂直方向分量的值大于0的情况,以及串位移矢量残差垂直方向分量的值小于0的情况。
当串位移矢量残差垂直方向分量的值为0时,可以先从码流中解码出串位移矢量残差水平方向分量符号值;如果串位移矢量残差水平方向分量符号值指示串位移矢量残差水平方向分量的值小于0,那么可以按照k2阶指数哥伦布码的方式进行反二值化处理得到串位移矢量残差水平方向分量的绝对值;如果串位移矢量残差水平方向分量符号值指示串位移矢量残差水平方向分量的值大于0,那么可以按照t2阶指数哥伦布码的方式进行反二值化处理得到串位移矢量残差水平方向分量的绝对值,然后根据串位移矢量残差水平方向分量绝对值,以及串位移矢量残差水平方向分量符号值,确定串位移矢量残差水平方向分量的值。
当串位移矢量残差垂直方向分量的值为0时,还可以先判断当前串的起点所在行是奇数行(在解码的起始行是第0行的情况下),如果是奇数行,再从码流中解码出串位移矢量残差水平方向分量符号值。如果是偶数行,则可以直接将串位移矢量残差水平方向分量符号值设为第一值,以指示串位移矢量残差水平方向分量的值小于0,并按照k2阶指数哥伦布码进行反二值化处理得到串位移矢量残差水平方向分量的绝对值,然后根据串位移矢量残差水平方向分量绝对值,以及串位移矢量残差水平方向分量符号值,确定串位移矢量残差水平方向分量的值。
当串位移矢量残差垂直方向分量的值大于0时,可以将串位移矢量残差水平方向分量符号值设为第一值,以指示串位移矢量残差水平方向分量的值小于0,然后按照k2阶指数哥伦布码的方式进行反二值化处理得到串位移矢量残差水平方向分量的绝对值,并根据串位移矢量残差水平方向分量绝对值,以及串位移矢量残差水平方向分量符号值,确定串位移矢量残差水平方向分量的值。
当串位移矢量残差垂直方向分量的值小于0时,可以从码流中解码出串位移矢量残差水平方向分量的标志位。如果串位移矢量残差水平方向分量的标志位为第一值(指示串位移矢量残差水平方向分量的值不为0),则从码流中解码出串位移矢量残差水平方向分量符号值;进而根据串位移矢量残差水平方向分量的值采用不同阶指数的哥伦布码来确定串位移矢量残差水平方向分量的绝对值,并根据串位移矢量残差水平方向分量绝对值,以及串位移矢量残差水平方向分量符号值,确定串位移矢量残差水平方向分量的值。同时,如果串位移矢量残差水平方向分量的标志位为第二值,则可以确定串位移矢量残差水平方向分量的值为0。
需要说明的是:在图10所示实施例的技术方案中,若未获取到预测串位移矢量SVP,那么可以将串位移矢量残差SVD作为串位移矢量SV。即在没有SVP时,图10所示实施例的技术方案可以用于SV的解码,即SV=SVD。若获取到预测串位移矢量SVP,则可以根据串位移矢量残差SVD和预测串位移矢量SVP确定串位移矢量SV。即在有SVP时,图10所示实施例的技术方案可以用于SV及SVD的解码,即SV=SVD+SVP。
综合图8至图10,本申请实施例的技术方案可以更符合SV分布特性,在简化SV编解码流程、降低SV编解码复杂度的同时,能保证视频的压缩性能,总体有助于SV编解码效率的提升。以下以串扫描方向为水平方向为例,从解码端的角度对本申请实施例的技术方案应用于SV解码场景的实现细节进行详细介绍,主要可以包括如下步骤:
步骤501,解码串矢量上方标志isc_sv_above_flag,如果isc_sv_above_flag的值为1,则IscSvX的值为0,IscSvY的值为-1。
步骤502,如果isc_sv_above_flag的值为0,则解码串矢量历史标志isc_sv_recent_flag。如果isc_sv_recent_flag的值为1,继续解码串矢量历史索引isc_sv_recent_index,根据isc_sv_recent_index的值,结合帧内预测历史运动信息表,查表获得IscSvX和IscSvY的值。
需要说明的是,步骤502的处理过程类似于SV的skip/direct模式,可以理解为存在SV的预测过程,即SVP不为0。
步骤503,如果isc_sv_recent_flag的值为0,则根据以下方法分别解码得到SV(IscSvX,IscSvY)。
需要说明的是:在没有SVP时,本申请实施例的技术方案可以用于SV的解码,即SV=SVD。若存在SVP,则本申请实施例的技术方案可以用于SV及SVD的解码,其中SV=SVD+SVP。即,本申请实施例的技术方案在步骤501和/或步骤502不存在时,可直接用来对SV进行解码。
从码流中解码推导出IscSvY的值,可采用以下任意一种方法:
方法1y:使用类似于MVD的解码方法。具体可以参照前述实施例中步骤401至步骤403的相关内容。
方法2y:使用类似于BVD的解码方法。具体可以参照前述实施例中步骤301至步骤304的相关内容。
方法3y:使用现有标准中对于SV的解码方法。具体可以参照前述实施例中步骤2031至步骤2033的相关内容。
方法4y:包括如下步骤:
(4y.1)、解码串矢量Y分量标志isc_sv_y_non_zero_flag。
(4y.2)、如果isc_sv_y_non_zero_flag的值为0,则IscSvY的值为0。
(4y.3)、如果isc_sv_y_non_zero_flag的值为1,IscSvY的值不为0。进一步解码串矢量Y分量符号位isc_sv_y_sign并得到isc_sv_y_sign的值,如果isc_sv_y_sign的值为1,即IscSvY的值小于0;如果isc_sv_y_sign的值为0,即IscSvY的值大于0。
(4y.4)、按照以下方法解码和反二值化得到串矢量Y分量绝对值isc_sv_y_abs_minus1:
如果isc_sv_y_sign的值为1,即IscSvY的值小于0,则解码并按照k阶指数哥伦布(见表6所示的k阶指数哥伦布码表)的方式反二值化得到串矢量Y分量绝对值isc_sv_y_abs_minus1;如果isc_sv_y_sign的值为0,即IscSvY的值大于0,则解码并按照t阶指数哥伦布的方式反二值化得到串矢量Y分量绝对值isc_sv_y_abs_minus1。
其中,k>=0,t>=0,k和t为整数,且k不等于t。
(4y.5)、令IscSvYAbs的值等于isc_sv_y_abs_minus1+1,再结合isc_sv_y_sign的值即可求得IscSvY的值。
从码流中解码推导出IscSvX的值,可采用以下任意一种方法:
方法1x:使用类似于MVD的解码方法。具体可以参照前述实施例中步骤401至步骤403的相关内容。
方法2x:使用类似于BVD的解码方法。具体可以参照前述实施例中步骤301至步骤304的相关内容。
方法3x:使用现有标准中对于SV的解码方法。具体可以参照前述实施例中步骤2031至步骤2033的相关内容。
方法4x:包括如下步骤:
(4x.1)、解码串矢量X分量标志isc_sv_x_non_zero_flag。
(4x.2)、如果isc_sv_x_non_zero_flag的值为0,则IscSvX的值为0。
(4x.3)、如果isc_sv_x_non_zero_flag的值为1,IscSvX的值不为0。进一步解码串矢量X分量符号位isc_sv_x_sign并得到isc_sv_x_sign的值,如果isc_sv_x_sign的值为1,即IscSvX的值小于0;如果isc_sv_x_sign的值为0,即IscSvX的值大于0。
(4x.4)、按照以下方法解码和反二值化得到串矢量X分量绝对值isc_sv_x_abs_minus1:
如果isc_sv_x_sign的值为1,即IscSvX的值小于0,则解码并按照k阶指数哥伦布(见表6所示的k阶指数哥伦布码表)的方式反二值化得到串矢量X分量绝对值isc_sv_x_abs_minus1;如果isc_sv_x_sign的值为0,即IscSvX的值大于0,则解码并按照t阶指数哥伦布的方式反二值化得到串矢量X分量绝对值isc_sv_x_abs_minus1。
其中,k>=0,t>=0,k和t为整数,且k不等于t。
(4x.5)、令IscSvXAbs的值等于isc_sv_x_abs_minus1+1,再结合isc_sv_x_sign的值即可求得IscSvX的值。
方法5x:包括如下步骤:
(5x.1)、如果IscSvY的值为0(其中,IscSvY可以通过上述方法1y至方法4y中的任一种方法解码得到),则按照以下步骤解码得到IscSvx:
A、如果IsOddRow的值为1,即当前串的起点所在行是奇数行(假设起始行为第0行),则解码串矢量X分量符号位isc_sv_x_sign并得到isc_sv_x_sign的值;如果isc_sv_x_sign的值为1,即IscSvx的值小于0;如果isc_sv_x_sign的值为0,即IscSvx的值大于0。
B、如果IsOddRow的值为0,即当前串的起点所在行是偶数行,则直接令isc_sv_x_sign的值为1,即IscSvx的值小于0。
需要说明的是:本申请的其它实施例中也无需执行步骤A和B,即无需计算IsOddRow的值,直接从码流中解码串矢量X分量符号位isc_sv_x_sign并得到isc_sv_x_sign的值,这种方式可以在一定程度上简化SV的编解码流程。
C、在得到isc_sv_x_sign的值之后,可以按照以下方法解码和反二值化得到串矢量X分量绝对值isc_sv_x_abs_minus1:
如果isc_sv_x_sign的值为1,即IscSvx的值小于0,则解码并按照k阶指数哥伦布的方式反二值化得到串矢量X分量绝对值isc_sv_x_abs_minus1;如果isc_sv_x_sign的值为0,即IscSvx的值大于0,则解码并按照t阶指数哥伦布的方式反二值化得到串矢量X分量绝对值isc_sv_x_abs_minus1。
其中,k>=0,t>=0,k和t为整数,且k不等于t。
D、令IscSvXAbs的值等于isc_sv_x_abs_minus1+1,再结合isc_sv_x_sign的值即可求得IscSvX的值。
(5x.2)、如果IscSvy的值大于0,则可以直接令isc_sv_x_sign的值为1,即IscSvx的值小于0,则可以解码并按照k阶指数哥伦布的方式反二值化得到串矢量X分量绝对值isc_sv_x_abs_minus1。然后令IscSvXAbs的值等于isc_sv_x_abs_minus1+1,再结合isc_sv_x_sign的值即可求得IscSvX的值。
(5x.3)、如果IscSvy的值小于0,则解码串矢量X分量标志isc_sv_x_non_zero_flag。如果isc_sv_x_non_zero_flag的值为0,即IscSvX的值为0。
如果isc_sv_x_non_zero_flag的值为1,则IscSvX的值不为0,进一步解码串矢量X分量符号位isc_sv_x_sign并得到isc_sv_x_sign的值。如果isc_sv_x_sign的值为1,即IscSvx的值小于0,则解码并按照k阶指数哥伦布的方式反二值化得到串矢量X分量绝对值isc_sv_x_abs_minus1;如果isc_sv_x_sign的值为0,即IscSvx的值大于0,则解码并按照t阶指数哥伦布的方式反二值化得到串矢量X分量绝对值isc_sv_x_abs_minus1。
其中,k>=0,t>=0,k和t为整数,且k不等于t。
然后令IscSvXAbs的值等于isc_sv_x_abs_minus1+1,再结合isc_sv_x_sign的值即可求得IscSvX的值。
在前述实施例的技术方案中,isc_sv_x_sign和isc_sv_y_sign可以采用bypass的方式进行解码。或者isc_sv_x_sign和isc_sv_y_sign也可以采用CABAC的方式进行解码。
如果isc_sv_x_sign和isc_sv_y_sign采用CABAC的方式进行解码,那么其上下文模型的选择和ctxIdxInc的确定可采用以下方式之一:
a)、采用单一上下文模型,且ctxIdxInc=0;
b)、针对先解码得到IscSvY的方案,例如,前述方法5x,对于isc_sv_x_sign的ctxIdxInc,可以根据IscSvY的符号确定上下文模型:ctxIdxInc=IscSvY<0?0:(IscSvY==0?1:2)。
需要说明的是:在前述实施例中,IscSvY可以采用前述方法1y至方法4y中的任一种方法解码得到;IscSvX可以采用前述方法1x至方法5x中的任一种方法解码得到。如果IscSvX采用前述方法1x至方法4x中的任一种方法解码得到,那么IscSvX的解码过程与IscSvY的解码过程之间是没有依赖的,并且可以并行执行;如果IscSvX采用前述方法5x,那么需要先解码IscSvY,再解码IscSvX。
可选地,IscSvY可以采用前述方法2y解码得到,IscSvX可以采用前述方法4x或方法5x解码得到。
以上实施例主要是从解码端的角度进行的阐述,其中编码端的处理过程与之类似,不再赘述。
综合而言,本申请实施例的技术方案根据SV的统计特征,提出了一种符合SV分布特性的运动矢量编码方法,在简化SV编解码流程、降低SV编解码复杂度的同时,能保证视频的压缩性能,总体有助于SV编解码效率的提升。
以下介绍本申请的装置实施例,可以用于执行本申请上述实施例中的方法。对于本申请装置实施例中未披露的细节,请参照本申请上述的方法实施例。
图11示出了根据本申请的一个实施例的视频解码装置的框图,该视频解码装置可以设置在具有计算处理功能的设备内,比如可以设置在终端设备或服务器内。
参照图11所示,根据本申请的一个实施例的视频解码装置1100,包括:解码单元1102、第一处理单元1104、第二处理单元1106和第三处理单元1108。
其中,解码单元1102配置为从码流中解码出位移矢量残差第一方向分量符号值;第一处理单元1104配置为若根据所述位移矢量残差第一方向分量符号值确定位移矢量残差第一方向分量的值小于0,则按照k1阶指数哥伦布码的方式进行反二值化处理得到位移矢量残差第一方向分量的绝对值,k1≥0;第二处理单元1106配置为若根据所述位移矢量残差第一方向分量符号值确定位移矢量残差第一方向分量的值大于0,则按照t1阶指数哥伦布码的方式进行反二值化处理得到位移矢量残差第一方向分量的绝对值,t1≥0且t1与k1不相等;第三处理单元1108配置为根据所述位移矢量残差第一方向分量绝对值,以及所述位移矢量残差第一方向分量符号值,确定所述位移矢量残差第一方向分量的值。
在本申请的一些实施例中,基于前述方案,所述解码单元1102配置为:从码流中解码出位移矢量残差第一方向分量的标志位;若所述位移矢量残差第一方向分量的标志位为第一值,则从所述码流中解码出所述位移矢量残差第一方向分量符号值;其中,所述位移矢量残差第一方向分量的标志位为第一值表示所述位移矢量残差第一方向分量的值不为0。
在本申请的一些实施例中,基于前述方案,所述解码单元1102还配置为:若所述位移矢量残差第一方向分量的标志位为第二值,则确定所述位移矢量残差第一方向分量的值为0。
在本申请的一些实施例中,基于前述方案,所述解码单元1102配置为:若所述位移矢量残差第一方向分量符号值为第一值,则确定所述位移矢量残差第一方向分量的值小于0;若所述位移矢量残差第一方向分量符号值为第二值,则确定所述位移矢量残差第一方向分量的值大于0。
在本申请的一些实施例中,基于前述方案,所述解码单元1102还配置为:从所述码流中解码得到位移矢量残差第二方向分量绝对值,若所述位移矢量残差第二方向分量绝对值不为0,则从所述码流中解码得到位移矢量残差第二方向分量符号值;所述第三处理单元1108还配置为:根据所述位移矢量残差第二方向分量绝对值,以及所述位移矢量残差第二方向分量符号值,确定位移矢量残差第二方向分量的值。
在本申请的一些实施例中,基于前述方案,所述解码单元1102配置为:从码流中按照截断一元码的方式进行解码并进行反二值化处理,得到位移矢量残差第二方向分量的前缀值;根据所述位移矢量残差第二方向分量的前缀值,生成所述位移矢量残差第二方向分量绝对值。
在本申请的一些实施例中,基于前述方案,所述解码单元1102配置为:若所述位移矢量残差第二方向分量的前缀值小于或等于4,则将所述位移矢量残差第二方向分量的前缀值作为所述位移矢量残差第二方向分量绝对值;
若所述位移矢量残差第二方向分量的前缀值等于5,则将补偿值设为5,并基于从码流中继续解码得到的2位比特,按照2位定长码的方式进行反二值化处理得到位移矢量残差第二方向分量的后缀值,根据所述位移矢量残差第二方向分量的后缀值和所述补偿值生成所述位移矢量残差第二方向分量绝对值;
若所述位移矢量残差第二方向分量的前缀值等于6,则将补偿值设为9,并基于从码流中继续解码得到的3位比特,按照3位定长码的方式进行反二值化处理得到位移矢量残差第二方向分量的后缀值,根据所述位移矢量残差第二方向分量的后缀值和所述补偿值生成所述位移矢量残差第二方向分量绝对值;
若所述位移矢量残差第二方向分量的前缀值等于7,则将补偿值设为17,并基于从码流中继续解码得到的1位比特,确定所述位移矢量残差第二方向分量绝对值的奇偶性;从所述码流中继续进行解码,按照2阶指数哥伦布码的方式进行反二值化处理,根据所述2阶指数哥伦布码的方式进行反二值化处理的结果、所述补偿值和所述位移矢量残差第二方向分量绝对值的奇偶性生成所述位移矢量残差第二方向分量绝对值。
在本申请的一些实施例中,基于前述方案,所述解码单元1102配置为:若所述位移矢量残差第二方向分量的前缀值小于或等于2,则将所述位移矢量残差第二方向分量的前缀值作为所述位移矢量残差第二方向分量绝对值;若所述位移矢量残差第二方向分量的前缀值等于3,则将补偿值设为3,并基于从码流中继续解码得到的1位比特,确定所述位移矢量残差第二方向分量绝对值的奇偶性;从所述码流中继续进行解码,按照0阶指数哥伦布码的方式进行反二值化处理,根据所述0阶指数哥伦布码的方式进行反二值化处理的结果、所述补偿值和所述位移矢量残差第二方向分量绝对值的奇偶性生成所述位移矢量残差第二方向分量绝对值。
在本申请的一些实施例中,基于前述方案,所述位移矢量残差为:串位移矢量残差SVD;或者运动位移矢量残差MVD;或者块位移矢量残差BVD。
在本申请的一些实施例中,基于前述方案,所述位移矢量残差为串位移矢量残差SVD;所述第三处理单元1108还配置为:若未获取到预测串位移矢量(String VectorPredictor,简称SVP),则将所述串位移矢量残差SVD作为串位移矢量SV;若获取到预测串位移矢量SVP,则根据所述串位移矢量残差SVD和所述预测串位移矢量SVP确定串位移矢量SV。
在本申请的一些实施例中,基于前述方案,所述位移矢量残差第一方向分量为串位移矢量残差垂直方向分量。
在本申请的一些实施例中,基于前述方案,若所述位移矢量残差第一方向分量为串位移矢量残差垂直方向分量,则所述解码单元1102还配置为:若所述串位移矢量残差垂直方向分量的值为0,则从所述码流中解码出串位移矢量残差水平方向分量符号值;所述第一处理单元1104还配置为:若根据所述串位移矢量残差水平方向分量符号值确定串位移矢量残差水平方向分量的值小于0,则按照k2阶指数哥伦布码的方式进行反二值化处理得到串位移矢量残差水平方向分量的绝对值,k2≥0;所述第二处理单元1106还配置为:若根据所述串位移矢量残差水平方向分量符号值确定串位移矢量残差水平方向分量的值大于0,则按照t2阶指数哥伦布码的方式进行反二值化处理得到串位移矢量残差水平方向分量的绝对值,t2≥0且t2与k2不相等;所述第三处理单元1108还配置为:根据所述串位移矢量残差水平方向分量绝对值,以及所述串位移矢量残差水平方向分量符号值,确定所述串位移矢量残差水平方向分量的值。
在本申请的一些实施例中,基于前述方案,若所述位移矢量残差第一方向分量为串位移矢量残差垂直方向分量,则所述解码单元1102还配置为:在从所述码流中解码出串位移矢量残差水平方向分量符号值之前,若解码的起始行是第0行,且当前串的起点所在行是奇数行,则从所述码流中解码出串位移矢量残差水平方向分量符号值;
所述第三处理单元1108还配置为:若当前串的起点所在行是偶数行,则将所述串位移矢量残差水平方向分量符号值设为第一值,以指示所述串位移矢量残差水平方向分量的值小于0,并按照k2阶指数哥伦布码进行反二值化处理得到串位移矢量残差水平方向分量的绝对值;根据所述串位移矢量残差水平方向分量绝对值,以及所述串位移矢量残差水平方向分量符号值,确定所述串位移矢量残差水平方向分量的值。
在本申请的一些实施例中,基于前述方案,若所述位移矢量残差第一方向分量为串位移矢量残差垂直方向分量,则所述第三处理单元1108还配置为:若所述串位移矢量残差垂直方向分量的值大于0,则将串位移矢量残差水平方向分量符号值设为第一值,以指示串位移矢量残差水平方向分量的值小于0;按照k2阶指数哥伦布码的方式进行反二值化处理得到串位移矢量残差水平方向分量的绝对值;根据所述串位移矢量残差水平方向分量绝对值,以及所述串位移矢量残差水平方向分量符号值,确定所述串位移矢量残差水平方向分量的值。
在本申请的一些实施例中,基于前述方案,若所述位移矢量残差第一方向分量为串位移矢量残差垂直方向分量,则所述第三处理单元1108还配置为:若所述串位移矢量残差垂直方向分量的值小于0,则从所述码流中解码出串位移矢量残差水平方向分量的标志位;若所述串位移矢量残差水平方向分量的标志位为第一值,则从所述码流中解码出所述串位移矢量残差水平方向分量符号值;其中,所述串位移矢量残差水平方向分量的标志位为第一值表示所述串位移矢量残差水平方向分量的值不为0;
若根据所述串位移矢量残差水平方向分量符号值确定串位移矢量残差水平方向分量的值小于0,则按照k2阶指数哥伦布码的方式进行反二值化处理得到串位移矢量残差水平方向分量的绝对值,k2≥0;
若根据所述串位移矢量残差水平方向分量符号值确定串位移矢量残差水平方向分量的值大于0,则按照t2阶指数哥伦布码的方式进行反二值化处理得到串位移矢量残差水平方向分量的绝对值,t2≥0且t2与k2不相等;
根据所述串位移矢量残差水平方向分量绝对值,以及所述串位移矢量残差水平方向分量符号值,确定所述串位移矢量残差水平方向分量的值。
在本申请的一些实施例中,基于前述方案,所述第三处理单元1108还配置为:若所述串位移矢量残差水平方向分量的标志位为第二值,则确定所述串位移矢量残差水平方向分量的值为0。
图12示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
需要说明的是,图12示出的电子设备的计算机系统1200仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图12所示,计算机系统1200包括中央处理单元(Central Processing Unit,CPU)1201,其可以根据存储在只读存储器(Read-Only Memory,ROM)1202中的程序或者从存储部分1208加载到随机访问存储器(Random Access Memory,RAM)1203中的程序而执行各种适当的动作和处理,例如执行上述实施例中所述的方法。在RAM 1203中,还存储有系统操作所需的各种程序和数据。CPU 1201、ROM 1202以及RAM 1203通过总线1204彼此相连。输入/输出(Input/Output,I/O)接口1205也连接至总线1204。
以下部件连接至I/O接口1205:包括键盘、鼠标等的输入部分1206;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分1207;包括硬盘等的存储部分1208;以及包括诸如LAN(Local AreaNetwork,局域网)卡、调制解调器等的网络接口卡的通信部分1209。通信部分1209经由诸如因特网的网络执行通信处理。驱动器1210也根据需要连接至I/O接口1205。可拆卸介质1211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1210上,以便于从其上读出的计算机程序根据需要被安装入存储部分1208。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的计算机程序。在这样的实施例中,该计算机程序可以通过通信部分1209从网络上被下载和安装,和/或从可拆卸介质1211被安装。在该计算机程序被中央处理单元(CPU)1201执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现上述实施例中所述的方法。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的实施方式后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

Claims (21)

1.一种视频解码方法,其特征在于,包括:
从码流中解码出位移矢量残差第一方向分量符号值;
若根据所述位移矢量残差第一方向分量符号值确定位移矢量残差第一方向分量的值小于0,则按照k1阶指数哥伦布码的方式进行反二值化处理得到位移矢量残差第一方向分量的绝对值,k1≥0;
若根据所述位移矢量残差第一方向分量符号值确定位移矢量残差第一方向分量的值大于0,则按照t1阶指数哥伦布码的方式进行反二值化处理得到位移矢量残差第一方向分量的绝对值,t1≥0且t1与k1不相等;
根据所述位移矢量残差第一方向分量绝对值,以及所述位移矢量残差第一方向分量符号值,确定所述位移矢量残差第一方向分量的值。
2.根据权利要求1所述的视频解码方法,其特征在于,从码流中解码出位移矢量残差第一方向分量符号值,包括:
从码流中解码出位移矢量残差第一方向分量的标志位;
若所述位移矢量残差第一方向分量的标志位为第一值,则从所述码流中解码出所述位移矢量残差第一方向分量符号值;
其中,所述位移矢量残差第一方向分量的标志位为第一值表示所述位移矢量残差第一方向分量的值不为0。
3.根据权利要求2所述的视频解码方法,其特征在于,所述视频解码方法还包括:
若所述位移矢量残差第一方向分量的标志位为第二值,则确定所述位移矢量残差第一方向分量的值为0。
4.根据权利要求1所述的视频解码方法,其特征在于,所述视频解码方法还包括:
若所述位移矢量残差第一方向分量符号值为第一值,则确定所述位移矢量残差第一方向分量的值小于0;
若所述位移矢量残差第一方向分量符号值为第二值,则确定所述位移矢量残差第一方向分量的值大于0。
5.根据权利要求1所述的视频解码方法,其特征在于,所述视频解码方法还包括:
从所述码流中解码得到位移矢量残差第二方向分量绝对值;
若所述位移矢量残差第二方向分量绝对值不为0,则从所述码流中解码得到位移矢量残差第二方向分量符号值;
根据所述位移矢量残差第二方向分量绝对值,以及所述位移矢量残差第二方向分量符号值,确定位移矢量残差第二方向分量的值。
6.根据权利要求5所述的视频解码方法,其特征在于,从码流中解码得到位移矢量残差第二方向分量绝对值,包括:
从码流中按照截断一元码的方式进行解码并进行反二值化处理,得到位移矢量残差第二方向分量的前缀值;
根据所述位移矢量残差第二方向分量的前缀值,生成所述位移矢量残差第二方向分量绝对值。
7.根据权利要求6所述的视频解码方法,其特征在于,根据所述位移矢量残差第二方向分量的前缀值,生成所述位移矢量残差第二方向分量绝对值,包括:
若所述位移矢量残差第二方向分量的前缀值小于或等于4,则将所述位移矢量残差第二方向分量的前缀值作为所述位移矢量残差第二方向分量绝对值;
若所述位移矢量残差第二方向分量的前缀值等于5,则将补偿值设为5,并基于从码流中继续解码得到的2位比特,按照2位定长码的方式进行反二值化处理得到位移矢量残差第二方向分量的后缀值,根据所述位移矢量残差第二方向分量的后缀值和所述补偿值生成所述位移矢量残差第二方向分量绝对值;
若所述位移矢量残差第二方向分量的前缀值等于6,则将补偿值设为9,并基于从码流中继续解码得到的3位比特,按照3位定长码的方式进行反二值化处理得到位移矢量残差第二方向分量的后缀值,根据所述位移矢量残差第二方向分量的后缀值和所述补偿值生成所述位移矢量残差第二方向分量绝对值;
若所述位移矢量残差第二方向分量的前缀值等于7,则将补偿值设为17,并基于从码流中继续解码得到的1位比特,确定所述位移矢量残差第二方向分量绝对值的奇偶性;从所述码流中继续进行解码,按照2阶指数哥伦布码的方式进行反二值化处理,根据所述2阶指数哥伦布码的方式进行反二值化处理的结果、所述补偿值和所述位移矢量残差第二方向分量绝对值的奇偶性生成所述位移矢量残差第二方向分量绝对值。
8.根据权利要求6所述的视频解码方法,其特征在于,根据所述位移矢量残差第二方向分量的前缀值,生成所述位移矢量残差第二方向分量绝对值,包括:
若所述位移矢量残差第二方向分量的前缀值小于或等于2,则将所述位移矢量残差第二方向分量的前缀值作为所述位移矢量残差第二方向分量绝对值;
若所述位移矢量残差第二方向分量的前缀值等于3,则将补偿值设为3,并基于从码流中继续解码得到的1位比特,确定所述位移矢量残差第二方向分量绝对值的奇偶性;从所述码流中继续进行解码,按照0阶指数哥伦布码的方式进行反二值化处理,根据所述0阶指数哥伦布码的方式进行反二值化处理的结果、所述补偿值和所述位移矢量残差第二方向分量绝对值的奇偶性生成所述位移矢量残差第二方向分量绝对值。
9.根据权利要求1至8中任一项所述的视频解码方法,其特征在于,所述位移矢量残差为:
串位移矢量残差SVD;或者
运动位移矢量残差MVD;或者
块位移矢量残差BVD。
10.根据权利要求1至8中所述的视频解码方法,其特征在于,所述位移矢量残差为串位移矢量残差SVD;所述视频解码方法还包括:
若未获取到预测串位移矢量SVP,则将所述串位移矢量残差SVD作为串位移矢量SV;
若获取到预测串位移矢量SVP,则根据所述串位移矢量残差SVD和所述预测串位移矢量SVP确定串位移矢量SV。
11.根据权利要求1至4中任一项所述的视频解码方法,其特征在于,所述位移矢量残差第一方向分量为串位移矢量残差垂直方向分量。
12.根据权利要求11所述的视频解码方法,其特征在于,所述视频解码方法还包括:
若所述串位移矢量残差垂直方向分量的值为0,则从所述码流中解码出串位移矢量残差水平方向分量符号值;
若根据所述串位移矢量残差水平方向分量符号值确定串位移矢量残差水平方向分量的值小于0,则按照k2阶指数哥伦布码的方式进行反二值化处理得到串位移矢量残差水平方向分量的绝对值,k2≥0;
若根据所述串位移矢量残差水平方向分量符号值确定串位移矢量残差水平方向分量的值大于0,则按照t2阶指数哥伦布码的方式进行反二值化处理得到串位移矢量残差水平方向分量的绝对值,t2≥0且t2与k2不相等;
根据所述串位移矢量残差水平方向分量绝对值,以及所述串位移矢量残差水平方向分量符号值,确定所述串位移矢量残差水平方向分量的值。
13.根据权利要求12所述的视频解码方法,其特征在于,在从所述码流中解码出串位移矢量残差水平方向分量符号值之前,所述视频解码方法还包括:
在解码的起始行是第0行的情况下,若当前串的起点所在行是奇数行,则执行从所述码流中解码出串位移矢量残差水平方向分量符号值的过程;
若当前串的起点所在行是偶数行,则将所述串位移矢量残差水平方向分量符号值设为第一值,以指示所述串位移矢量残差水平方向分量的值小于0,并按照k2阶指数哥伦布码进行反二值化处理得到串位移矢量残差水平方向分量的绝对值;根据所述串位移矢量残差水平方向分量绝对值,以及所述串位移矢量残差水平方向分量符号值,确定所述串位移矢量残差水平方向分量的值。
14.根据权利要求11所述的视频解码方法,其特征在于,所述视频解码方法还包括:
若所述串位移矢量残差垂直方向分量的值大于0,则将串位移矢量残差水平方向分量符号值设为第一值,以指示串位移矢量残差水平方向分量的值小于0;
按照k2阶指数哥伦布码的方式进行反二值化处理得到串位移矢量残差水平方向分量的绝对值;
根据所述串位移矢量残差水平方向分量绝对值,以及所述串位移矢量残差水平方向分量符号值,确定所述串位移矢量残差水平方向分量的值。
15.根据权利要求11所述的视频解码方法,其特征在于,所述视频解码方法还包括:
若所述串位移矢量残差垂直方向分量的值小于0,则从所述码流中解码出串位移矢量残差水平方向分量的标志位;
若所述串位移矢量残差水平方向分量的标志位为第一值,则从所述码流中解码出所述串位移矢量残差水平方向分量符号值;其中,所述串位移矢量残差水平方向分量的标志位为第一值表示所述串位移矢量残差水平方向分量的值不为0;
若根据所述串位移矢量残差水平方向分量符号值确定串位移矢量残差水平方向分量的值小于0,则按照k2阶指数哥伦布码的方式进行反二值化处理得到串位移矢量残差水平方向分量的绝对值,k2≥0;
若根据所述串位移矢量残差水平方向分量符号值确定串位移矢量残差水平方向分量的值大于0,则按照t2阶指数哥伦布码的方式进行反二值化处理得到串位移矢量残差水平方向分量的绝对值,t2≥0且t2与k2不相等;
根据所述串位移矢量残差水平方向分量绝对值,以及所述串位移矢量残差水平方向分量符号值,确定所述串位移矢量残差水平方向分量的值。
16.根据权利要求15所述的视频解码方法,其特征在于,所述视频解码方法还包括:
若所述串位移矢量残差水平方向分量的标志位为第二值,则确定所述串位移矢量残差水平方向分量的值为0。
17.一种视频编码方法,其特征在于,包括:
确定位移矢量残差第一方向分量符号值;
若根据所述位移矢量残差第一方向分量符号值确定位移矢量残差第一方向分量的值小于0,则按照k1阶指数哥伦布码的方式进行去二值化处理得到位移矢量残差第一方向分量的绝对值,k1≥0;
若根据所述位移矢量残差第一方向分量符号值确定位移矢量残差第一方向分量的值大于0,则按照t1阶指数哥伦布码的方式进行去二值化处理得到位移矢量残差第一方向分量的绝对值,t1≥0且t1与k1不相等;
根据所述位移矢量残差第一方向分量绝对值,以及所述位移矢量残差第一方向分量符号值进行编码处理。
18.一种视频解码装置,其特征在于,包括:
解码单元,配置为从码流中解码出位移矢量残差第一方向分量符号值;
第一处理单元,配置为若根据所述位移矢量残差第一方向分量符号值确定位移矢量残差第一方向分量的值小于0,则按照k1阶指数哥伦布码的方式进行反二值化处理得到位移矢量残差第一方向分量的绝对值,k1≥0;
第二处理单元,配置为若根据所述位移矢量残差第一方向分量符号值确定位移矢量残差第一方向分量的值大于0,则按照t1阶指数哥伦布码的方式进行反二值化处理得到位移矢量残差第一方向分量的绝对值,t1≥0且t1与k1不相等;
第三处理单元,配置为根据所述位移矢量残差第一方向分量绝对值,以及所述位移矢量残差第一方向分量符号值,确定所述位移矢量残差第一方向分量的值。
19.一种视频编码装置,其特征在于,包括:
确定单元,配置为确定位移矢量残差第一方向分量符号值;
第四处理单元,配置为若根据所述位移矢量残差第一方向分量符号值确定位移矢量残差第一方向分量的值小于0,则按照k1阶指数哥伦布码的方式进行去二值化处理得到位移矢量残差第一方向分量的绝对值,k1≥0;
第五处理单元,配置为若根据所述位移矢量残差第一方向分量符号值确定位移矢量残差第一方向分量的值大于0,则按照t1阶指数哥伦布码的方式进行去二值化处理得到位移矢量残差第一方向分量的绝对值,t1≥0且t1与k1不相等;
编码单元,配置为根据所述位移矢量残差第一方向分量绝对值,以及所述位移矢量残差第一方向分量符号值进行编码处理。
20.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至17中任一项所述的方法。
21.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至17中任一项所述的方法。
CN202110273047.5A 2021-03-14 2021-03-14 视频编解码方法、装置、计算机可读介质及电子设备 Pending CN115086656A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110273047.5A CN115086656A (zh) 2021-03-14 2021-03-14 视频编解码方法、装置、计算机可读介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110273047.5A CN115086656A (zh) 2021-03-14 2021-03-14 视频编解码方法、装置、计算机可读介质及电子设备

Publications (1)

Publication Number Publication Date
CN115086656A true CN115086656A (zh) 2022-09-20

Family

ID=83240391

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110273047.5A Pending CN115086656A (zh) 2021-03-14 2021-03-14 视频编解码方法、装置、计算机可读介质及电子设备

Country Status (1)

Country Link
CN (1) CN115086656A (zh)

Similar Documents

Publication Publication Date Title
JP6449203B2 (ja) 映像復号化装置、映像符号化方法
CN113727108B (zh) 视频解码方法、视频编码方法及相关设备
JP2023156438A (ja) データ符号化方法及び装置、データ復号化方法及び装置、画像処理装置
EP4246975A1 (en) Video decoding method and apparatus, video coding method and apparatus, and device
US20220224888A1 (en) Video encoding method, video decoding method, and related device
KR20240051197A (ko) 비디오 인코딩 및 디코딩 방법, 장치, 저장 매체, 전자 기기 및 컴퓨터 프로그램 제품
CN112565767B (zh) 视频解码方法、视频编码方法及相关设备
CN115086656A (zh) 视频编解码方法、装置、计算机可读介质及电子设备
WO2022193870A1 (zh) 视频编解码方法、装置、计算机可读介质及电子设备
CN115086655A (zh) 视频编解码方法、装置、计算机可读介质及电子设备
CN114071158A (zh) 视频编解码中的运动信息列表构建方法、装置及设备
CN115209157A (zh) 视频编解码方法、装置、计算机可读介质及电子设备
CN112532989B (zh) 视频编码方法、视频解码方法及相关设备
CN112543333B (zh) 视频解码方法、视频编码方法及相关设备
WO2022037464A1 (zh) 视频解码方法、视频编码方法、装置、设备及存储介质
CN116805969A (zh) 视频编解码方法、装置、计算机可读介质及电子设备
CN114374849A (zh) 一种候选运动信息列表确定方法、装置、电子设备及存储介质
CN115209141A (zh) 视频编解码方法、装置、计算机可读介质及电子设备
CN115209146A (zh) 视频编解码方法、装置、计算机可读介质及电子设备
CN118101958A (zh) 视频编解码方法、装置、计算机可读介质及电子设备
CN117560502A (zh) 视频编码方法、装置、计算机可读介质及电子设备
CN114079782A (zh) 视频图像重建方法、装置、计算机设备及存储介质
CN114079788A (zh) 视频编解码中的运动信息列表构建方法、装置及设备
CN115086654A (zh) 视频编解码方法、装置、计算机可读介质及电子设备
CN114979655A (zh) 视频编解码方法、装置、计算机可读介质及电子设备

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40074024

Country of ref document: HK