CN116708797A - 运动信息存储方法及装置 - Google Patents
运动信息存储方法及装置 Download PDFInfo
- Publication number
- CN116708797A CN116708797A CN202310530937.9A CN202310530937A CN116708797A CN 116708797 A CN116708797 A CN 116708797A CN 202310530937 A CN202310530937 A CN 202310530937A CN 116708797 A CN116708797 A CN 116708797A
- Authority
- CN
- China
- Prior art keywords
- block
- sample
- parameter
- distance
- weight coefficient
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 183
- 238000003860 storage Methods 0.000 title claims description 78
- 238000004364 calculation method Methods 0.000 claims description 74
- 230000011218 segmentation Effects 0.000 claims description 51
- 230000006870 function Effects 0.000 claims description 41
- 239000013598 vector Substances 0.000 description 94
- 230000008569 process Effects 0.000 description 84
- 238000013139 quantization Methods 0.000 description 84
- 230000004927 fusion Effects 0.000 description 58
- 238000012545 processing Methods 0.000 description 52
- 238000005192 partition Methods 0.000 description 43
- 238000009795 derivation Methods 0.000 description 33
- 241000023320 Luma <angiosperm> Species 0.000 description 30
- 239000000872 buffer Substances 0.000 description 30
- 230000006854 communication Effects 0.000 description 30
- 238000004891 communication Methods 0.000 description 30
- 238000010586 diagram Methods 0.000 description 30
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical group COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 30
- 238000001914 filtration Methods 0.000 description 24
- 238000000638 solvent extraction Methods 0.000 description 22
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 19
- 238000003491 array Methods 0.000 description 18
- 230000002123 temporal effect Effects 0.000 description 13
- 238000002156 mixing Methods 0.000 description 12
- 230000005540 biological transmission Effects 0.000 description 11
- 230000003044 adaptive effect Effects 0.000 description 10
- 230000009466 transformation Effects 0.000 description 10
- 230000006835 compression Effects 0.000 description 9
- 238000007906 compression Methods 0.000 description 9
- 101710159910 Movement protein Proteins 0.000 description 8
- 238000013507 mapping Methods 0.000 description 8
- 238000000926 separation method Methods 0.000 description 8
- 101100449691 Schizosaccharomyces pombe (strain 972 / ATCC 24843) gsf2 gene Proteins 0.000 description 7
- 238000012546 transfer Methods 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 238000007781 pre-processing Methods 0.000 description 5
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 4
- 101150114515 CTBS gene Proteins 0.000 description 4
- 239000011449 brick Substances 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000010276 construction Methods 0.000 description 4
- 238000003709 image segmentation Methods 0.000 description 4
- 239000004973 liquid crystal related substance Substances 0.000 description 4
- 238000012805 post-processing Methods 0.000 description 4
- 230000001629 suppression Effects 0.000 description 4
- 230000002457 bidirectional effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 235000019800 disodium phosphate Nutrition 0.000 description 3
- 238000006073 displacement reaction Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 230000005484 gravity Effects 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 101150039623 Clip1 gene Proteins 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000007620 mathematical function Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- IESVDEZGAHUQJU-ZLBXKVHBSA-N 1-hexadecanoyl-2-(4Z,7Z,10Z,13Z,16Z,19Z-docosahexaenoyl)-sn-glycero-3-phosphocholine Chemical compound CCCCCCCCCCCCCCCC(=O)OC[C@H](COP([O-])(=O)OCC[N+](C)(C)C)OC(=O)CC\C=C/C\C=C/C\C=C/C\C=C/C\C=C/C\C=C/CC IESVDEZGAHUQJU-ZLBXKVHBSA-N 0.000 description 1
- 238000012935 Averaging Methods 0.000 description 1
- 101710121996 Hexon protein p72 Proteins 0.000 description 1
- 101710125418 Major capsid protein Proteins 0.000 description 1
- 238000012952 Resampling Methods 0.000 description 1
- 101100030351 Schizosaccharomyces pombe (strain 972 / ATCC 24843) dis2 gene Proteins 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000009966 trimming Methods 0.000 description 1
- 238000005303 weighing Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
- H04N19/137—Motion inside a coding unit, e.g. average field, frame or block difference
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/537—Motion estimation other than block-based
- H04N19/543—Motion estimation other than block-based using regions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/109—Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/167—Position within a video image, e.g. region of interest [ROI]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/186—Methods 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 a colour or a chrominance component
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/20—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Physics & Mathematics (AREA)
- Discrete Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Image Analysis (AREA)
Abstract
一种运动信息存储方法,包括:确定当前块中的样本集与共同边界之间的距离;将所述距离与阈值进行比较,以确定是否为所述样本集存储第三运动信息,其中,所述第三运动信息通过第一运动信息和第二运动信息推导。
Description
本申请是分案申请,原申请的申请号是201980099675.7,原申请日是2019年8月26日,原申请的全部内容通过引用结合在本申请中。
技术领域
本申请实施例大体上涉及视频译码领域,更具体地,涉及帧间预测。
背景技术
视频译码(视频编码和解码)广泛用于数字视频应用,例如广播数字TV、通过互联网和移动网络传输视频、实时会话应用(如视频聊天)、视频会议、DVD和蓝光光盘、视频内容采集和编辑系统,以及安全应用的摄像机。
即使在视频较短的情况下也需要对大量的视频数据进行描述,当数据要在带宽容量受限的通信网络中发送或以其它方式发送时,这样会造成困难。因此,视频数据通常要先压缩然后在现代电信网络中发送。由于内存资源有限,当在存储设备中存储视频时,视频的大小也会成为问题。视频压缩设备通常在信源侧使用软件和/或硬件,以在发送或存储之前对视频数据进行译码,从而减少用来表示数字视频图像所需的数据量。然后,压缩数据在目的侧由用于对视频数据进行解码的视频解压缩设备接收。在有限的网络资源以及对更高视频质量的需求不断增长的情况下,需要改进压缩和解压缩技术,这些改进的技术在几乎不影响图像质量的情况下能够提高压缩比。
发明内容
本申请实施例提供根据独立权利要求请求保护的用于编码和解码的装置和方法。
上述和其它目的通过独立权利要求请求保护的主题实现。其它实现方式从从属权利要求、说明书和附图中是显而易见的。
本申请第一方面公开了一种运动信息存储方法,当前块由第一子块和第二子块组成,所述第一子块和所述第二子块由共同边界分隔,所述第一子块对应第一运动信息,所述第二子块对应第二运动信息,所述方法包括:确定当前块中的样本集与共同边界之间的距离;将所述距离与阈值进行比较,以确定是否为所述样本集存储第三运动信息,其中,所述第三运动信息通过所述第一运动信息和所述第二运动信息推导。
在一种可行的实现方式中,将所述距离与阈值进行比较,以确定是否为所述样本集存储所述第三运动信息,包括:在所述距离的绝对值小于或等于所述阈值的情况下,确定为所述样本集存储所述第三运动信息。
在一种可行的实现方式中,在所述距离的所述绝对值大于所述阈值的情况下,所述方法还包括:在所述距离为正的情况下,确定为所述样本集存储所述第一运动信息;或,在所述距离为负的情况下,确定为所述样本集存储所述第二运动信息。
在一种可行的实现方式中,所述阈值是预定的。
在一种可行的实现方式中,所述阈值基于所述共同边界与水平方向或垂直方向之间的几何关系。
在一种可行的实现方式中,所述阈值基于所述共同边界的垂直方向与所述水平方向或所述垂直方向之间的角度。
在一种可行的实现方式中,所述阈值基于所述当前块的宽度和/或高度。
在一种可行的实现方式中,在确定所述当前块中的所述样本集与所述共同边界之间的距离之前,所述共同边界通过角度参数和距离参数确定,所述方法还包括:确定所述角度参数和所述距离参数。
在一种可行的实现方式中,在解码器中,确定所述角度参数和所述距离参数,包括:从码流解析出所述角度参数和所述距离参数;或,从所述码流解析出指示符,根据所述指示符获取所述角度参数和所述距离参数。
在一种可行的实现方式中,在确定所述角度参数和所述距离参数之后,所述方法还包括:根据所述角度参数确定第一计算参数;根据所述角度参数计算临时角度参数;根据所述临时角度参数确定第二计算参数;根据所述角度参数和所述距离参数计算第三计算参数。
在一种可行的实现方式中,所述第一计算参数通过根据所述角度参数检查预设查找表确定,所述第二计算参数通过根据所述临时角度参数检查所述查找表确定,其中,所述第一计算参数和所述第二计算参数分别为同一角度的余弦值和正弦值。
在一种可行的实现方式中,所述距离通过以下公式计算:
distFromLine=(x+K)*P1+(y+K)*P2–P3
其中,P1、P2和P3分别为所述第一计算参数、所述第二计算参数和所述第三计算参数,distFromLine表示所述距离,K为非负整数,x表示所述样本集中目标位置的横坐标,y表示所述目标位置在直角坐标系中的纵坐标,其中,所述当前块的左上样本的位置设置为坐标原点,右方向设置为正水平方向,下方向设置为正垂直方向。
在一种可行的实现方式中,K等于1。
在一种可行的实现方式中,所述目标位置在所述样本集中预定。
在一种可行的实现方式中,所述预定的位置是所述样本集的左上位置,或所述样本集的中心位置。
在一种可行的实现方式中,所述距离的所述样本精度高于整数样本;对应地,所述距离通过以下公式计算:
distFromLine=((x<<N)+K)*P1+((y<<N)+K)*P2–P3
其中,2N表示所述距离的所述样本精度的倒数。
在一种可行的实现方式中,N等于1。
在一种可行的实现方式中,所述样本集为所述当前块的亮度样本集。
在一种可行的实现方式中,在确定所述当前块中的所述样本集与所述共同边界之间的距离之前,所述方法还包括:将所述当前块划分为多个样本集,其中,所述多个样本集中的每个样本集的大小与所述样本集相同;或,将所述当前块设置为所述样本集。
在一种可行的实现方式中,所述样本集是4×4样本阵列。
在一种可行的实现方式中,所述多个样本集中的每个样本集对应每个运动信息存储单元,所述运动信息存储单元用于存储所述第一运动信息、所述第二运动信息和所述第三运动信息中的一个。
在一种可行的实现方式中,所述第一子块和所述第二子块为三角部分、梯形部分或非对称矩形部分。
在一种可行的实现方式中,所述第一运动信息包括基于第一参考图像列表的运动信息,所述第二运动信息包括基于第二参考图像列表的运动信息,所述第三运动信息包括所述第一运动信息和所述第二运动信息。
本申请第二方面公开了一种用于对视频流进行解码的装置,包括处理器和存储器。所述存储器存储指令,所述指令使所述处理器执行第一方面提供的方法。
本申请第三方面公开了一种用于对视频流进行编码的装置,包括处理器和存储器。所述存储器存储指令,所述指令使所述处理器执行第一方面提供的方法。
第四方面提供了一种计算机可读存储介质,其中存储有指令,当所述指令被执行时,使一个或多个处理器编码视频数据。所述指令使所述一个或多个处理器执行第一方面提供的方法。
第五方面提供一种计算机程序,包括程序代码,当所述程序代码在计算机上执行时,执行第一方面提供的方法。
附图及以下说明中将详细描述一个或多个实施例。其它特征、目标和优点在说明书、附图以及权利要求中显而易见。
附图说明
下面结合附图对本申请实施例进行详细描述。
图1A为用于实现本申请实施例的视频译码系统的一个示例的框图。
图1B为用于实现本申请实施例的视频译码系统的另一个示例的框图。
图2为用于实现本申请实施例的视频编码器的一个示例的框图。
图3为用于实现本申请实施例的视频解码器的示例性结构的框图。
图4为编码装置或解码装置的一个示例的框图。
图5为编码装置或解码装置的另一个示例的框图。
图6为空间融合候选的位置的一个示例的图。
图7为考虑用于空间融合候选的冗余检查的候选对的一个示例的图。
图8为用于时间融合候选的运动矢量缩放的一个示例的图;
图9为用于大小为8×8亮度样本的预测块的运动矢量存储的一个示例的图。
图10为基于三角分割的帧间预测的一个示例的图。
图11为用于三角分割模式的单向预测MV选择的一个示例的图。
图12为在混合过程中使用的权重的一个示例的图。
图13为用于三角分割模式的运动矢量存储的一个示例的图。
图14为不同几何分割的一个示例的图。
图15为GEO分割参数的一个示例的图。
图16为混合操作的一个示例的图。
图17为用于混合操作的查找表的一个示例的图。
图18为具有整数位置和半像素位置的4×4运动存储示例的一个示例的图。
图19为运动存储方法的一个示例的图。
图20为运动信息存储方法的一个示例的框图。
图21为运动信息存储装置的一个示例的框图;
图22为实现内容分发服务的内容供应系统3100的示例性结构的框图。
图23为终端设备的一个示例的结构的框图。
下文中,除非另外明确说明,否则相同的附图标记指代相同或至少功能等同的特征。
具体实施方式
在以下描述中,参考构成本发明的一部分的附图,这些附图通过说明的方式示出本申请的实施例的特定方面或可以使用本申请的实施例的具体方面。应理解,本申请的实施例可以用于其它方面,并且包括在附图中未描绘的结构上或逻辑上的变化。因此,以下详细描述不作为限制意义,并且本申请的范围由所附权利要求限定。
例如,应理解,参考所描述的方法公开的内容对于用于执行该方法的对应的设备或系统也可以成立,反之亦然。例如,如果描述了一个或多个特定的方法步骤,则对应的设备可以包括一个或多个单元,例如用于执行所描述的一个或多个方法步骤的功能单元(例如,执行一个或多个步骤的一个单元;或者多个单元,每个单元执行多个步骤中的一个或多个),即使一个或多个单元在附图中未明确描述或示出时也是如此。此外,例如,如果根据一个或多个单元(例如功能单元)来描述特定装置,则对应的方法可以包括用于执行一个或多个单元的功能的一个步骤(例如执行一个或多个单元的功能的一个步骤,或多个步骤,每个步骤执行多个单元中的一个或多个单元的功能),即使一个或多个步骤在附图中未明确描述或示出时也是如此。此外,应理解,除非特别指出,否则本文描述的各种示例性实施例和/或方面的特征可以彼此组合。
视频译码通常是指对构成视频或视频序列的图像序列进行处理。在视频译码领域中,术语“帧(frame)”可以代替术语“图像(picture或image)”。视频译码(或通常称为译码)包括视频编码和视频解码两部分。视频编码在源端执行,并且通常包括处理(例如,通过压缩)原始视频图像,以减少表示视频图像所需的数据量(以获得更高效的存储和/或传输)。视频解码在目的端执行,并且通常包括相对于编码器的逆处理以重建视频图像。实施例涉及的视频图像(或通常称为图像)的“译码”应理解为视频图像或各自视频序列的“编码”或“解码”。编码部分和解码部分的组合也称为编解码器(编码和解码,CODEC)。
在无损视频译码的情况下,可以对原始视频图像进行重建,即,重建的视频图像与原始视频图像具有相同的质量(假设在存储或传输期间没有传输损失或其它数据损失)。在有损视频译码的情况下,通过量化等方式进行进一步压缩,以减少表示视频图像所需的数据量,在解码端无法完全重建视频图像,即,重建的视频图像的质量比原始视频图像的质量低或差。
若干视频编码标准属于“有损混合视频编解码”组(即,将样本域中的空间和时间预测与2D变换译码相结合,以在变换域中进行量化)。视频序列的每个图像通常分割为一组不重叠的块,并且通常在块级别上进行译码。换句话说,在编码端,通常在块(视频块)级别上对视频进行处理(即,编码),例如,通过使用空间(帧内图像)预测和/或时间(帧间图像)预测来生成预测块,从当前块(当前处理/待处理块)中减去预测块以获得残差块,变换残差块并在变换域中量化残差块以减少待发送(压缩)的数据量,而在解码端,相对于编码器的逆处理用于编码的或压缩的块,以重建当前块用于表示。此外,编码器按照解码器处理循环来处理,使得两者生成相同的预测(例如,帧内和帧间预测)和/或重建,用于进行处理,即,对后续块进行译码。
在以下视频译码系统10的实施例中,视频编码器20和视频解码器30根据图1至图3进行描述。
图1A为示例性译码系统10的示意性框图,例如可以使用本申请的技术的视频译码系统10(或简称为译码系统10)。视频译码系统10的视频编码器20(或简称为编码器20)和视频解码器30(或简称为解码器30)表示可以用于根据本申请中描述的各种示例执行技术的设备的示例。
如图1A所示,译码系统10包括源设备12,源设备12用于向目的地设备14等提供编码图像数据21,以对编码数据13进行解码。
源设备12包括编码器20,并且可以另外(即可选地)包括图像源16、预处理器(预处理单元)18(例如图像预处理器18)和通信接口或通信单元22。
图像源16可以包括或可以是:任何类型的图像捕获设备,例如用于捕获真实世界图像的摄像机;和/或任何类型的图像生成设备,例如用于生成计算机动画图像的计算机图形处理器;或用于获取和/或提供真实世界图像、计算机动画图像(例如屏幕内容、虚拟现实(virtual reality,VR)图像),和/或其任何组合(例如增强现实(augmented reality,AR)图像)的任何类型的设备。图像源可以为存储上述图像中任何图像的任何类型的存储器或存储装置。
为了与预处理单元18和由预处理单元18执行的处理进行区分,图像或图像数据17也可以称为原始图像或原始图像数据17。
预处理器18用于接收(原始)图像数据17,并对图像数据17进行预处理,以获得预处理图像19或预处理图像数据19。预处理器18执行的预处理可以包括修正(trimming)、颜色格式转换(例如从RGB到YCbCr)、颜色校正或去噪等。可以理解的是,预处理单元18可以是可选的组件。
视频编码器20用于接收预处理的图像数据19并提供编码图像数据21(例如,下文根据图2进一步详细描述)。
源设备12中的通信接口22可以用于:接收编码图像数据21并通过通信信道13向目的地设备14等另一个设备或任何其它设备发送编码图像数据21(或任何其它处理后的版本),以用于存储或直接重建。
目的地设备14包括解码器30(例如视频解码器30),并且可以另外(即可选地)包括通信接口或通信单元28、后处理单元32(或后处理单元32)和显示设备34。
目的地设备14的通信接口28用于例如直接从源设备12,或从任何其它源(例如存储设备,例如编码图像数据存储设备)接收编码图像数据21或(或任何其它处理后的版本),并将编码图像数据21提供给解码器30。
通信接口22和通信接口28可以用于通过源设备12与目的地设备14之间的直接通信链路(例如直接有线或无线连接),或者通过任何类型的网络(例如有线网络、无线网络、有线网络和无线网络的任何组合、任何类型的私网和公网、任何类型的私网和公网的组合),发送或接收编码图像数据21或编码数据13。
例如,通信接口22可以用于将编码图像数据21封装为报文等合适的格式,和/或使用任何类型的传输编码或处理来处理编码图像数据,以便在通信链路或通信网络上进行传输。
通信接口28与通信接口22对应,例如,可以用于接收所发送数据,并使用任何类型的对应传输解码或处理和/或解封装过程对传输数据进行处理,以获得编码图像数据21。
通信接口22和通信接口28均可配置为如图1A中从源设备12指向目的地设备14的通信信道13的箭头所表示的单向通信接口,或配置为双向通信接口,并且可用于发送和接收消息,建立连接,确认并交换与通信链路和/或数据传输(例如编码图像数据传输)相关的任何其它信息等。
解码器30用于接收编码图像数据21并提供解码图像数据31或解码图像31(例如,下文根据图3或图5进一步详细描述)。
目的地设备14的后处理器32用于对解码图像数据31(也称为重建图像数据),例如解码图像31,进行后处理,以获得后处理图像数据33,例如后处理图像33。由后处理单元32执行的后处理可以包括颜色格式转换(例如从YCbCr到RGB)、颜色校正、修剪或重新采样或任何其它处理,以例如准备解码图像数据31,用于通过显示设备34等进行显示。
目的地设备14的显示设备34用于接收后处理图像数据33,以例如向用户或观看者显示图像。显示设备34可以是或包括用于呈现重建图像的任何类型的显示器,例如集成的或外部的显示器或监控器。例如,显示器可以包括液晶显示器(liquid crystal display,LCD)、有机发光二极管(organic light emitting diode,OLED)显示器、等离子显示器、投影仪、微LED显示器,硅上液晶(liquid crystal on silicon,LCOS)、数字光处理器(digital light processor,DLP)或任何类型的其它显示器。
尽管图1A将源设备12和目的地设备14描绘为的设备,但是设备的实施例也可以包括这两种设备或这两种设备的功能,即包括源设备12或对应的功能与目的地设备14或对应的功能。在此类实施例中,源设备12或对应的功能与目的地设备14或对应的功能可以通过相同的硬件和/或软件、通过单独的硬件和/或软件或其任何组合来实现。
根据以上描述,对于本领域技术人员来说显而易见的是,图1A中所示的源设备12和/或目的地设备14的不同单元或功能的存在和(精确)功能划分可以根据实际设备和应用而变化。
编码器20(例如视频编码器20)或解码器30(例如视频解码器30)或两者都可通过如图1B所示的处理电路如一个或多个微处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)、离散逻辑、硬件、视频译码专用处理器或其任何组合来实现。编码器20可以通过处理电路46实现,以实现结合图2的编码器20和/或本文描述的任何其它编码器系统或子系统所讨论的各种模块。解码器30可以通过处理电路46实现,以实现结合图3的解码器30所讨论的各种模块和/或本文所描述的任何其它解码器系统或子系统。处理电路可以用于执行本文所描述的各种操作。如图5所示,如果这些技术部分地在软件中实现,则设备可以将软件指令存储在合适的非瞬时性计算机可读存储介质中,并且可以通过一个或多个处理器在硬件中执行这些指令,以执行本发明的技术。视频编码器20和视频解码器30中任何一个可以作为组合编解码器(encoder/decoder,CODEC)的一部分集成在单个设备中,如图1B所示。
源设备12和目的地设备14可以包括多种设备中的任一种,包括任何类型的手持设备或固定设备,例如,笔记本电脑或膝上型电脑、手机、智能手机、平板或平板电脑、摄像机、台式计算机、机顶盒、电视机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备(如内容业务服务器或内容分发服务器)、广播接收器设备、广播发送器设备等,并且可以使用或不使用任何类型的操作系统。在一些情况下,源设备12和目的地设备14可以用于无线通信。因此,源设备12和目的地设备14可以是无线通信设备。
在一些情况下,图1A所示的视频译码系统10仅是示例,本申请的技术可以应用于视频译码设置(例如,视频编码或视频解码),不一定包括编码设备与解码设备之间的任何数据通信。在其它示例中,数据可以从本地存储器检索、通过网络流式传输等。视频编码设备可以对数据进行编码并将数据存储到存储器,和/或视频解码设备可以从存储器检索和解码数据。在一些示例中,编码和解码由不彼此通信但简单地将数据编码到存储器和/或从存储器检索和解码数据的设备执行。
为便于描述,例如,参考由ITU-T视频编码专家组(video coding experts group,VCEG)和ISO/IEC运动图像专家组(motion picture experts group,MPEG)的视频编码联合工作组(joint collaboration team on video coding,JCT-VC)开发的高效视频编码(high-efficiency video coding,HEVC)、通用视频编码(versatile video coding,VVC)参考软件、下一代视频编码标准描述本申请实施例。本领域普通技术人员应理解本申请的实施例不限于HEVC或VVC。
编码器和编码方法
图2为用于实现本申请的技术的示例性视频编码器20的示意性框图。在图2的示例中,视频编码器20包括输入端201(或输入接口201)、残差计算单元204、变换处理单元206、量化单元208、反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲区(decoded picture buffer,DPB)230、模式选择单元260、熵译码单元270和输出端272(或输出接口272)。模式选择单元260可以包括帧间预测单元244、帧内预测单元254和分割单元262。帧间预测单元244可以包括运动估计单元和运动补偿单元(图中未示出)。根据混合视频编解码器,图2所示的视频编码器20也可以称为混合视频编码器或视频编码器。
残差计算单元204、变换处理单元206、量化单元208和模式选择单元260组成编码器20的前向信号路径;反量化单元210、逆变换处理单元212、重建单元214、缓冲区216、环路滤波器220、解码图像缓冲区(decoded picture buffer,DPB)230、帧间预测单元244和帧内预测单元254组成视频编码器20的反向信号路径,其中,视频编码器20的反向信号路径对应于解码器(参见图3的解码器30)的信号路径。反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲区230、帧间预测单元244和帧内预测单元254还组成视频编码器20的“内置解码器”。
图像和图像分割(图像和块)
编码器20可以用于通过输入端201等接收图像17(或图像数据17),例如,形成视频或视频序列的图像序列中的图像。接收到的图像或图像数据还可以是预处理图像19(或预处理图像数据19)。为简单起见,以下描述中称为图像17。图像块17还可以称为当前图像或待编码图像(特别是在视频编码中,将当前图像与其它图像区分开来,其它图像例如是同一视频序列(即,也包括当前图像的视频序列)中之前编码和/或解码的图像)。
(数字)图像是或可以看作具有强度值的二维样本阵列或矩阵。阵列中的样本也可以称为像素(pixel/pel)(图像元素的简称)。阵列或图像的水平和垂直方向(或轴线)上的样本的数量定义图像的大小和/或分辨率。通常使用三个颜色分量来表示颜色,即,可以通过三个样本阵列来表示图像或图像可以包括三个样本阵列。在RBG格式或色彩空间中,图像包括对应的红、绿、蓝样本阵列。但是,在视频译码中,每个像素通常以亮度和色度格式或颜色空间表示,例如YCbCr,其包括Y表示的亮度分量(有时也用L代替)以及Cb和Cr表示的两个色度分量。亮度分量Y表示亮度或灰度强度(例如在灰度级图像中),而两个色度分量Cb和Cr表示色度或颜色信息分量。相应地,YCbCr格式的图像包括亮度样本值的亮度样本阵列(Y)和色度值的两个色度样本阵列(Cb和Cr)。RGB格式的图像可以转换或变换为YCbCr格式,反之亦然,该过程也称为颜色变换或转换。如果图像是黑白的,则该图像可以只包括亮度样本阵列。相应地,图像可以为例如黑白格式的亮度样本阵列或4:2:0、4:2:2和4:4:4彩色格式的亮度样本阵列和两个对应的色度样本阵列。
在视频编码器20的实施例中,视频编码器20可以包括图像分割单元(图2中未示出),用于将图像17分割为多个(通常是不重叠的)图像块203。这些块也可以称为根块或宏块(H.264/AVC标准)或称为译码树块(coding tree block,CTB)或译码树单元(codingtree unit,CTU)(H.265/HEVC和VVC标准)。图像分割单元可以用于对视频序列中的所有图像和定义块大小的对应的栅格使用相同的块大小,或者改变图像或子集或图像组之间的块大小,并将每个图像分割为对应的块。
在其它实施例中,视频编码器可以用于直接接收图像17的块203,例如,组成图像17的一个、若干个或所有块。图像块203也可以称为当前图像块或待编码图像块。
尽管图像块203的尺寸小于图像17,但是与图像17一样,块203也是或也可以被认为是具有强度值(样本值)的样本的二维阵列或矩阵。换句话说,块203例如可以包括一个样本阵列(例如,在黑白图像17的情况下,亮度阵列)、三个样本阵列(例如,在彩色图像17的情况下,一个亮度阵列和两个色度阵列)或任何其它数量和/或类型的阵列,这取决于应用的颜色格式。块203在水平和垂直方向(或轴线)上的样本的数量定义了块203的大小。相应地,某图像块可以为M×N(M列×N行)个样本阵列,或M×N个变换系数阵列等。
在图2所示的视频编码器20的实施例中,视频编码器20可以用于对图像17逐块地进行编码,例如对每个块203执行编码和预测。
在图2所示的视频编码器20的实施例中,视频编码器20还可以用于采用条带(slice)(也称为视频条带)对图像进行分割和/或编码,其中,图像可以采用一个或多个条带(通常是不重叠的条带)进行分割或编码,每个条带可以包括一个或多个块(如CTU)或一个或多个块组(例如H.265/HEVC和VVC标准中的分块(tile)或VVC标准中的砖(brick))。
在图2所示的视频编码器20的实施例中,视频编码器20还可以用于使用条带/分块组(也称为视频分块组)和/或分块(也称为视频分块)对图像进行分割和/或编码,其中,可以使用一个或多个分块组(通常是不重叠的)对图像进行编码或可以将图像分割为一个或多个条带/分块组,并且每个条带/分块组可以包括一个或多个块(例如CTU)或一个或多个分块,其中,每个分块可以是矩形并且可以包括一个或多个块(例如CTU),例如全部或部分块。
残差计算
残差计算单元204可以用于根据图像块203和预测块265(后面会详细描述预测块265)计算残差块205(也称为残差205),例如,逐样本(逐像素)从图像块203的样本值中减去预测块265的样本值,以获得样本域中的残差块205。
变换
变换处理单元206可以用于对残差块205的样本值进行变换,例如离散余弦变换(discrete cosine transform,DCT)或离散正弦变换(discrete sine transform,DST),以获得变换域中的变换系数207。变换系数207也可以称为变换残差系数,并且表示变换域中的残差块205。
变换处理单元206可以用于应用DCT/DST的整数近似,例如针对H.265/HEVC指定的变换。与正交DCT变换相比,此类整数近似通常通过某个因子进行缩放。使用其它缩放因子作为变换过程的一部分,以维持经过前向变换和反向变换处理的残差块的范数。通常根据某些限制来选择缩放因子,例如缩放因子为移位运算的2的幂次方、变换系数的位深度、精度和实现成本之间的权衡等。例如,通过逆变换处理单元212指定用于逆变换的特定缩放因子(以及在视频解码器30中通过逆变换处理单元312等为对应的逆变换指定缩放因子),在编码器20中可以相应地通过变换处理单元206等指定用于正向变换的对应的缩放因子。
在视频编码器20的实施例中,例如,视频编码器20(对应地,变换处理单元206)可以用于直接输出或通过熵译码单元270进行编码或压缩后输出一种或多种变换类型的变换参数,使得视频解码器30可以接收并使用变换参数进行解码。
量化
量化单元208可以用于对变换系数207进行量化(例如进行标量量化或矢量量化),以获得量化系数209。量化系数209也可以称为量化变换系数209或量化残差系数209。
量化过程可以减小与部分或全部变换系数207相关的位深度。例如,可以在量化期间将n位变换系数向下舍入到m位变换系数,其中,n大于m,可以通过调整量化参数(quantization parameter,QP)修改量化程度。例如,对于标量量化,可以进行不同的缩放来实现更精细或更粗略的量化。量化步长大小越小,量化越精细;量化步长大小越大,量化越粗略。合适的量化步长大小可以通过量化参数(quantization parameter,QP)来表示。例如,量化参数可以是适用于预定义的一组合适的量化步长大小的索引。例如,小的量化参数可以对应精细的量化(小量化步长大小),而大的量化参数可以对应粗略的量化(大量化步长大小),反之亦然。量化操作可以包括除以量化步长,而反量化单元210等执行的对应解量化和/或反解量化操作可以包括乘以量化步长。根据一些标准(例如HEVC),实施例中可以使用量化参数来确定量化步长大小。通常,可以通过包括除法的方程的定点近似、根据量化参数计算量化步长大小。可以将其它缩放因子引入量化和解量化,用于恢复残差块的范数,因为量化步长大小和量化参数的方程的定点近似中使用缩放,所以可以修改该范数。在一种示例性实现方式中,可以合并逆变换和解量化中的缩放。或者,可以使用自定义量化表,并且例如在码流中将该自定义量化表从编码器发送到解码器。量化为有损操作,损耗随量化步长大小的增加而增加。
在视频编码器20的实施例中,视频编码器20(对应地,量化单元208)可以用于,例如,直接输出或经熵译码单元270进行编码后输出量化参数(quantization parameter,QP),使得视频解码器30可以接收并使用量化参数进行解码。
反量化
反量化单元210用于对量化系数执行量化单元208所执行的量化的反量化,以获得解量化系数211,例如,根据或使用与量化单元208相同的量化步长执行与量化单元208所执行的量化方案的反量化方案。解量化系数211也可以称为解量化残差系数211,其对应于变换系数207,但是由于量化造成损耗,所以解量化系数211通常与变换系数不完全相同。
逆变换
逆变换处理单元212用于执行变换处理单元206所执行的变换的逆变换,例如,逆离散余弦变换(discrete cosine transform,DCT)或逆离散正弦变换(discrete sinetransform,DST),以获得样本域中的重建残差块213(或对应的解量化系数213)。重建残差块213也可以称为变换块213。
重建
重建单元214(例如,加法器或求和器214)用于将变换块213(即重建残差块213)与预测块265相加,例如,将重建残差块213的样本值和预测块265的样本值逐样本进行相加,以获得样本域中的重建块215。
滤波
环路滤波单元220(或简称为“环路滤波器”220)用于对重建块215进行滤波,以获得滤波块221,或通常用于对重建样本进行滤波,以获得滤波样本值。例如,环路滤波单元用于平滑像素的突变或提高视频质量。环路滤波单元220可以包括一个或多个环路滤波器,例如去块效应滤波器、样本自适应偏移(sample-adaptive offset,SAO)滤波器或一个或多个其它滤波器,例如自适应环路滤波器(adaptive loop filter,ALF)、噪声抑制滤波器(noise suppression filter,NSF)或其任何组合。例如,环路滤波单元220可以包括去块效应滤波器、SAO滤波器和ALF滤波器滤波过程的顺序可以是去块效应滤波、SAO滤波和ALF滤波。在另一个示例中,增加一种称为亮度映射色度缩放(luma mapping with chromascaling,LMCS)(即自适应环内整形器)的过程。该过程在去块效应滤波之前执行。在另一个示例中,去块效应滤波过程也可以应用于内部子块边缘,例如仿射子块边缘、ATMVP子块边缘、子块变换(sub-block transform,SBT)边缘和帧内子划分(intra sub-partition,ISP)边缘。尽管在图2中环路滤波单元220示出为环内滤波器,但在其它配置中,环路滤波单元220可以实现为后环路滤波器。滤波块221也可以称为滤波重建块221。
在视频编码器20的实施例中,视频编码器20(对应地,环路滤波单元220)可以用于直接输出或通过熵译码单元270进行编码后输出环路滤波参数(例如SAO滤波参数、ALF滤波参数或LMCS参数),使得解码器30可以接收并使用相同或不同的环路滤波参数进行解码。
解码图像缓冲区
解码图像缓冲区(decoded picture buffer,DPB)230可以是存储参考图像或通常存储参考图像数据的存储器,以在视频编码器20对视频数据进行编码时使用。DPB 230可以由各种存储器设备中的任一种形成,例如动态随机存取存储器(dynamic random accessmemory,DRAM)(包括同步DRAM(synchronous DRAM,SDRAM))、磁阻RAM(magneto resistiveRAM,MRAM)、电阻RAM(resistive RAM,RRAM)或其它类型的存储器设备。解码图像缓冲区(decoded picture buffer,DPB)230可用于存储一个或多个滤波块221。解码图像缓冲区230还可以用于存储相同的当前图像或不同图像(例如之前重建的图像)的其它之前滤波的块(例如之前重建的和滤波的块221),并且可以提供完整的之前重建的(即解码的)图像(以及对应的参考块和样本)和/或部分重建的当前图像(以及对应的参考块和样本),以例如用于帧间预测。解码图像缓冲区230还可以用于存储一个或多个未滤波的重建块215,或通常存储未滤波的重建样本,例如,未经环路滤波单元220滤波的重建块215,或未进行任何其它处理的重建块或重建样本。
模式选择(分割和预测)
模式选择单元260包括分割单元262、帧间预测单元244和帧内预测单元254,并且用于从解码图像缓冲区230或其它缓冲区(例如,行缓冲区,图中未示出)接收或获得原始图像数据如原始块203(当前图像17的当前块203),以及重建图像数据如同一(当前)图像和/或一个或多个之前解码的图像的滤波和/或未经滤波的重建样本或重建块。重建图像数据用作帧间预测或帧内预测等预测所需的参考图像数据,以获得预测块265或预测值265。
模式选择单元260可以用于为当前块预测模式(包括不分割模式)和预测模式(例如帧内或帧间预测模式)确定或选择分割模式,并生成对应的预测块265,该预测块用于残差块205的计算以及重建块215的重建。
在模式选择单元260的实施例中,模式选择单元260可以用于选择分割和预测模式(例如,从模式选择单元260支持或可用的模式中选择)。分割和预测模式提供最佳匹配,即最小残差(最小残差更有利于压缩,以便传输或存储),或提供最小指示(signaling)开销(最小指示开销更有利于压缩,以便传输或存储),或者同时考虑以上两者或在以上两者中取得平衡。模式选择单元260可用于根据率失真优化(rate distortion optimization,RDO)确定分割和预测模式,即选择提供最小率失真的预测模式。本文中“最佳”、“最小”、“最优”等术语不一定指总体上“最佳”、“最小”、“最优”等,也可以指满足终止或选择标准的情况,例如,某个值超过或低于阈值或其它限制,可能导致“次优选择”,但会降低复杂度和处理时间。
换句话说,分割单元262可以用于例如,通过迭代地使用四叉树分割(quad-tree-partitioning,QT)、二叉树分割(binary partitioning,BT)或三叉树分割(triple-tree-partitioning,TT)或其任何组合,将视频序列的图像分割为一系列译码树单元(codingtree unit,CTU),并将CTU 203进一步分割为较小的块部分或子块(它们再次形成块),并且分割单元262可以用于例如对块部分或子块中的每一个进行预测,其中,模式选择包括选择分割的块203的树结构以及应用于每个块部分或子块的预测模式。
下文详细描述由视频编码器20执行的分割(例如,由分割单元260执行)处理和预测处理(例如,由帧间预测单元244和帧内预测单元254执行)。
分割模块
分割单元262可以用于将视频序列中的图像分割为一系列译码树单元(codingtree unit,CTU),分割单元262可以将译码树单元(coding tree unit,CTU)203分割(或划分)为较小的部分,例如正方形或矩形小块。对于具有三个样本阵列的图像,CTU由一个N×N的亮度样本块和两个对应的色度样本块组成。在开发中的通用视频编码(versatile videocoding,VVC)中,CTU中的亮度块的最大允许大小指定为128×128,但是将来可以指定为不同于128×128的值,例如256×256。图像的CTU可以聚集/分组为条带/分块组、分块或砖。分块覆盖图像的矩形区域,分块可以划分为一个或多个砖。砖由分块中的多个CTU行组成。没有分割为多个砖的分块可以称为砖。但是,砖是分块的真子集,不称为分块。VVC支持两种分块组模式,即光栅扫描条带/分块组模式和矩形条带模式。在光栅扫描分块组模式中,条带/分块组包括图像的分块光栅扫描中的一系列分块。在矩形条带模式中,条带包括图像的多个砖,这些砖共同构成图像的矩形区域。矩形条带内的砖是按照条带的砖光栅扫描顺序排列的。这些较小的块(也可以称为子块)可以进一步分割为更小的部分。这也称为树分割或分层树分割,其中,在根树层级0(层级0、深度0)等的根块可以递归地分割为两个或多个下一较低树层级的块,例如树层级1(层级1、深度1)的节点,这些块又可以分割为两个或多个下一较低层级的块,例如树层级2(层级2、深度2)等,直到由于满足结束标准(例如达到最大树深度或最小块大小)而结束分割。未进一步分割的块也称为树的叶块或叶节点。分割为两个部分的树称为二叉树(binary-tree,BT),分割为三个部分的树称为三叉树(ternary-tree,TT),分割为四个部分的树称为四叉树(quad-tree,QT)。
例如,译码树单元(coding tree unit,CTU)可以是或包括:亮度样本的CTB、具有三个样本阵列的图像的色度样本的两个对应的CTB、黑白图像或使用三个单独的颜色平面和用于对样本进行译码的语法结构译码的图像的样本的CTB。对应地,译码树块(codingtree block,CTB)可以是N×N的样本块,其中,N可以设为某个值以将分量分割为CTB,这是一种分割。译码单元(coding unit,CU)可以是或包括:亮度样本的译码块、具有三个样本阵列的图像的色度样本的两个对应的译码块、黑白图像或使用三个单独的颜色平面和用于对样本进行译码的语法结构译码的图像的样本的译码块。对应地,译码块(coding block,CB)可以是M×N的样本块,其中,M和N可以设为某些值以将CTB分割为译码块,这是一种分割。
在实施例中,例如,根据HEVC,可以通过表示为译码树的四叉树结构将译码树单元(coding tree unit,CTU)划分为CU。在叶CU级别上决定是通过帧间(时间)预测还是通过帧内(空间)预测对图像区域进行译码。每个叶CU还可以根据PU划分类型划分为1个、2个或4个PU。在一个PU内,进行相同的预测过程,并且以PU为单位将相关信息发送到解码器。在通过进行预测过程而获得残差块后,根据PU划分类型,可以根据与CU的译码树类似的另一种四叉树结构将叶CU分割为变换单元(transform unit,TU)。
例如,在实施例中,根据当前正在开发的最新视频编码标准(称为通用视频编码(versatile video coding,VVC)),使用嵌套多类型树(例如二叉树和三叉树)的组合四叉树来分割例如用于分割译码树单元的分段结构。在译码树单元内的译码树结构中,CU可以为正方形或矩形。例如,译码树单元(coding tree unit,CTU)首先通过四叉树进行分割。然后,四叉树叶节点可以通过多类型树结构进行进一步分割。多类型树结构中,有四种划分类型:垂直二叉树划分(SPLIT_BT_VER)、水平二叉树划分(SPLIT_BT_HOR)、垂直三叉树划分(SPLIT_TT_VER)和水平三叉树划分(SPLIT_TT_HOR)。多类型树叶节点称为译码单元(coding unit,CU),该分段用于预测和变换处理,无需进一步分割,只有CU对于最大变换长度太大时才需要进一步分割。在大多数情况下,这表示CU、PU和TU在四叉树嵌套多类型树的译码块结构中具有相同的块大小。当最大支持变换长度小于CU的彩色分量的宽度或高度时,就会出现该异常情况。VVC制定了在四叉树嵌套多类型树的编码结构中用于分割划分信息的唯一指示机制。在该指示机制中,译码树单元(coding tree unit,CTU)作为四叉树的根,并且首先通过四叉树结构分割。然后,通过多类型树结构对每个四叉树叶节点(当太大而需要分割时)进行进一步分割。在多类型树结构中,指示第一标志(mtt_split_cu_flag)以表示是否对节点进行进一步分割;当需要对节点进行进一步分割时,指示第二标志(mtt_split_cu_vertical_flag)以表示分割方向,然后指示第三标志(mtt_split_cu_binary_flag)以表示该分割是二叉树分割或三叉树分割。根据mtt_split_cu_vertical_flag和mtt_split_cu_binary_flag的值,CU的多类型树分割模式(MttSplitMode)可以由解码器根据预定义的规则或表格推导。需要说明的是,对于某种设计,例如VVC硬件解码器中的64×64亮度块和32×32色度流水线设计,当亮度译码块的宽度或高度大于64时,都禁止TT划分,如图6所示。当色度译码块的宽度或高度大于32时,也禁止TT划分。流水线设计将图像分割为虚拟流水线数据单元(virtual pipeline data unit,VPDU),这些虚拟流水线数据单元定义为图像中的非重叠单元。在硬件解码器中,连续的VPDU由多个流水线阶段同时处理。在大多数流水线阶段,VPDU大小与缓冲区大小大致成正比,因此保持VPDU大小较小是很重要的。在大多数硬件解码器中,VPDU大小可以设置为最大变换块(transform block,TB)大小。但是,在VVC中,三叉树(ternary tree,TT)分割和二叉树(binary tree,BT)分割会导致VPDU大小变大。另外,需要说明的是,当树节点块的一部分超出图像底边界或右边界时,强制对树节点块进行划分,直到每个译码CU的所有样本都位于图像边界内。
例如,根据块大小,帧内子划分(intra sub-partition,ISP)工具可以将亮度帧内预测块垂直或水平地分割为2或4个子部分。
在一个示例中,视频编码器20的模式选择单元260可以用于执行本文分割技术的任何组合。
如以上所描述,视频编码器20用于从一组(例如,预定的)预测模式中确定或选择最佳或最优预测模式。该组预测模式可以包括例如帧内预测模式和/或帧间预测模式。
帧内预测
该组帧内预测模式可以包括35种不同的帧内预测模式,例如DC(或均值)模式和平面模式等非定向模式,或HEVC中定义的定向模式等,或者可以包括67种不同的帧内预测模式,例如DC(或均值)模式和平面模式等非定向模式,或VVC中定义的定向模式等。例如,若干传统的角度帧内预测模式被自适应地替换为如VVC中定义的用于非正方形块的广角帧内预测模式。又例如,为了避免DC预测的除法运算,仅使用更长的边来计算非正方形块的平均值。而且,平面模式的帧内预测结果还可以通过位置决定的帧内预测组合(positiondependent intra prediction combination,PDPC)方法进行修改。
帧内预测单元254用于根据帧内预测模式集合中的帧内预测模式使用同一当前图像的相邻块的重建样本来生成帧内预测块265。
帧内预测单元254(或通常为模式选择单元260)还用于以语法元素266的形式向熵译码单元270输出帧内预测参数(或通常为表示块的选定帧内预测模式的信息),以将该帧内预测参数包括到编码图像数据21中,从而视频解码器30可以,例如,接收并使用该预测参数进行解码。
帧间预测
该组(或可能的)帧间预测模式取决于可用的参考图像(即,例如存储在DPB 230中的之前至少部分解码的图像)和其它帧间预测参数,例如是整个参考图像还是仅参考图像的一部分(例如,当前块的区域周围的搜索窗口区域)用于搜索最佳匹配的参考块,和/或例如是否应用像素插值,例如半像素、四分之一像素和/或1/16像素插值,或不应用像素插值。
除了上述预测模式之外,还可以应用跳过模式、直接模式。
帧间预测单元244可以包括运动估计(motion estimation,ME)单元和运动补偿(motion compensation,MC)单元(两者均未在图2中示出)。运动估计单元可以用于接收或获取图像块203(当前图像17的当前图像块203)和解码图像231,或者至少一个或多个之前重建的块(例如一个或多个其它/不同的之前解码的图像231的重建块),以用于运动估计。例如,视频序列可以包括当前图像和之前解码的图像231,或者,换句话说,当前图像和之前解码的图像231可以是构成视频序列的图像序列的一部分或可以构成该序列。
例如,编码器20可以用于从多个其它图像的相同或不同图像的多个参考块中选择参考块并提供参考图像(或参考图像索引)和/或参考块的位置(x坐标、y坐标)与当前块的位置之间的偏移(空间偏移),作为运动估计单元的帧间预测参数。这个偏移也称为运动矢量(motion vector,MV)。
运动补偿单元用于获取(例如,接收)帧间预测参数,并根据或通过帧间预测参数进行帧间预测,以获得帧间预测块265。运动补偿单元所执行的运动补偿可以包括根据通过运动估计确定的运动/块矢量提取或生成预测块(可能执行插值以提高子像素精度)。插值滤波可以通过已知样本生成其它样本,从而潜在地增加可以用于对图像块进行译码的候选预测块的数量。在接收到当前图像块的PU的运动矢量时,运动补偿单元可以定位运动矢量在一个参考图像列表中指向的预测块。
运动补偿单元还可以生成与块和视频条带相关的语法元素,该语法元素由视频解码器30用来解码视频条带的图像块。除了或作为条带和相应语法元素的替代,可以生成或使用分块组和/或分块以及相应语法元素。
熵编码
例如,熵译码单元270用于将熵编码算法或方案(例如,可变长度译码(variablelength coding,VLC)方案、上下文自适应VLC方案(context adaptive VLC,CAVLC)、算术译码方案、二值化算法、上下文自适应二进制算术译码(context adaptive binaryarithmetic coding,CABAC)、基于语法的上下文自适应二进制算术译码(syntax-basedcontext-adaptive binary arithmetic coding,SBAC)、概率区间分割熵(probabilityinterval partitioning entropy,PIPE)译码或其它熵编码方法或技术)或旁路(无压缩)方案应用于量化系数209、帧间预测参数、帧内预测参数、环路滤波参数和/或其它语法元素,以获得可以通过输出单元272以编码码流21等形式输出的编码图像数据21,使得视频解码器30可以接收并使用这些参数进行解码。可以将编码码流21发送到视频解码器30,或者将其存储在存储器汇总,以便随后由视频解码器30发送或检索。
视频编码器20的其它结构变化可以用于编码视频流。例如,对于某些块或帧,基于非变换的编码器20可以在没有变换处理单元206的情况下直接量化残差信号。在另一种实现方式中,编码器20可以将量化单元208和反量化单元210组合成单个单元。
解码器及解码方法
图3为用于实现本申请的技术的视频解码器30的示例。视频解码器30用于接收例如由编码器20编码的编码图像数据21(例如,编码码流21),以获得解码图像331。编码图像数据或码流包括用于对编码图像数据进行解码的信息,例如,表示编码视频条带的图像块的数据(和/或分块组或分块)以及相关的语法元素。
在图3的示例中,解码器30包括熵解码单元304、反量化单元310、逆变换处理单元312、重建单元314(例如求和器314)、环路滤波器320、解码图像缓冲区(decoded picturebuffer,DPB)330、模式应用单元360、帧间预测单元344和帧内预测单元354。帧间预测单元344可以是或包括运动补偿单元。在一些示例中,视频解码器30可以执行与图2中关于视频编码器100描述的编码通道大体上互逆的解码通道。
如关于编码器20所解释的,反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲区(decoded picture buffer,DPB)230、帧间预测单元344和帧内预测单元354还组成视频编码器20的“内置解码器”。因此,反量化单元310可以与反量化单元110具有相同的功能,逆变换处理单元312可以与逆变换处理单元212具有相同的功能,重建单元314可以与重建单元214具有相同的功能,环路滤波器320可以与环路滤波器220具有相同的功能,解码图像缓冲区330可以与解码图像缓冲区230具有相同的功能。因此,对视频编码器20的对应单元和功能的解释对应地适用于视频解码器30的相应单元和功能。
熵解码
熵解码单元304用于解析码流21(或通常称为编码图像数据21),并对编码图像数据21进行熵解码,以获得量化系数309和/或解码译码参数(图3中未示出)等,例如帧间预测参数(如参考图像索引和运动矢量)、帧内预测参数(如帧内预测模式或索引)、变换参数、量化参数、环路滤波参数和/或其它语法元素等中的任一者或全部。熵解码单元304可以用于进行对应于编码器20的熵译码单元270所描述的编码方案的解码算法或方案。熵解码单元304还可以用于向模式应用单元360提供帧间预测参数、帧内预测参数和/或其它语法元素,并向解码器30的其它单元提供其它参数。视频解码器30可以在视频条带级和/或视频块级接收语法元素。除了或作为条带和相应语法元素的替代,可以接收和/或使用分块组和/或分块以及相应语法元素。
反量化
反量化单元310可以用于从编码图像数据21(例如,通过熵解码单元304等解析和/或解码)接收量化参数(quantization parameter,QP)(或通常为与反量化相关的信息)和量化系数,并根据量化参数对解码量化系数309进行反量化,以获得解量化系数311,解量化系数311也可以称为变换系数311。反量化过程可以包括:使用视频编码器20确定的视频条带(或分块或分块组)中的每个视频块的量化参数,以确定应应用的量化程度以及反量化程度。
逆变换
逆变换处理单元312可以用于接收解量化系数311(也称为变换系数311),并对解量化系数311进行变换,以获得样本域中的重建残差块213。重建残差块213也可以称为变换块313。变换可以是逆变换,例如,逆DCT、逆DST、逆整数变换或概念上类似的逆变换过程。逆变换处理单元312还可以用于从编码图像数据21接收变换参数或对应的信息(例如,通过解析和/或解码,例如,通过熵解码单元304),以确定要应用于解量化系数311的变换。
重建
重建单元314(例如,加法器或求和器314)可以用于将重建残差块313添加到预测块365,以获得样本域中的重建块315,例如,通过将重建残差块313的样本值添加到预测块365的样本值。
滤波
环路滤波单元320(在译码环路中或译码环路之后)用于对重建块315进行滤波,以获得滤波块321,以平滑像素的突变或提高视频质量。环路滤波单元320可以包括一个或多个环路滤波器,例如去块效应滤波器、样本自适应偏移(sample-adaptive offset,SAO)滤波器或一个或多个其它滤波器,例如自适应环路滤波器(adaptive loop filter,ALF)、噪声抑制滤波器(noise suppression filter,NSF)或其任何组合。例如,环路滤波单元220可以包括去块效应滤波器、SAO滤波器和ALF滤波器滤波过程的顺序可以是去块效应滤波、SAO滤波和ALF滤波。在另一个示例中,增加一种称为亮度映射与色度缩放(luma mapping withchroma scaling,LMCS)(即自适应环内整形器)的过程。该过程在去块效应滤波之前执行。在另一个示例中,去块效应滤波过程也可以应用于内部子块边缘,例如仿射子块边缘、ATMVP子块边缘、子块变换(sub-block transform,SBT)边缘和帧内子划分(intra sub-partition,ISP)边缘。尽管在图3中环路滤波单元320示出为环内滤波器,但在其它配置中,环路滤波单元320可以实现为后环路滤波器。
解码图像缓冲区
之后,将一个图像的解码视频块321存储在解码图像缓冲区330中。解码图像331作为参考图像存储在解码图像缓冲区330中,用于后续对其它图像进行运动补偿和/或后续相应输出以进行显示。
解码器30用于例如通过输出端312输出解码图像311,以呈现给用户或由用户观看。
预测
帧间预测单元344的功能可以与帧间预测单元244(特别是运动补偿单元)相同;帧内预测单元354的功能可以与帧间预测单元254相同,并根据从编码图像数据21接收到的分割和/或预测参数或相应信息(例如,通过熵解码单元304等解析和/或解码)决定划分或分割模式并执行预测。模式应用单元360可以用于根据重建图像、重建块或相应的样本(已滤波的或未滤波的)按块进行预测(帧内预测或帧间预测),以获得预测块365。
当视频条带译码为帧内译码(I)条带时,模式应用单元360的帧内预测单元354用于:根据所指示的帧内预测模式和来自当前图像的之前解码的块的数据来为当前视频条带的图像块生成预测块365。当视频图像译码为帧间译码(即,B或P)条带时,模式应用单元360的帧间预测单元344(例如,运动补偿单元)用于根据从熵解码单元304接收到的运动矢量和其它语法元素生成当前视频条带的视频块的预测块365。对于帧间预测,预测块可以从一个参考图像列表中的一个参考图像中生成。视频解码器30可以根据DPB 330中存储的参考图像通过默认构建技术构建参考帧列表,列表0和列表1。除了应用于使用条带(例如视频条带)的实施例外,相同或相似的过程可以应用于使用分块组(例如视频分块组)和/或分块(例如视频分块)的实施例,例如可以使用I、P或B分块组和/或分块对视频进行译码。
模式应用单元360用于通过解析运动矢量或相关信息和其它语法元素确定当前视频条带的视频块的预测信息,并使用预测信息来生成正在解码的当前视频块的预测块。例如,模式应用单元360使用接收到的一些语法元素来确定用于对视频条带的视频块进行译码的预测模式(例如,帧内或帧间预测)、帧间预测条带类型(例如,B条带,P条带或GPB条带)、条带的参考图像列表中的一个或多个的构建信息、条带的每个帧间编码视频块的运动矢量、条带的每个帧间译码视频块的帧间预测状态,以及其它信息,以对当前视频条带中的视频块进行解码。除了应用于使用条带(例如视频条带)的实施例外,相同或相似的过程可以应用于使用分块组(例如视频分块组)和/或分块(例如视频分块)的实施例,例如可以使用I、P或B分块组和/或分块对视频进行译码。
在图3所示的视频解码器30的实施例中,视频解码器30可以用于使用条带(slice)(也称为视频条带)对图像进行分割和/或解码,其中,图像可以使用一个或多个条带(通常是不重叠的条带)进行分割或解码,每个条带可以包括一个或多个块(如CTU)或一个或多个块组(例如H.265/HEVC和VVC标准中的分块(tile)或VVC标准中的砖(brick))。
在图3所示的视频解码器30的实施例中,视频解码器30可以用于使用条带/分块组(也称为视频分块组)和/或分块(也称为视频分块)对图像进行分割和/或解码,其中,可以使用一个或多个分块组(通常是不重叠的)对图像进行解码或可以将图像分割为一个或多个条带/分块组,并且每个条带/分块组可以包括一个或多个块(例如CTU)或一个或多个分块,其中,每个分块可以是矩形并且可以包括一个或多个块(例如CTU),例如全部或部分块。
视频解码器30的其它变型可以用于解码编码图像数据21。例如,解码器30可以在没有环路滤波单元320的情况下生成输出视频流。例如,对于某些块或帧,基于非变换的解码器30可以在没有逆变换处理单元312的情况下直接量化残差信号。在另一种实现方式中,视频解码器30可以将反量化单元310和逆变换处理单元312组合成单个单元。
应理解,在编码器20和解码器30中,可以针对当前环节的处理结果进行进一步处理,然后输出到下一环节。例如,在插值滤波、运动矢量推导或环路滤波等之后,可以对插值滤波、运动矢量推导或环路滤波的处理结果进一步进行限幅(clip)或移位(shift)等操作。
需要说明的是,可以对当前块的推导运动矢量(包括但不限于仿射模式下的控制点运动矢量、仿射、平面、ATMVP模式下的子块运动矢量、时间运动矢量等)进行进一步操作。例如,根据运动矢量的表示位将该运动矢量的值限制在预定义的范围。如果运动矢量的表示位为bitDepth,则运动矢量的取值范围为–2^(bitDepth–1)至2^(bitDepth–1)–1,其中,“^”符号表示幂次方。例如,如果bitDepth设置为等于16,则该取值范围为–32768至32767;如果bitDepth设置为18,则该取值范围为–131072至131071。例如,对推导的运动矢量(例如一个8×8块中的四个4×4子块的MV)的值进行限制,使得四个4×4子块MV的整数部分之间的最大差值不超过N个像素,例如不超过1个像素。这里提供了两种根据bitDepth限制运动矢量的方法。
图4为本发明的一个实施例提供的视频译码设备400的示意图。如本文所描述,视频译码设备400适合于实现所公开的实施例。在一个实施例中,视频译码设备400可以是解码器(例如,图1A中的视频解码器30)或编码器(例如,图1A中的视频编码器20)。
视频译码设备400包括:用于接收数据的入端口410(或输入端口410)和接收单元(Rx)420;用于处理数据的处理器、逻辑单元或中央处理器(central processing unit,CPU)430;用于发送数据的发送器单元(Tx)440和出端口450(或输出端口450);以及用于存储数据的存储器460。视频译码设备400还可以包括耦合到入端口410、接收器单元420、发送器单元440和出端口450的光电(optical-to-electrical,OE)组件和电光(electrical-to-optical,EO)组件,用作光信号或电信号的出口或入口。
处理器430通过硬件和软件实现。处理器430可以实现为一个或多个CPU芯片、核(例如,多核处理器)、FPGA、ASIC和DSP。处理器430与入端口410、接收单元420、发送器单元440、出端口450和存储器460通信。处理器430包括译码模块470。译码模块470实现上述公开的实施例。例如,译码模块470实现、处理、准备或提供各种译码操作。因此,包括译码模块470大大提高了视频译码设备400的功能,并影响视频译码设备400到不同状态的转换。或者,译码模块470实现为存储在存储器460中并由处理器430执行的指令。
存储器460可以包括一个或多个磁盘、磁带机和固态硬盘,并且可以用作溢出数据存储设备,以在选择此类程序用于执行时存储程序,以及存储在程序执行期间读取的指令和数据。例如,存储器460可以是易失性和/或非易失性的,并且可以是只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、三态内容寻址存储器(ternary content-addressable memory,TCAM)和/或静态随机存取存储器(staticrandom-access memory,SRAM)。
图5为一个示例性实施例提供的装置500的简化框图,该装置500可以用作图1中的源设备12和目的地设备14中的一者或两者。
装置500中的处理器502可以是中央处理器。或者,处理器502可以是能够操纵或处理现在存在或以后开发的信息的任何其它类型的设备或多个设备。尽管所公开的实现方式可以通过单个处理器(例如处理器502)实施,但是可以通过一个以上的处理器来提高速度和效率。
装置500中的存储器504在一种实现方式中可以是只读存储器(read onlymemory,ROM)设备或随机存取存储器(random access memory,RAM)设备。可以使用任何其它合适类型的存储设备作为存储器504。存储器504可以包括由处理器502通过总线512访问的代码和数据506。存储器504还可以包括操作系统508和应用程序510,应用程序510包括使处理器502执行本文描述的方法的至少一个程序。例如,应用程序510可以包括应用程序1至N,其还包括执行本文所描述的方法的视频译码应用程序。
装置500还可以包括一个或多个输出设备,例如显示器518。在一个示例中,显示器518可以是触摸敏感显示器,触摸敏感显示器将显示器与可操作以感测触摸输入的触摸敏感元件相结合。显示器518可以通过总线512耦合到处理器502。
尽管在这里描述为单个总线,但装置500的总线512可以由多个总线组成。此外,辅助存储装置514可以直接耦合到装置500的其它组件,或者可以通过网络访问,并且可以包括单个集成单元(例如存储卡)或多个单元(例如多个存储卡)。因此,可以以多种配置实现装置500。
以下是一些相关的示例,需要说明的是,JVET会议文件JVET-N1002用作参考。
一、融合预测:
融合候选列表由以下五种候选按顺序组成:
(1)来自空间相邻CU的空间MVP,
(2)来自并置CU的时间MVP,
(3)来自FIFO表的基于历史的MVP,
(4)成对平均MVP,
(5)零MV。
融合列表的大小在条带头中指示,融合列表的最大允许大小是整数,例如,该数量可以是6。对于融合模式下的每个CU码,对最佳融合候选的索引进行编码。这里描述各类融合候选的生成过程。
(1)空间候选推导
例如,从位于图6所示位置的候选中选择最多四个融合候选。推导顺序为A0、B0、B1、A1和B2。仅当位置A0、B0、B1和A1的任何CU不可用(例如,由于CU属于其它条带或分块)或进行帧内译码时,才考虑位置B2。在添加了位置A1处的候选之后,对剩余候选的添加进行冗余检查,确保具有相同运动信息的候选已从列表中排除。在一种可行的实现方式中,只考虑通过图7中的箭头相连接的候选对,而且仅当用于冗余检查的对应候选不具有相同的运动信息时,该候选才添加到列表中。
(2)时间候选推导
例如,只有一个候选添加到列表中。具体地,在推导该时间融合候选时,缩放运动矢量是根据属于并置参考图像的并置CU推导的。用于推导并置CU的参考图像列表在条带头中显式指示。获得如图8中的虚线所示的时间融合候选的缩放运动矢量,其中,缩放运动矢量是根据POC距离tb和td对并置CU的运动矢量进行缩放得到的,tb定义为当前图像的参考图像与当前图像之间的POC差值,td定义为并置图像的参考图像与并置图像之间的POC差值。将所述时间融合候选的参考图像索引设置为等于0。
需要说明的是,图像顺序编号(picture order count,POC)是指与每个图像相关的变量,其唯一地标识编码视频序列(coded video sequence,CVS)中的所有图像中相关的图像,并且当要从解码图像缓冲区输出相关图像时,表示相关图像在输出顺序中相对于同一CVS中要从解码图像缓冲区输出的其它图像的输出顺序位置的位置。
(3)基于历史的融合候选推导
基于历史的MVP(history-based MVP,HMVP)融合候选添加到融合列表中,排在空间MVP和TMVP后面。之前译码的块的运动信息存储在表中,用作当前CU的MVP。在编码/解码过程中维护具有多个HMVP候选的表。当遇到新的CTU行时,重置该表。每当存在非子块间译码CU时,相关的运动信息作为新的HMVP候选添加到表的最后一个条目中。按顺序检查表中最新的几个HMVP候选,并将这几个HMVP候选插入到候选列表中,排在TMVP候选后面。冗余检查是针对HMVP候选中的空间融合候选或时间融合候选进行的。
(4)成对平均融合候选推导
对当前融合候选列表中的预定义候选对求平均值来生成成对平均候选,预定义的对定义为{(0,1),(0,2),(1,2),(0,3),(1,3),(2,3)},其中,数字表示融合候选列表的融合索引。分别计算每个参考列表的平均运动矢量。在一个列表中,如果有两个运动矢量都可用,即使这两个运动矢量指向不同的参考图像,也对这两个运动矢量求平均值;如果只有一个运动矢量可用,则直接使用该运动矢量;如果没有运动矢量可用,则此列表无效。
(5)当添加成对平均融合候选后融合列表未满时,在末尾插入零MVP,直到达到最大融合候选数。
二、双向预测
帧间预测使用图像之间的时间相关性来为图像样本块推导运动补偿预测(motion-compensated prediction,MCP)。对于每个块,可以在之前解码的图像中找到作为预测值的对应块。块在之前解码的图像中的位置通过运动矢量(Δx,Δy)表示,其中,Δx表示相对于当前块的位置的水平位移,Δy表示相对于当前块的位置的垂直位移。运动矢量(Δx,Δy)可以具有分数样本精度,以更精确地捕获基础对象的运动。当对应的运动矢量具有分数样本精度时,对参考图像应用插值以推导预测信号。之前解码的图像称为参考图像,并通过参考图像列表的参考索引Δt表示。
在双向预测的情况下(与使用一组运动数据的单向预测相比),两组运动数据(Δx0,Δy0,Δt0和Δx1,Δy1,Δt1)用于生成两个MCP(可能来自不同的图像或相同的图像),然后将这两个MCP组合以获得最终的MCP。通常,最终的MCP是通过求平均值推导的。在加权预测的情况下,可以对每个MCP应用不同的权重。可以用于双向预测的参考图像存储在两个单独的列表中,即列表0和列表1。
三、运动信息存储
在执行运动补偿之后,与预测块相关的(单向预测或双向预测)运动信息存储在存储器中。存储的运动信息通过空间或时间运动矢量预测等用作未来块(CU/PU)的参考信息。
在一些示例中,运动信息存储通过使用运动信息子块或运动信息存储单元的二维阵列来执行。二维阵列的空间分辨率可以与待编码图像的空间分辨率不同。在一个示例中,运动信息存储单元的较低分辨率可以节省内存空间。例如,16×16亮度样本对应于单个运动信息存储单元,这是指16×16亮度样本中的每个样本具有相同的运动信息,并且相同的运动信息存储在对应于该16×16亮度样本的单个运动信息存储单元中。换句话说,运动信息存储单元包含由16×16亮度样本组成的相关的预测块的帧间预测信息。
需要说明的是,16×16亮度样本是指亮度样本集,该亮度样本集是二维样本阵列,二维样本阵列的宽度和高度都是16。单个运动信息存储单元也可以对应于8×8亮度样本、4×4亮度样本或其它N×M亮度样本或色度样本,N和M是正整数。可以理解的是,较小尺寸的运动信息存储单元更有利于运动矢量预测,但需要更多的内存空间。图9示出大小为8×8亮度样本的预测块的运动矢量存储。标记为Mv0的预测块的运动信息存储在每个2×2运动矢量存储单元中。
三、用于帧间预测的三角分割
例如,三角分割模式仅适用于8×8或更大的CU,并以跳过模式或融合模式译码。指示ACU级标志,用于表示是否应用三角分割模式。
三角分割模式下的CU使用对角线划分或反对角线划分平均地划分为两个三角部分(图10)。使用CU的每个三角部分的运动对每个三角部分进行帧间预测,每个部分只能进行单向预测,即每个部分具有一个运动矢量和一个参考索引。应用这种单向预测运动约束,确保达到与传统双向预测相同的结果,且只需要对每个CU进行两种运动补偿预测。每个部分的单向预测运动直接通过为上述融合预测构建的融合候选列表推导,并且从列表中的给定融合候选中选择单向预测运动是根据“单向预测候选列表构建”的过程。对每个三角部分进行预测之后,通过具有自适应权重的混合处理来调整沿对角线或反对角线的样本值。最后,存储通过三角分割模式预测的CU的运动场(motion field)。
(1)构建单向预测候选列表
给定融合候选索引,单向预测运动矢量通过上述为融合预测构建的融合候选列表推导,如图11所示。对于列表中的候选,其LX运动矢量用作三角分割模式下的单向预测运动矢量,其中,X的奇偶性与融合候选索引值的奇偶性相同。这些运动矢量在图11中用x标记。如果不存在对应的LX运动矢量,则将融合预测候选列表中同一候选的L(1-X)运动矢量用作三角分割模式下的单向预测运动矢量。
(2)沿三角部分边缘混合
使用每个三角部分的运动对每个三角部分进行预测之后,混合两个预测信号,以推导对角线或反对角线周围的样本。在混合过程中使用以下权重:亮度使用{7/8,6/8,5/8,4/8,3/8,2/8,1/8},色度使用{6/8,4/8,2/8},如图12所示。
(3)运动场存储
例如,以三角分割模式编码的CU的运动矢量存储在4×4单元中。根据每个4×4单元的位置,存储单向预测运动矢量或双向预测运动矢量。将Mv1和Mv2分别表示为部分1和部分2的单向预测运动矢量。如果4×4单元位于图12的示例中所示的非加权区域,则为该4×4单元存储Mv1或Mv2。否则(如果4×4单元位于加权区域),则存储双向预测运动矢量。双向预测运动矢量根据以下过程通过Mv1和Mv2推导:
(1)如果Mv1和Mv2来自不同的参考图像列表(一个来自L0,另一个来自L1),则Mv1和Mv2简单地组合以形成双向预测运动矢量。
(2)否则,如果Mv1和Mv2来自同一列表,并且不失一般性,则假设它们都来自L0。在这种情况下:
如果Mv2(或Mv1)的参考图像出现在L1中,则使用L1中的该参考图像将该Mv2(或Mv1)转换为L1运动矢量。然后将两个运动矢量组合以形成双向预测运动矢量;
否则,仅存储单向预测运动Mv1,而不是存储双向预测运动。
又例如,图13示出了三角分割模式下的运动矢量存储。
四、帧间块的几何分割
对于三角分割模式,两个子块通过分隔线划分得到,分隔线的方向为45度或135度。其它分割角度和分割比例也是可以的,在本申请中称为几何分割(geometricalpartitioning,GEO)模式,例如,如图14所示。
在一个示例中,GEO分割的总数可以为140。权衡灵活性和位成本,这个数是最佳的。GEO的附加指示需要指示角度α,和分隔线相对于块的中心的位移ρ。α表示0到360度之间的量化角度,量化角度间隔为11.25度,ρ表示距离,该距离有5个不同值。图15示出了α和ρ的含义。
可以理解的是,在视频编码技术领域中,通常在编码器侧执行的预测过程与在解码器侧执行的预测过程相似,只是侧信息是从解码器侧的码流中解析出来的,而侧信息由预设规则确定,如率失真优化(rate-distortion optimization,RDO)方法。例如,应用以下步骤在解码器侧获取GEO模式下的预测样本:
S101:确定当前块的分割比例。
语法元素geo_partition_idx从码流解析,用作查找表的索引,该查找表存储α和ρ对。在一个示例中,α和ρ分别通过角度索引和距离索引表示。
S102:获取第一子块的第一预测模式和第二子块的第二预测模式。
通常,用于三角分割模式的相同融合列表推导过程用于推导GEO块的每个部分(子块)的运动矢量。每个部分仅通过单向预测进行预测。从码流中解析两个语法元素geo_merge_idx0和geo_merge_idx1,分别表示两个子块的预测模式。
在一个示例中,第一预测模式与第二预测模式不相同。在一个示例中,预测模式(第一预测模式或第二预测模式)可以是帧间预测模式,帧间预测模式的信息可以包括参考图像索引和运动矢量。在另一个示例中,预测模式可以是帧内预测模式,帧内预测模式的信息可以包括帧内预测模式索引。
S103:分别使用第一预测模式和第二预测模式生成第一子块的第一预测值和第二子块的第二预测值。
S104:根据S101中公开的划分,通过将第一预测值和第二预测值进行组合,获得预测样本的组合值。
例如,更具体地,步骤S104包括:
S104-1:对于当前块中的亮度样本,计算样本距离(sample_dist),样本距离表示亮度样本到S101中确定的当前块的分隔线的距离。
在一个示例中,根据以下公式计算样本距离sample_dist:
sample_dist=((x<<1)+1)*Dis[angleIdx1]+((y<<1)+1))*Dis[angleIdx2]–offset(distanceIdx)。
·angleIdx1和angleIdx2是从码流中获得的,或者根据从码流中获得的其它信息推导,例如根据语法元素geo_partition_idx推导,作为步骤S101中的角度索引;angleIdx1和angleIdx2表示分隔线的量化三角参数。
·x和y是样本相对于当前块左上样本的水平和垂直距离。
·偏移(distanceIdx)是索引值(distanceIdx)的函数,索引值从码流获得,或根据从码流获得的其它信息推导,例如,根据语法元素geo_partition_idx推导,作为步骤S101中的距离索引。
·Dis[]是预定义的查找表。
在另一个示例中,可以根据以下公式获得sample_dist和sampleWeight1:
–nCbR=(W>H)?(W/H):(H/W)
–sample_dist=(W>H)?(Clip3(0,8,(x/nCbR–y)+4)):(Clip3(0,8,(x–y/nCbR)+4)),或
sample_dist=(W>H)?(Clip3(0,8,(H–1–x/nCbR–y)+4)):(Clip3(0,8,(W–1–x
–y/nCbR)+4))。
其中,W为当前块的宽度,H为当前块的高度。
需要说明的是,上述2个示例示出了基于整数算术的两种计算方法。本发明实施例不限于计算sample_dist的那些示例。
在一个示例中,sample_dist可以是位于(x,y)的样本与分隔线之间的垂直线距离。在另一个示例中,通过位于(x,y)的样本作水平线或垂直线。该水平线或垂直线将与分隔线具有交点。sample_dist可以是位于(x,y)的样本与交点之间的距离。
S104-2:混合操作作为函数实现,其中,sample_dist作为输入,sampleWeight1或sampleWeight2作为输出。
该sample_dist用于计算加权因子,这些加权因子用于组合预测值,该组合预测值是通过组合第一子块和第二子块分别对应的第一预测值和第二预测值推导的。在一个示例中,加权因子表示为sampleWeight1和sampleWeight2,分别指对应于第一预测值的权重值和对应于第二预测值的权重值。在一个示例中,根据sample_dist计算sampleWeight1,根据公式sampleWeight2=T–sampleWeight1计算sampleWeight2,其中,T是预定义的常数。在一个示例中,预定义的常数T等于8,这是指sampleWeight1和sampleWeight2的值可以在0和8之间的值范围内(包括0和8)。在另一个示例中,预定义的常数T等于16。
根据一个示例,根据sample_dist和查找表获得第一加权因子sampleWeight1。在一个示例中,查找表用于存储滤波系数。换句话说,混合操作是根据查找表实现的。在这种示例中,可以将sample_dist函数用作查找表的索引值。所述函数可以是具有常数的除法或乘法运算、具有常数的右移运算、取绝对值运算或限幅运算或这些运算的组合。
混合操作根据码流中的指示的值应用于样本,或根据码流中的指示的值应用于样本。
在一个示例中,sampleWeight1=Clip3(0,8,f(sample_dist))。函数f()可以是具有常数的除法/加法/乘法运算、具有常数的右移运算、取绝对值运算或限幅运算或这些运算的组合。
在一个示例中,sampleWeight1(或sampleWeight2)=Clip3(0,8,sample_dist),
在一个示例中,sampleWeight1(或sampleWeight2)=Clip3(0,8,sample_dist+4);
在一个示例中,sampleWeight1(或sampleWeight2)=sample_dist==4?4:sample_dist<4?0:8;
在一个示例中,sampleWeight1(或sampleWeight2)=Clip3(0,8,(sample_dist–4)*K+sample_dist);
在一个示例中,sampleWeight1(或sampleWeight2)=sample_dist==0?4:sample_dist<0?0:8;
在一个示例中,sampleWeight1(或sampleWeight2)=Clip3(0,8,sample_dist*K+Clip3(0,8,sample_dist+4)),K是值大于0的整数。需要说明的是,随着K变大,混合操作变得更短(因此更尖锐)。例如,当K=4时,第二混合操作将与–“sampleWeight=sample_dist==0?4:sample_dist<0?0:8”相同,如图16所示。根据一个示例,码流中的指示符的值表示K的值。
在一个示例中,混合操作可以实现为查找表,例如图17所示的表。在一个示例中,sampleWeight可以作为geoFilter[idx]获得,其中,idx作为sampleDist的函数获得,而geoFilter是滤波器权重的一维线性阵列。例如,idx=min((abs(sample_dist)+8)>>4,maxIdx),其中,maxIdx是idx可以假定的最大值。
S105:根据步骤S101中公开的划分和步骤104中公开的组合方法,存储当前块的预测模式信息(例如包括运动矢量的运动信息或帧内预测信息)。
具体地,在GEO预测模式的解码过程的第一实施例中:
当对MergeTriangleFlag[xCb][yCb]等于1或geo_flag[xCb][yCb]等于1的译码单元进行解码时,调用该过程。
该过程的输入为:
–亮度位置(xCb,yCb),表示当前译码块的左上样本相对于当前图像的左上亮度样本,
–变量cbWidth,表示当前译码块以亮度样本为单位的宽度,
–变量cbHeight,表示当前译码块以亮度样本为单位的高度,
–1/16分数样本精度的亮度运动矢量mvA和mvB,
–色度运动矢量mvCA和mvCB,
–参考索引refIdxA和refIdxB,
–预测列表标志predListFlagA和predListFlagB。
该过程的输出为:
–亮度预测样本的(cbWidth)×(cbHeight)阵列predSamplesL,
–分量Cb的色度预测样本的(cbWidth/2)×(cbHeight/2)阵列predSamplesCb,
–分量Cr的色度预测样本的(cbWidth/2)×(cbHeight/2)阵列predSamplesCr。
令predSamplesLAL和predSamplesLBL为预测亮度样本值的(cbWidth)×(cbHeight)阵列,令predSamplesLACb、predSamplesLBCb、predSamplesLACr和predSamplesLBCr为预测色度样本值的(cbWidth/2)×(cbHeight/2)阵列。
predSamplesL、predSamplesCb和predSamplesCr通过以下有序步骤推导:
1.对于N是A和B中的每一个,以下适用:
–推导由亮度样本的有序二维阵列refPicLNL和色度样本的两个有序二维阵列refPicLNCb和refPicLNCr组成的参考图像,其中,设置为等于predListFlagN的X和设置为等于refIdxN的refIdxX作为输入。
–推导阵列predSamplesLNL,其中,亮度位置(xCb,yCb),设置为等于cbWidth的亮度译码块宽度sbWidth,设置为等于cbHeight的亮度译码块高度sbHeight,设置为等于(0,0)的运动矢量偏移mvOffset,设置为等于mvN的运动矢量mvLX,设置为等于refPicLNL的参考阵列refPicLXL,设置为等于FALSE的变量bdofFlag和设置为等于0的变量cIdx作为输入。
–推导阵列predSamplesLNCb,其中,亮度位置(xCb,yCb),设置为等于cbWidth/2的译码块宽度sbWidth,设置为等于cbHeight/2的译码块高度sbHeight,设置为等于(0,0)的运动矢量偏移mvOffset,设置为等于mvCN的运动矢量mvLX,设置为等于refPicLNCb的参考阵列refPicLXCb,设置为等于FALSE的变量bdofFlag和设置为等于1的变量cIdx作为输入。
–推导阵列predSamplesLNCr,其中,亮度位置(xCb,yCb),设置为等于cbWidth/2的译码块宽度sbWidth,设置为等于cbHeight/2的译码块高度sbHeight,设置为等于(0,0)的运动矢量偏移mvOffset,设置为等于mvCN的运动矢量mvLX,设置为等于refPicLNCr的参考阵列refPicLXCr,设置为等于FALSE的变量bdofFlag和设置为等于2的变量cIdx作为输入。
2.如果geo_flag[xCb][yCb]等于1,则根据如表1中指定的geo_partitioning_idx[xCb][yCb]的值设置几何分割相关变量angleIdx和distanceIdx。
a.调用几何分割融合模式的样本权重推导过程。该过程的输入为大小分别为(cbWidth)×(cbHeight)、(cbWidth/2)×(cbHeight/2)和(cbWidth/4)×(cbHeight/4)的三个有序阵列sampleWeightL、sampleWeightC和motionWeight,以及变量angleIdx、
distanceIdx、cbWidth和cbHeight。
b.当前亮度译码块内的预测样本predSamplesL[xL][yL],其中,xL=0..cbWidth–
1且yL=0..cbHeight–1,是通过调用几何分割融合模式的加权样本预测过程推导的,其中,设置为等于cbWidth的译码块宽度nCbW,设置为等于cbHeight的译码块高度nCbH,样本阵列predSamplesLAL、predSamplesLBL、predWeightL和等于0的cIdx作为输入。
c.当前色度分量Cb译码块内的预测样本predSamplesCb[xC][yC],其中,xC=
0..cbWidth/2–1且yC=0..cbHeight/2–1,是通过调用几何分割融合模式的加权样本预测过程推导的,其中,设置为等于cbWidth/2的译码块宽度nCbW,设置为等于cbHeight/2的译码块高度nCbH,样本阵列predSamplesLACb、
predSamplesLBCb、predWeightC和等于1的cIdx作为输入。
d.当前色度分量Cr译码块内的预测样本predSamplesCr[xC][yC],其中,xC=
0..cbWidth/2–1且yC=0..cbHeight/2–1,是通过调用几何分割融合模式的加权样本预测过程推导的,其中,设置为等于cbWidth/2的译码块宽度nCbW,设置为等于cbHeight/2的译码块高度nCbH,样本阵列predSamplesLACr、
predSamplesLBCr、predWeightC和等于2的cIdx作为输入。
e.调用几何融合模式的运动矢量存储过程,其中,亮度译码块位置(xCb,yCb),亮度译码块宽度cbWidth,亮度译码块高度cbHeight,样本阵列motionWeight,亮度运动矢量mvA和mvB,参考索引refIdxA和refIdxB,以及预测列表标志predListFlagA和predListFlagB作为输入。
三角融合模式的参考图像映射过程
该过程的输入为:
–变量X,表示等于0或1的参考列表,
–参考索引refIdxN。
该过程的输出为:
–参考索引refIdxTemp。
变量refPicPoc的推导过程如下:
refPicPoc=(X==0)?RefPicList[0][refIdxN]:RefPicList[1][refIdxN]
(8-878)
参考图像列表refPicListTemp的推导过程如下:
refPicListTemp = (X = = 0) ? RefPicList[ 1 ] : RefPicList[ 0 ] (8-879)变量refIdxTemp的推导过程如下:
–变量mapStop设置为等于FALSE。
–对于m=0..NumRefIdxActive[1]–1的变量refIdxm,以下适用,直到mapStop等于
FALSE:
refIdxTemp = (refPicListTemp[ refIdxm ] = = refPicPoc) ? refIdxm :–1 (8-880)
mapStop = (refIdxTemp != –1) ? TRUE : FALSE (8-881)
几何分割融合模式的样本权重推导过程
该过程的输入为:
–两个变量nCbW和nCbH,表示当前译码块的宽度和高度,
–两个变量angleIdx和distanceIdx,它们表示当前几何分割模式的角度和距离查找值,
–(nCbW)×(nCbH)阵列sampleWeightL,
–(nCbW/2)×(nCbH/2)阵列sampleWeightC,
–(nCbW/4)×(nCbH/4)阵列motionWeight。
该过程的输出为相同的三个阵列sampleWeightL、sampleWeightC和motionWeight,每个样本权重值的范围为0至8。
1.当前几何分割模式下存储在sampleWeightL中的亮度混合权重的推导过程如下:
设置以下变量的值:
–wIdx设置为log2(nCbW)–3,
–hIdx设置为log2(nCbH)–3,
–stepOffset设置为64,
–以下变量是根据比较(wIdx>=hIdx)设置的:
– whRratio = (wIdx >= hIdx) ? wIdx – hIdx : hIdx – wIdx (8-882)
– wIsLargerH = (wIdx >= hIdx) ? true : false (8-883)
– scaleStep = (wIdx >= hIdx) ? (1 << hIdx) : (1 << wIdx) (8-884)
–displacementX设置为angleIdx
–displacementY设置为(displacementX+8)%32
–angleN设置为:
angleN=angleIdx angleIdx>=0&&angleIdx<=8,
angleN=16–angleIdx angleIdx>8&&angleIdx<=16,
angleN=angleIdx–16 angleIdx>16&&angleIdx<=24,
angleN=32–angleIdx 其它。
–此外,根据wIsLargerH,angleN设置为以下值:
angleN=(wIsLargerH)?8–angleN:angleN
–根据如表2中指定的whRatio和angleN的值设置stepDis,此外,
stepSize=stepDis+stepOffset
–使用表3中指定的表示为Dis的查找表,将rho设置为以下值:
–rho=distanceIdx*stepSize*scaleStep+nCbW*Dis[displacementX]+
nCbH*Dis[displacementY]。(8-885)
对于每个样本位置,其中,x=0...nCbW–1和y=0...nCbH–1,sampleWeightL[x][y]的值通过以下方式推导:
–距离distFromLine是使用表3中指定的表示为Dis的查找表计算的,如下所示:
–distFromLine=((x<<1)+1)*Dis[displacementX]+((y<<1)+1))*Dis[displacementY]
–rho。(8-886)
–缩放距离distScaled的推导过程如下:
– distScaled = min((abs(distFromLine) + 8) >> 4, 14)。 (8-887)
根据表4中指定的表示为GeoFilter的滤波器权重查找表设置sampleWeightL[x][y]的值:
sampleWeightL[x][y]=GeoFilter[distScaled] distFromLine<=0,
sampleWeightL[x][y]=8–GeoFilter[distScaled] distFromLine>0
2.当前几何分割模式下存储在sampleWeightC中的色度权重的推导过程如下:
对于每个样本位置,其中,x=0...(nCbW/2)–1和y=0...(nCbH/2)–1,sampleWeightC[x][y]的值通过以下方式推导:
sampleWeightC[x][y]=sampleWeightL[(x<<1)][(y<<1)]
3.当前几何分割模式下存储在阵列motionWeight中的运动权重的推导过程如下:
–设置以下变量:
threshScaler=((log2(nCbW)+log2(nCbH))>>1)–1
threshLower=32>>threshScaler
threshUpper=32–threshLower
对于每个样本位置,其中,x=0...(nCbW/4)–1和y=0...(nCbH/4)–1,motionWeight[x][y]的值通过以下方式推导:
Cnt=sampleWeightL[(x<<2)][(y<<2)]
+sampleWeightL[(x<<2)+3][(y<<2)]
+sampleWeightL[(x<<2)][(y<<2)+3]
+sampleWeightL[(x<<2)+3][(y<<2)+3]
motionWeight[x][y]的值设置为:
motionWeight[x][y]=0Cnt<=threshLower
motionWeight[x][y]=1Cnt>=threshUpper
motionWeight[x][y]=2其它
几何分割融合模式的加权样本预测过程
该过程的输入为:
–两个变量nCbW和nCbH,表示当前译码块的宽度和高度,
–两个(nCbW)×(nCbH)阵列predSamplesLA和predSamplesLB,
–(nCbW)×(nCbH)阵列sampleWeight,
–变量cIdx,表示颜色分量索引。
该过程的输出为预测样本值的(nCbW)×(nCbH)阵列pbSamples。
变量bitDepth的推导过程如下:
–如果cIdx等于0,则bitDepth设置为等于BitDepthY。
–否则,bitDepth设置为等于BitDepthC。
变量shift1和offset1的推导过程如下:
–变量shift1设置为等于Max(5,17–bitDepth)。
–变量offset1设置为等于1<<(shift1–1)。
预测样本值的推导过程如下:
pbSamples[x][y]=
Clip3(0,(1<<bitDepth)–1,
(predSamplesLA[x][y]*sampleWeight[x][y]
+predSamplesLB[x][y]*(8–sampleWeight[x][y])+offset1)>>shift1)
几何分割融合模式的运动矢量存储
当对geo_flag[xCb][yCb]等于1的译码单元进行解码时,调用该过程。
该过程的输入为:
–亮度位置(xCb,yCb),表示当前译码块的左上样本相对于当前图像的左上亮度样本,
–变量cbWidth,表示当前译码块以亮度样本为单位的宽度,
–变量cbHeight,表示当前译码块以亮度样本为单位的高度,
–包含运动赋值索引的大小为(cbWidth/4)×(cbHeight/4)的阵列motionWeight,
–1/16分数样本精度的亮度运动矢量mvA和mvB,
–参考索引refIdxA和refIdxB,
–预测列表标志predListFlagA和predListFlagB。
表示当前译码块中水平和垂直方向4×4块的数量的变量numSbX和numSbY设置为:numSbX=cbWidth>>2且numSbY=cbHeight>>2。
变量minSb设置为等于min(numSbX,numSbY)。
变量refIdxTempA是通过调用三角融合模式的参考图像映射过程推导的,其中,设置为等于predListFlagA的X和设置为等于refIdxA的refIdxN作为输入。
变量refIdxTempB是通过调用三角融合模式的参考图像映射过程推导的,其中,设置为等于predListFlagB的X和设置为等于refIdxB的refIdxN作为输入。
对于子块索引(xSbIdx,ySbIdx)处的每个4×4子块,其中,xSbIdx=0..numSbX–1且ySbIdx=0..numSbY–1,以下适用:
–如果motionWeight[xSbIdx][ySbIdx]等于0,则以下适用:
predFlagL0=(predListFlagA==0)?1:0 (8-888)
predFlagL1=(predListFlagA==0)?0:1 (8-889)
refIdxL0=(predListFlagA==0)?refIdxA:–1 (8-890)
refIdxL1=(predListFlagA==0)?–1:refIdxA (8-891)
mvL0[0]=(predListFlagA==0)?mvA[0]:0 (8-892)
mvL0[1]=(predListFlagA==0)?mvA[1]:0 (8-893)
mvL1[0]=(predListFlagA==0)?0:mvA[0] (8-894)
mvL1[1]=(predListFlagA==0)?0:mvA[1] (8-895)
–否则,如果motionWeight[xSbIdx][ySbIdx]等于1,则以下适用:
predFlagL0=(predListFlagB==0)?1:0 (8-896)
predFlagL1=(predListFlagB==0)?0:1 (8-897)
refIdxL0=(predListFlagB==0)?refIdxB:–1 (8-898)
refIdxL1=(predListFlagB==0)?–1:refIdxB (8-899)
mvL0[0]=(predListFlagB==0)?mvB[0]:0 (8-900)
mvL0[1]=(predListFlagB==0)?mvB[1]:0 (8-901)
mvL1[0]=(predListFlagB==0)?0:mvB[0] (8-902)
mvL1[1]=(predListFlagB==0)?0:mvB[1] (8-903)
–否则(motionWeight[xSbIdx][ySbIdx]等于2),则以下适用:
–如果predListFlagA+predListFlagB等于1,则
predFlagL0=1 (8-904)
predFlagL1=1 (8-905)
refIdxL0=(predListFlagA==0)?refIdxA:refIdxB (8-906)
refIdxL1=(predListFlagA==0)?refIdxB:refIdxA (8-907)
mvL0[0]=(predListFlagA==0)?mvA[0]:mvB[0] (8-908)
mvL0[1]=(predListFlagA==0)?mvA[1]:mvB[1] (8-909)
mvL1[0]=(predListFlagA==0)?mvB[0]:mvA[0] (8-910)
mvL1[1]=(predListFlagA==0)?mvB[1]:mvA[1] (8-911)
–如果predListFlagA+predListFlagB等于0,则以下适用:
predFlagL0=1 (8-912)
predFlagL1=(refIdxTempA==–1&&refIdxTempB==–1)?0:1 (8-913)
refIdxL0=(refIdxTempB!=–1)?refIdxA: (8-914)
((refIdxTempA!=–1)?refIdxB:refIdxA)refIdxL1=(refIdxTempB!=–1)?refIdxTempB: (8-915)
((refIdxTempA!=–1)?refIdxTempA:–1)mvL0[0]=(refIdxTempB!=–1)?mvA[0]: (8-916)
((refIdxTempA!=–1)?mvB[0]:mvA[0])mvL0[1]=(refIdxTempB!=–1)?mvA[1]:(8-917)
((refIdxTempA!=–1)?mvB[1]:mvA[1])
mvL1[0]=(refIdxTempB!=–1)?mvB[0]:
(8-918)
((refIdxTempA!=–1)?mvA[0]:0)
mvL1[1]=(refIdxTempB!=–1)?mvB[1]:
(8-919)
((refIdxTempA!=–1)?mvA[1]:0)
–如果predListFlagA+predListFlagB等于2,则以下适用:
predFlagL0=(refIdxTempA==–1&&refIdxTempB==–1)?0:1
(8-920)
predFlagL1=1
(8-921)
refIdxL0=(refIdxTempB!=–1)?refIdxTempB:
(8-922)
((refIdxTempA!=–1)?refIdxTempA:–1)
refIdxL1=(refIdxTempB!=–1)?refIdxA:
(8-923)
((refIdxTempA!=–1)?refIdxB:refIdxA)
mvL0[0]=(refIdxTempB!=–1)?mvB[0]:
(8-924)
((refIdxTempA!=–1)?mvA[0]:0)
mvL0[1]=(refIdxTempB!=–1)?mvB[1]:
(8-925)
((refIdxTempA!=–1)?mvA[1]:0)
mvL1[0]=(refIdxTempB!=–1)?mvA[0]:
(8-926)
((refIdxTempA!=–1)?mvB[0]:mvA[0])
mvL1[1]=(refIdxTempB!=–1)?mvA[1]:
(8-927)
((refIdxTempA!=–1)?mvB[1]:mvA[1])
–对于x=0..3且y=0..3,进行以下赋值:
MvL0[(xSbIdx<<2)+x][(ySbIdx<<2)+y]=mvL0
(8-928)
MvL1[(xSbIdx<<2)+x][(ySbIdx<<2)+y]=mvL1
(8-929)
RefIdxL0[(xSbIdx<<2)+x][(ySbIdx<<2)+y]=refIdxL0
(8-930)
RedIdxL1[(xSbIdx<<2)+x][(ySbIdx<<2)+y]=refIdxL1
(8-931)
PredFlagL0[(xSbIdx<<2)+x][(ySbIdx<<2)+y]=predFlagL0(8-932)
PredFlagL1[(xSbIdx<<2)+x][(ySbIdx<<2)+y]=predFlagL1(8-933)
表1-基于geo_partition_idx值的angleIdx和distanceIdx值的规范
表2-基于whRatio和angleN的值的步距stepDis的规范
表3-用于推导几何分割距离的查找表Dis
表4-用于推导几何分割滤波器权重的滤波器权重查找表GeoFilter
idx | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
GeoFilter[idx] | 4 | 4 | 5 | 5 | 5 | 5 | 6 | 6 | 6 | 6 | 7 | 7 | 7 | 7 | 8 |
在GEO预测模式的解码过程的第二实施例中,运动信息存储过程如下:
将译码块细分为K个运动存储单元,译码块的大小为M×N个亮度样本,在一个示例中,每个运动存储单元具有相同大小的(M/K)×(N/K)亮度样本。在一个示例中,K的值为4,M的值为16,N的值为16,在本示例中,每个运动存储单元与大小为4×4的亮度子块相关联。译码块的左上亮度位置(x,y)与运动存储块的左上位置(x/K,y/K)相关联。
对于运动存储单元,根据第一样本权重或第二样本权重,决定是否存储第一单向预测运动信息、第二单向预测运动信息或双向预测运动信息。在一个示例中,决策是根据运动存储单元中的样本到划分边界的距离进行的。样本可以是整数样本或分数样本。分隔线定义为几何分割模式的划分线。根据一个示例,K等于4(运动存储单元以亮度样本为单位的宽度和高度)。图13描述了将译码块划分为运动存储单元的示例。
根据一个示例,样本与划分边界之间的距离可以通过以下过程计算:对于块中的亮度样本,计算样本距离(sample_dist),样本距离表示亮度样本到该块的分隔线的距离。
在一个示例中,根据以下公式计算样本距离sample_dist:
sample_dist=((x<<1)+1)*Dis[angleIdx1]+((y<<1)+1))*Dis[angleIdx2]–offset(distanceIdx)。
·angleIdx1的值和angleIdx2的值从码流获得,或根据从码流获得的其它信息推导/计算,angleIdx1和angleIdx2表示分隔线的量化三角参数,第一个是余弦类型,第二个是正弦类型。
·x和y是样本相对于译码块左上样本的–x和–y坐标。
·偏移(distanceIdx)是作为索引值(distanceIdx)的函数的偏移值,索引值从码流获得,或根据从码流获得的其它信息推导/计算。
·Dis[]是查找表。Dis[angleIdx1]描述了样本距离(sample_dist)相对于所述样本的–x坐标中单位增量(值1的增量)的变化。Dis[angleIdx2]描述了样本距离(sample_dist)相对于所述样本的–y坐标中的单位增量(值1的增量)的变化。
需要说明的是,上述示例的坐标根据当前译码块的左上位置,而不是根据的左上位置
需要说明的是,上述示例示出了基于整数算术的计算方法。本发明实施例不限于计算sample_dist的那些示例。
需要说明的是,根据上述示例,样本坐标左移一位((x<<1),(y<<1))。在该示例中,距离计算可以执行到整数算术的1/2样本精度,例如可以计算以(0.5,0.5)为单位的样本位置。
图18示出了4×4运动存储示例,具有整数位置和半像素位置(分数位置)、划分边界以及样本与划分边界之间的距离(sample_dist)。
在一个示例中,根据以下步骤,决定是否存储标记为Mv0的第一单向预测运动信息、标记为Mv1的第二单向预测运动信息或组合运动信息,例如标记为Mv2的双向预测运动信息。在一个示例中,针对运动存储单元执行决策;在另一个示例中,针对译码块中包含的至少两个(或所有)运动存储单元执行决策。运动存储单元的左上坐标由(x/K,y/K)给出,运动存储单元的宽度和高度以亮度样本为单位由K给出。
如果计算出的距离sample_dist小于和/或等于阈值,则为运动存储单元存储组合运动信息(Mv2)。阈值可以是固定的数字,可以根据划分线的角度、当前译码块的宽高比或其它参数自适应推导;否则(如果距离sample_dist大于和/或等于阈值),检查sample_dist的符号:
如果sample_dist为负(或正),则为当前运动存储单元存储MV0(或MV1),
否则(sample_dist为正(或负)),为当前运动存储单元存储MV1(或MV0)。
图19示出了基于上述方法的运动存储的一个示例。
与其它运动存储方法相比,该方法只需计算每个运动存储单元一个样本距离,降低了计算复杂度。
在GEO预测模式的解码过程的第三实施例中,如图20所示,如下:
对于允许双向预测的视频编码技术,使用两个参考帧列表,例如List0和List1,或正向参考帧列表和反向参考帧列表。例如,运动信息包括:
(1)预测标志L0(PFL0)和预测标志L1(PFL1),其中,当预测标志L0为真时,List0将用于帧间预测,否则(预测标志L0为假),将不使用List0。预测标志L1类似。
(2)参考索引L0(RIL0)和参考索引L1(RIL1),参考索引L0用于表示List0中的哪个参考帧(候选)用作当前参考帧。参考索引L1类似。在一种可行的实现方式中,参考索引L0等于–1是指不使用List0中的参考帧。
(3)运动矢量L0(MVL0)和运动矢量L1(MVL1)分别对应于List0和List1,它们都有水平分量和垂直分量。
在确定当前块的运动信息之后,在一种可行的实现方式中,可以存储该运动信息并用作未来译码块预测过程的参考信息,例如作为空间预测或时间预测中相邻块的预测运动信息。
运动信息存储在存储器中,更具体地说,在本实施例中,存储在运动信息存储单元中。
当前块可以划分为多个样本集,其中,多个样本集中的每个样本集的大小与样本集相同;或者将当前块设置为样本集。例如,样本集可以是4×4样本阵列。样本集的大小也可以是8×8、16×16、8×16等,这不受限制。多个样本集中的每一个对应于每个运动信息存储单元,因此样本集的运动信息存储在对应的运动信息存储单元中。需要说明的是,关于“样本集的运动信息”有两种情况。情况1:运动信息用于确定样本集的预测值;情况2:将运动信息分配给样本集以进行存储。
此外,在当前实施例中,样本集是亮度样本集,在其它实施例中,样本集可以是色度样本集。
上一节介绍了GEO预测模式。通常,在GEO预测中,当前块由第一子块和第二子块组成,所述第一子块和所述第二子块由共同边界分隔,所述第一子块对应第一运动信息,所述第二子块对应第二运动信息。第一子块和第二子块可以为三角部分、梯形部分或非对称矩形部分等,这不受限制。可以理解的是,例如,在三角部分中,每个子块都是三角块。
作为当前实施例中的示例,第一运动信息和第二运动信息都来自单向预测。第一运动信息可以仅包括RIL0、MVL0,这是指PFL0=1,PFL1=0;或者可以仅包括RIL1、MVL1,这是指PFL0=0,PFL1=1;类似地,第二运动信息可以仅包括RIL0、MVL0,这是指PFL0=1,PFL1=0;或者可以仅包括RIL1、MVL1,这是指PFL0=0,PFL1=1。
S201:确定角度参数和距离参数。
共同边界由角度参数和距离参数确定。
(1)在解码器中:
在一种可行的实现方式中,直接从码流解析角度参数和距离参数。
在另一种可行的实现方式中,从码流中解析指示符,并根据指示符获取角度参数和距离参数。指示符可以是索引,角度参数和距离参数可以通过检查具有这种索引的查找表来确定。或者,角度参数和距离参数可以通过函数计算,指示符是函数的输入。
在另一种可行的实现方式中,从码流中解析两个指示符,从两个指示符中的一个指示符中获取角度参数,从两个指示符中的另一个指示符中获取距离参数。
在当前实施例中,语法元素“geo_partition_idxx”是从码流解析的。通过搜索查找表获得角度参数“angleIdx”和距离参数“distanceIdx”,该查找表定义了“geo_partition_idx”与一对“angleIdx”和“distanceIdx”之间的关系。例如,查找表可以是表1。
S202:根据角度参数确定第一计算参数;根据角度参数计算临时角度参数;根据临时角度参数确定第二计算参数;根据角度参数和距离参数计算第三计算参数。
所述第一计算参数通过根据所述角度参数检查预设查找表确定,所述第二计算参数通过根据所述临时角度参数检查所述查找表确定,其中,所述第一计算参数和所述第二计算参数分别为同一角度的余弦值和正弦值。可以理解的是,余弦和正弦计算可以用查找表方法来模拟和替换,并且降低了计算复杂度。
在当前实施例中,
在一种可行的实现方式中:第一计算参数设置为Dis[angleIdx],Dis[]是查找表,例如,可以是表3。
临时角度参数设置为(angleIdx+8)%32,假设为TempIdx。
第二计算参数设置为Dis[TempIdx]。
需要说明的是,理论上,Dis[angleIdx]和Dis[TempIdx]是同一角度的近似余弦值和正弦值,角度表示共同边界与当前块之间的几何关系。
在一种可行的实现方式中:第一计算参数设置为Dis1[angleIdx],Dis1[]是查找表,例如,可以是表3。
第二计算参数设置为Dis2[angleIdx],Dis2[]是另一个查找表。
需要说明的是,Dis1[angleIdx]和Dis2[angleIdx]是同一角度的近似余弦值和正弦值,角度表示共同边界与当前块之间的几何关系。
第三计算参数的获取过程如下:
wIdx设置为log2(nCbW)–3,nCbW为当前块的宽度;
hIdx设置为log2(nCbH)–3,nCbH为当前块的高度;
stepOffset设置为正整数,例如设置为64。
比较wIdx和hIdx:
whRratio=(wIdx>=hIdx)?wIdx–hIdx:hIdx–wIdx
wIsLargerH=(wIdx>=hIdx)?true:false
scaleStep=(wIdx>=hIdx)?(1<<hIdx):(1<<wIdx)
可以理解的是,在另一种可行的实现中:
whRratio=(wIdx>hIdx)?wIdx–hIdx:hIdx–wIdx
wIsLargerH=(wIdx>hIdx)?true:false
scaleStep=(wIdx>hIdx)?(1<<hIdx):(1<<wIdx)
angleN设置为:
angleN=angleIdx angleIdx>=0&&angleIdx<=8,
angleN=16–angleIdx angleIdx>8&&angleIdx<=16,
angleN=angleIdx–16 angleIdx>16&&angleIdx<=24,
angleN=32–angleIdx 其它。
需要说明的是,在不同的实现方式中,端点angleIdx 0、8、16、24可以属于不同的子部分,例如:
在另一种可行的实现方式中,angleN设置为:
angleN=angleIdx angleIdx>0&&angleIdx<8,
angleN=16–angleIdx angleIdx>=8&&angleIdx<16,
angleN=angleIdx–16 angleIdx>=16&&angleIdx<24,
angleN=32–angleIdx 其它。
此外,angleN设置为以下值:
angleN=(wIsLargerH)?8–angleN:angleN
根据查找表(例如表2)中指定的whRatio和angleN的值设置stepDis。
stepSize=stepDis+stepOffset
第三计算参数rho使用表示为Dis的查找表(例如表3)设置为以下值。
rho=distanceIdx*stepSize*scaleStep+nCbW*Dis[angleIdx]+nCbH*Dis[TempIdx]。
对应地,在另一种可行的实现方式中,第三计算参数rho可以设置为:
rho=distanceIdx*stepSize*scaleStep+nCbW*Dis1[angleIdx]+nCbH*Dis2[angleIdx]。
需要说明的是,在确定角度参数和距离参数之后,可以确定第一计算参数、第二计算参数和第三计算参数。在一种可行的实现方式中,第一计算参数、第二计算参数和第三计算参数将仅计算一次,作为当前块中所有样本的参数。并且,如果已经确定了当前块的第一计算参数、第二计算参数和第三计算参数,则对于运动信息存储过程可以跳过步骤S201和S202。
S203:确定当前块中的样本集与共同边界之间的距离。
距离通过以下公式计算:
distFromLine=(x+K)*P1+(y+K)*P2–P3
其中,P1、P2和P3分别为所述第一计算参数、所述第二计算参数和所述第三计算参数,distFromLine表示所述距离,K为非负整数,x表示所述样本集中目标位置的横坐标,y表示所述目标位置在直角坐标系中的纵坐标,其中,所述当前块的左上样本的位置设置为坐标原点,右方向设置为正水平方向,下方向设置为正垂直方向。
在一种可行的实现方式中,K等于1。
distFromLine=(x+1)*P1+(y+1)*P2–P3。
需要说明的是,当前块中的样本集与共同边界之间的距离,通常是样本集中的目标位置与共同边界之间的距离。
样本集中的目标位置是预定的。例如,预定的位置可以是样本集的左上位置,或者样本集的中心位置,或者样本集的其它位置。
需要说明的是,目标位置可以是样本集中的整数样本位置的位置,目标位置也可以是分数样本位置的位置。例如,目标位置可以是当前块的重心位置。更具体地,在当前块是4×4样本阵列的情况下,目标位置可以是当前实施例的直角坐标系中具有坐标(1.5,1.5)的位置。
在一种可行的实现方式中,所述距离的所述样本精度高于所述整数样本。对应地,所述距离通过以下公式计算:
distFromLine=((x<<N)+K)*P1+((y<<N)+K)*P2–P3
其中,2N表示距离的样本精度的倒数,例如,当距离的样本精度为半像素精度时,N等于1,当距离的样本精度为1/4像素精度时,N等于2。
例如,距离通过以下公式计算:
distFromLine=((x<<1)+1)*Dis[angleIdx]+((y<<1)+1)*Dis[TempIdx]–rho
S204:将所述距离与阈值进行比较,以确定是否为所述样本集存储第三运动信息。
第三运动信息通过第一运动信息和第二信息推导。在一种可行的实现方式中,第三运动信息是第一运动信息和第二运动信息的组合,就像用于双向预测的运动信息一样。更具体地,在第一运动信息包括RILX_first、MVLX_first的情况下,第二运动信息包括RILY_second、MVLY_second,其中,X可以是0或1,Y可以是0或1,第三运动信息可以包括所有RILX_first、MVLX_first、RILY_second、MVLY_second,这是指PFL0=1,PFL1=1。
在另一种可行的实现方式中,在第一运动信息和第二运动信息都对应相同的列表(List0或List1)的情况下,第三运动信息可以等于第一运动信息或第二运动信息中的一个。例如,如果第一和第二运动信息的PFL0等于1,并且PFL1等于0,则第三运动信息可以设置为等于第一运动信息(或根据不同的实现方式,等于第二运动信息)。类似地,如果第一和第二运动信息的PFL0等于0,并且PFL1等于1,则第三运动信息可以设置为等于第一运动信息(或根据不同的实现方式,等于第二运动信息)。
在一种可行的实现方式中,阈值可以是预定的值。
在另一种可行的实现方式中,阈值基于共同边界与水平方向之间的几何关系,或者基于共同边界与垂直方向之间的几何关系。更具体地,所述阈值基于所述共同边界的垂直方向与所述水平方向或所述垂直方向之间的角度。在其它实现方式中,几何关系可以包括当前块或当前块的子块的共同边界与块边界之间的长度关系。在当前实施例中,阈值可以根据上面计算的角度通过查找表(例如表5)获得。
Threshold=RhoMax[angleN]。
需要说明的是,由于angleN可以在步骤S204之前确定,因此阈值可以在步骤S204之前确定,并且对于当前块,
阈值也可以是
threshLower=–RhoMax[angleN]
threshUpper=RhoMax[angleN]。
表5-用于几何分割运动权重推导的RhoMax表
idx | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
RhoMax[idx] | 1 | 2 | 2 | 3 | 3 | 3 | 2 | 2 | 1 |
在另一种可行的实现方式中,阈值也可以是
threshLower=–K
threshUpper=K,其中,K是预定的正数。例如,K的值可以为1。在一个示例中,K可以根据码流中的指示符获得。
在另一种可行的实现方式中,所述阈值基于所述当前块的宽度和/或高度。
需要说明的是,阈值也可以由上述两个或多个条件确定。例如,当前块的宽度和/或高度可以确定一个比率,ratio=1<<abs(log2(width)–log2(height)),然后该比率用于缩放通过角度确定的阈值。并将缩放阈值设置为最终阈值。
执行阈值与距离之间的比较:
S204-1:在所述距离的绝对值小于或等于所述阈值的情况下,确定为所述样本集存储所述第三运动信息;
S204-2:在距离的绝对值大于阈值的情况下:
在所述距离为正(或负)的情况下,确定为所述样本集存储所述第一运动信息;或,
在所述距离为负(或正,根据上述分支)的情况下,确定为所述样本集存储所述第二运动信息。
可以理解,根据不同的实现方式,步骤S204-1中的条件也可以是距离的绝对值小于阈值,相应地,步骤S204-2中的条件可以是距离的绝对值大于或等于阈值。
在另一种可行的实现方式中,绝对值的计算由多个子部分替换。
在当前实施例中,在距离小于threshLower的情况下为样本集存储第一运动信息;在距离大于threshUpper的情况下为样本集存储第二运动信息;否则,为样本集存储第三运动信息。
并且可以理解的是,第一运动信息、第二运动信息和第三运动信息中的一个存储在运动信息存储单元中且对应于样本集。
需要说明的是,在当前块可以被划分为多个样本集时,在一种可行的实现方式中,当前实施例中的上述步骤用于所有样本集。在另一种可行的实现方式中,当前实施例中的上述步骤仅用于一个样本集。在另一种可行的实现方式中,当前实施例中的上述步骤用于至少两个样本集。对于没有用上述步骤实现的样本集,在一种可行的实现方式中,存储默认运动信息或根据预定条件推导的运动信息。
需要说明的是,只需要基于预定的GEO分割模块(函数)计算距离值,其模块参数可以在CU级别上确定,以确定GEO部分的运动信息的存储。这降低了计算复杂度。
在GEO预测模式的解码过程的第四实施例中:
当对MergeTriangleFlag[xCb][yCb]等于1或geo_flag[xCb][yCb]等于1的译码单元进行解码时,调用该过程。
该过程的输入为:
–亮度位置(xCb,yCb),表示当前译码块的左上样本相对于当前图像的左上亮度样本,
–变量cbWidth,以亮度样本为单位表示当前译码块的宽度,
–变量cbHeight,表示亮度样本中当前译码块的高度,
–1/16分数样本精度的亮度运动矢量mvA和mvB,
–色度运动矢量mvCA和mvCB,
–参考索引refIdxA和refIdxB,
–预测列表标志predListFlagA和predListFlagB。
该过程的输出为:
–亮度预测样本的(cbWidth)×(cbHeight)阵列predSamplesL,
–分量Cb的色度预测样本的(cbWidth/2)×(cbHeight/2)阵列predSamplesCb,
–分量Cr的色度预测样本的(cbWidth/2)×(cbHeight/2)阵列predSamplesCr。
令predSamplesLAL和predSamplesLBL为预测亮度样本值的(cbWidth)×(cbHeight)阵列,令predSamplesLACb、predSamplesLBCb、predSamplesLACr和predSamplesLBCr为预测色度样本值的(cbWidth/2)×(cbHeight/2)阵列。
predSamplesL、predSamplesCb和predSamplesCr通过以下有序步骤推导:
3.对于N是A和B中的每一个,以下适用:
–推导由亮度样本的有序二维阵列refPicLNL和色度样本的两个有序二维阵列refPicLNCb和refPicLNCr组成的参考图像,其中,设置为等于predListFlagN的X和设置为等于refIdxN的refIdxX作为输入。
–阵列predSamplesLNL是通过调用分数样本插值过程推导的,其中,亮度位置(xCb,
yCb),设置为等于cbWidth的亮度译码块宽度sbWidth,设置为等于cbHeight的亮度译码块高度sbHeight,设置为等于(0,0)的运动矢量偏移mvOffset,设置为等于mvN的运动矢量mvLX,设置为等于refPicLNL的参考阵列refPicLXL,设置为等于FALSE的变量bdofFlag和设置为等于0的变量cIdx作为输入。
–阵列predSamplesLNCb是通过调用分数样本插值过程推导的,其中,亮度位置(xCb,
yCb),设置为等于cbWidth/2的译码块宽度sbWidth,设置为等于cbHeight/2的译码块高度sbHeight,设置为等于(0,0)的运动矢量偏移mvOffset,设置为等于mvCN的运动矢量mvLX,设置为等于refPicLNCb的参考阵列refPicLXCb,设置为等于FALSE的变量bdofFlag和设置为等于1的变量cIdx作为输入。
–阵列predSamplesLNCr是通过调用分数样本插值过程推导的,其中,亮度位置(xCb,yCb),设置为等于cbWidth/2的亮度译码块宽度sbWidth,设置为等于cbHeight/2的亮度译码块高度sbHeight,设置为等于(0,0)的运动矢量偏移mvOffset,设置为等于mvN的运动矢量mvLX,设置为等于refPicLNCr的参考阵列refPicLXCr,设置为等于FALSE的变量bdofFlag和设置为等于2的变量cIdx作为输入。
4.如果MergeTriangleFlag[xCb][yCb]等于1,则融合三角模式变量triangleDir的分割方向设置为等于merge_triangle_split_dir[xCb][yCb]。
a.当前亮度译码块内的预测样本predSamplesL[xL][yL],其中,xL=0..cbWidth–1且yL=0..cbHeight–1,是通过调用三角融合模式的加权样本预测过程推导的,其中,设置为等于cbWidth的译码块宽度nCbW,设置为等于cbHeight的译码块高度nCbH,样本阵列predSamplesLAL和predSamplesLBL,变量triangleDir和等于0的变量cIdx作为输入。
b.当前色度分量Cb译码块内的预测样本predSamplesCb[xC][yC],其中,xC=
0..cbWidth/2–1且yC=0..cbHeight/2–1,是通过调用三角融合模式的加权样本预测过程推导的,其中,设置为等于cbWidth/2的译码块宽度nCbW,设置为等于cbHeight/2的译码块高度nCbH,样本阵列predSamplesLACb和predSamplesLBCb,变量triangleDir和等于1的变量cIdx作为输入。
c.当前色度分量Cr译码块内的预测样本predSamplesCr[xC][yC],其中,xC=
0..cbWidth/2–1且yC=0..cbHeight/2–1,是通过调用三角融合模式的加权样本预测过程推导的,其中,设置为等于cbWidth/2的译码块宽度nCbW,设置为等于cbHeight/2的译码块高度nCbH,样本阵列predSamplesLACr和predSamplesLBCr,变量triangleDir和等于2的变量cIdx作为输入。
d.调用融合三角模式的运动矢量存储过程,其中,亮度译码块位置(xCb,yCb),亮度译码块宽度cbWidth,亮度译码块高度cbHeight,分割方向triangleDir,亮度运动矢量mvA和mvB,参考索引refIdxA和refIdxB,以及预测列表标志predListFlagA和predListFlagB作为输入。
5.如果geo_flag[xCb][yCb]等于1,则根据如表1中指定的
geo_partitioning_idx[xCb][yCb]的值设置几何分割相关变量angleIdx和distanceIdx。
a.调用几何分割融合模式的样本权重推导过程。该过程的输入为大小分别为(cbWidth)×(cbHeight)、(cbWidth/2)×(cbHeight/2)和(cbWidth/4)×(cbHeight/4)的三个有序阵列sampleWeightL、sampleWeightC和motionWeight,以及变量angleIdx、
distanceIdx、cbWidth和cbHeight。
b.当前亮度译码块内的预测样本predSamplesL[xL][yL],其中,xL=0..cbWidth–
1且yL=0..cbHeight–1,是通过调用几何分割融合模式的加权样本预测过程推导的,其中,设置为等于cbWidth的译码块宽度nCbW,设置为等于cbHeight的译码块高度nCbH,样本阵列predSamplesLAL、predSamplesLBL、predWeightL和等于0的cIdx作为输入。
c.当前色度分量Cb译码块内的预测样本predSamplesCb[xC][yC],其中,xC=0..cbWidth/2–1且yC=0..cbHeight/2–1,是通过调用几何分割融合模式的加权样本预测过程推导的,其中,设置为等于cbWidth/2的译码块宽度nCbW,设置为等于cbHeight/2的译码块高度nCbH,样本阵列predSamplesLACb、
predSamplesLBCb、predWeightC和等于1的cIdx作为输入。
d.当前色度分量Cr译码块内的预测样本predSamplesCr[xC][yC],其中,xC=0..cbWidth/2–1且yC=0..cbHeight/2–1,是通过调用第8.5.8.3条指定的几何分割融合模式的加权样本预测过程推导的,其中,设置为等于cbWidth/2的译码块宽度nCbW,设置为等于cbHeight/2的译码块高度nCbH,样本阵列predSamplesLACr、predSamplesLBCr、predWeightC和等于2的cIdx作为输入。
e.调用几何融合模式的运动矢量存储过程,其中,亮度译码块位置(xCb,yCb),亮度译码块宽度cbWidth,亮度译码块高度cbHeight,样本阵列motionWeight,亮度运动矢量mvA和mvB,参考索引refIdxA和refIdxB,以及预测列表标志predListFlagA和predListFlagB作为输入。
三角融合模式的参考图像映射过程
该过程的输入为:
–变量X,表示等于0或1的参考列表,
–参考索引refIdxN。
该过程的输出为:
–参考索引refIdxTemp。
变量refPicPoc的推导过程如下:
refPicPoc = (X = = 0) ? RefPicList[ 0 ][ refIdxN ] : RefPicList[ 1 ][ refIdxN ] (8-878)
参考图像列表refPicListTemp的推导过程如下:
refPicListTemp = (X = = 0) ? RefPicList[ 1 ] : RefPicList[ 0 ] (8-879)
变量refIdxTemp的推导过程如下:
–变量mapStop设置为等于FALSE。
–对于m=0..NumRefIdxActive[1]–1的变量refIdxm,以下适用,直到mapStop等于FALSE:
refIdxTemp = (refPicListTemp[ refIdxm ] = = refPicPoc) ? refIdxm :–1 (8-880)
mapStop = (refIdxTemp != –1) ? TRUE : FALSE (8-881)
几何分割融合模式的样本权重推导过程
该过程的输入为:
–两个变量nCbW和nCbH,表示当前译码块的宽度和高度,
–两个变量angleIdx和distanceIdx,它们表示当前几何分割模式的角度和距离查找值,
–(nCbW)×(nCbH)阵列sampleWeightL,
–(nCbW/2)×(nCbH/2)阵列sampleWeightC,
–(nCbW/4)×(nCbH/4)阵列motionWeight。
该过程的输出为相同的三个阵列sampleWeightL、sampleWeightC和motionWeight,每个样本权重值的范围为0至8。
4.当前几何分割模式下存储在sampleWeightL中的亮度混合权重的推导过程如下:
设置以下变量的值:
–wIdx设置为log2(nCbW)–3,
–hIdx设置为log2(nCbH)–3,
–stepOffset设置为64,
–以下变量是根据比较(wIdx>=hIdx)设置的:
– whRratio = (wIdx >= hIdx) ? wIdx – hIdx : hIdx – wIdx (8-882)
– wIsLargerH = (wIdx >= hIdx) ? true : false (8-883)
– scaleStep = (wIdx >= hIdx) ? (1 << hIdx) : (1 << wIdx) (8-884)
–displacementX设置为angleIdx
–displacementY设置为(displacementX+8)%32
–angleN设置为:
angleN=angleIdx angleIdx>=0&&angleIdx<=8,
angleN=16–angleIdx angleIdx>8&&angleIdx<=16,
angleN=angleIdx–16 angleIdx>16&&angleIdx<=24,
angleN=32–angleIdx 其它。
–此外,根据wIsLargerH,angleN设置为以下值:
angleN=(wIsLargerH)?8–angleN:angleN
–根据如表2中指定的whRatio和angleN的值设置stepDis,此外,
stepSize=stepDis+stepOffset
–使用表3中指定的表示为Dis的查找表,将rho设置为以下值:
–rho=distanceIdx*stepSize*scaleStep+nCbW*Dis[displacementX]+
nCbH*Dis[displacementY]。(8-885)对于每个样本位置,其中,x=0...nCbW–1和y=0...nCbH–1,sampleWeightL[x][y]的值通过以下方式推导:
–距离distFromLine[x][y]是使用表3中指定的表示为Dis的查找表计算的,如下所示:
–distFromLine[x][y]=((x<<1)+1)*Dis[displacementX]+((y<<1)+
1))*Dis[displacementY]–rho(8-886)
–缩放距离distScaled的推导过程如下:
– distScaled = min((abs(distFromLine[ x ][ y ]) + 8) >> 4, 14)。 (8-887)根据表4中指定的表示为GeoFilter的滤波器权重查找表设置sampleWeightL[x][y]的值:
sampleWeightL[x][y]=GeoFilter[distScaled],其中,distFromLine<=0,
sampleWeightL[x][y]=8–GeoFilter[distScaled],其中,distFromLine>0
5.当前几何分割模式下存储在sampleWeightC中的色度权重的推导过程如下:
对于每个样本位置,其中,x=0...(nCbW/2)–1和y=0...(nCbH/2)–1,sampleWeightC[x][y]的值通过以下方式推导:
sampleWeightC[x][y]=sampleWeightL[(x<<1)][(y<<1)]
6.当前几何分割模式下存储在阵列motionWeight中的运动权重的推导过程如下:
–以下变量根据表5设置:
threshLower=–RhoMax[angleN]
threshUpper=RhoMax[angleN]
对于每个样本位置,其中,x=0...(nCbW/4)–1和y=0...(nCbH/4)–1,motionWeight[x][y]的值通过以下方式推导:
Cnt=distFromLine[x*4+1][y*4+1]motionWeight[x][y]的值设置为:
motionWeight[x][y]=0 Cnt<=threshLower
motionWeight[x][y]=1 Cnt>=threshUpper
motionWeight[x][y]=2 其它。
几何分割融合模式的加权样本预测过程
该过程的输入为:
–两个变量nCbW和nCbH,表示当前译码块的宽度和高度,
–两个(nCbW)×(nCbH)阵列predSamplesLA和predSamplesLB,
–(nCbW)×(nCbH)阵列sampleWeight,
–变量cIdx,表示颜色分量索引。
该过程的输出为预测样本值的(nCbW)×(nCbH)阵列pbSamples。
变量bitDepth的推导过程如下:
–如果cIdx等于0,则bitDepth设置为等于BitDepthY。
–否则,bitDepth设置为等于BitDepthC。
变量shift1和offset1的推导过程如下:
–变量shift1设置为等于Max(5,17–bitDepth)。
–变量offset1设置为等于1<<(shift1–1)。
预测样本值的推导过程如下:
pbSamples[x][y]=
Clip3(0,(1<<bitDepth)–1,
(predSamplesLA[x][y]*sampleWeight[x][y]
+predSamplesLB[x][y]*(8–sampleWeight[x][y])+offset1)>>shift1)
几何分割融合模式的运动矢量存储
当对geo_flag[xCb][yCb]等于1的译码单元进行解码时,调用该过程。
该过程的输入为:
–亮度位置(xCb,yCb),表示当前译码块的左上样本相对于当前图像的左上亮度样本,
–变量cbWidth,以亮度样本为单位表示当前译码块的宽度,
–变量cbHeight,表示亮度样本中当前译码块的高度,
–包含运动赋值索引的大小为(cbWidth/4)×(cbHeight/4)的阵列motionWeight,
–1/16分数样本精度的亮度运动矢量mvA和mvB,
–参考索引refIdxA和refIdxB,
–预测列表标志predListFlagA和predListFlagB。
表示当前译码块中水平和垂直方向4×4块的数量的变量numSbX和numSbY设置为:numSbX=cbWidth>>2且numSbY=cbHeight>>2。
变量minSb设置为等于min(numSbX,numSbY)。
变量refIdxTempA是通过调用第8.5.7.4条中指定的三角融合模式的参考图像映射过程推导的,其中,设置为等于predListFlagA的X和设置为等于refIdxA的refIdxN作为输入。
变量refIdxTempB是通过调用第8.5.7.4条中指定的三角融合模式的参考图像映射过程推导的,其中,设置为等于predListFlagB的X和设置为等于refIdxB的refIdxN作为输入。
对于子块索引(xSbIdx,ySbIdx)处的每个4×4子块,其中,xSbIdx=0..numSbX–1且ySbIdx=0..numSbY–1,以下适用:
–如果motionWeight[xSbIdx][ySbIdx]等于0,则以下适用:
predFlagL0 = (predListFlagA= = 0) ? 1 : 0 (8-888)
predFlagL1 = (predListFlagA= = 0) ? 0 : 1 (8-889)
refIdxL0 = (predListFlagA= = 0) ? refIdxA: –1 (8-890)
refIdxL1 = (predListFlagA= = 0) ? –1 : refIdxA (8-891)
mvL0[ 0 ] = (predListFlagA= = 0) ? mvA[ 0 ] : 0 (8-892)
mvL0[ 1 ] = (predListFlagA= = 0) ? mvA[ 1 ] : 0 (8-893)
mvL1[ 0 ] = (predListFlagA= = 0) ? 0 : mvA[ 0 ] (8-894)
mvL1[ 1 ] = (predListFlagA= = 0) ? 0 : mvA[ 1 ] (8-895)
–否则,如果motionWeight[xSbIdx][ySbIdx]等于1,则以下适用:
predFlagL0 = (predListFlagB = = 0) ? 1 : 0 (8-896)
predFlagL1 = (predListFlagB = = 0) ? 0 : 1 (8-897)
refIdxL0 = (predListFlagB = = 0) ? refIdxB : –1 (8-898)
refIdxL1 = (predListFlagB = = 0) ? –1 : refIdxB (8-899)
mvL0[ 0 ] = (predListFlagB = = 0) ? mvB[ 0 ] : 0 (8-900)
mvL0[ 1 ] = (predListFlagB = = 0) ? mvB[ 1 ] : 0 (8-901)
mvL1[ 0 ] = (predListFlagB = = 0) ? 0 : mvB[ 0 ] (8-902)
mvL1[ 1 ] = (predListFlagB = = 0) ? 0 : mvB[ 1 ] (8-903)
–否则(motionWeight[xSbIdx][ySbIdx]等于2),则以下适用:
–如果predListFlagA+predListFlagB等于1,则
predFlagL0 = 1 (8-904)
predFlagL1 = 1 (8-905)
refIdxL0 = (predListFlagA= = 0) ? refIdxA : refIdxB (8-906)
refIdxL1 = (predListFlagA= = 0) ? refIdxB : refIdxA (8-907)
mvL0[ 0 ] = (predListFlagA= = 0) ? mvA[ 0 ] : mvB[ 0 ] (8-908)
mvL0[ 1 ] = (predListFlagA= = 0) ? mvA[ 1 ] : mvB[ 1 ] (8-909)
mvL1[ 0 ] = (predListFlagA= = 0) ? mvB[ 0 ] : mvA[ 0 ] (8-910)
mvL1[ 1 ] = (predListFlagA= = 0) ? mvB[ 1 ] : mvA[ 1 ] (8-911)
–如果predListFlagA+predListFlagB等于0,则以下适用:
predFlagL0 = 1 (8-912)
predFlagL1=(refIdxTempA==–1&&refIdxTempB==–1)?0:1
(8-913)
refIdxL0 = (refIdxTempB != –1) ? refIdxA : (8-914)
((refIdxTempA!=–1)?refIdxB:refIdxA)
refIdxL1 = (refIdxTempB != –1) ? refIdxTempB : (8-915)
((refIdxTempA!=–1)?refIdxTempA:–1)
mvL0[ 0 ] = (refIdxTempB != –1) ? mvA[ 0 ] : (8-916)
((refIdxTempA!=–1)?mvB[0]:mvA[0])
mvL0[ 1 ] = (refIdxTempB != –1) ? mvA[ 1 ] : (8-917)
((refIdxTempA!=–1)?mvB[1]:mvA[1])
mvL1[ 0 ] = (refIdxTempB != –1) ? mvB[ 0 ] : (8-918)
((refIdxTempA!=–1)?mvA[0]:0)
mvL1[ 1 ] = (refIdxTempB != –1) ? mvB[ 1 ] : (8-919)
((refIdxTempA!=–1)?mvA[1]:0)
–如果predListFlagA+predListFlagB等于2,则以下适用:
predFlagL0=(refIdxTempA==–1&&refIdxTempB==–1)?0:1
(8-920)
predFlagL1 = 1 (8-921)
refIdxL0 = (refIdxTempB != –1) ? refIdxTempB : (8-922)
((refIdxTempA!=–1)?refIdxTempA:–1)
refIdxL1 = (refIdxTempB != –1) ? refIdxA : (8-923)
((refIdxTempA!=–1)?refIdxB:refIdxA)
mvL0[ 0 ] = (refIdxTempB != –1) ? mvB[ 0 ] : (8-924)
((refIdxTempA!=–1)?mvA[0]:0)
mvL0[ 1 ] = (refIdxTempB != –1) ? mvB[ 1 ] : (8-925)
((refIdxTempA!=–1)?mvA[1]:0)
mvL1[ 0 ] = (refIdxTempB != –1) ? mvA[ 0 ] : (8-926)
((refIdxTempA!=–1)?mvB[0]:mvA[0])
mvL1[ 1 ] = (refIdxTempB != –1) ? mvA[ 1 ] : (8-927)
((refIdxTempA!=–1)?mvB[1]:mvA[1])
–对于x=0..3且y=0..3,进行以下赋值:
MvL0[ (xSbIdx << 2) + x ][ (ySbIdx << 2) + y ] = mvL0 (8-928)
MvL1[ (xSbIdx << 2) + x ][ (ySbIdx << 2) + y ] = mvL1 (8-929)
RefIdxL0[ (xSbIdx << 2) + x ][ (ySbIdx << 2) + y ] = refIdxL0 (8-930)
RedIdxL1[ (xSbIdx << 2) + x ][ (ySbIdx << 2) + y ] = refIdxL1 (8-931)
PredFlagL0[ (xSbIdx << 2) + x ][ (ySbIdx << 2) + y ] = predFlagL0(8-932)
PredFlagL1[ (xSbIdx << 2) + x ][ (ySbIdx << 2) + y ] = predFlagL1(8-933)
在另一种实现方式中,“几何分割融合模式的样本权重推导过程”的步骤6可以如下实现:
6.当前几何分割模式下存储在阵列motionWeight中的运动权重的推导过程如下:
–以下变量根据表5设置:
threshLower=–RhoMax[angleN]
threshUpper=RhoMax[angleN]
对于每个样本位置,其中,x=0...(nCbW/4)–1和y=0...(nCbH/4)–1,motionWeight[x][y]的值通过以下方式推导:
Cnt=((x<<4)+3)*Dis[displacementX]+((y<<4)+3))*Dis[displacementY]–rho<<1
motionWeight[x][y]的值设置为:
motionWeight[x][y]=0 Cnt<=threshLower
motionWeight[x][y]=1 Cnt>=threshUpper
motionWeight[x][y]=2 其它。
在“几何分割融合模式的样本权重推导过程”的步骤6的上述示例性实现方式中,等式“Cnt=((x<<4)+3)*Dis[displacementX]+((y<<4)+3))*Dis[displacementY]–rho<<1”对应于样本集重心与线之间距离的计算。本示例中的样本集包括具有以下坐标的16个样本:
(x*4,y*4)、(x*4+1,y*4)、(x*4+2,y*4)、(x*4+3,y*4)、(x*4,y*4+1)、(x*4+1,y*4+1)、(x*4+2,y*4+1)、(x*4+3,y*4+1)、(x*4,y*4+2)、(x*4+1,y*4+2)、(x*4+2,y*4+2)、(x*4+3,y*4+2)、(x*4,y*4+3)、(x*4+1,y*4+3)、(x*4+2,y*4+3)、(x*4+3,y*4+3)。
重心的坐标为(x*4+1.5,y*4+1.5)。在上述等式中,等式的所有加法项都乘以2,以便使坐标偏移1.5整数(因此在本例中为3),因为整数运算是期望的实现特征。
在第五实施例中,一种存储运动信息的装置,如图21所示,如下:
一种运动信息存储装置(3000),当前块由第一子块和第二子块组成,所述第一子块和所述第二子块由共同边界分隔,所述第一子块对应第一运动信息,所述第二子块对应第二运动信息,所述装置(3000)包括:计算模块(3001),用于确定所述当前块中的样本集与所述共同边界之间的距离;比较模块(3002),用于将所述距离与阈值进行比较,以确定是否为所述样本集存储第三运动信息,其中,所述第三运动信息通过所述第一运动信息和所述第二运动信息推导。
在一种可行的实现方式中,比较模块(3002)用于:
在所述距离的绝对值小于或等于所述阈值的情况下,确定为所述样本集存储所述第三运动信息。
在一种可行的实现方式中,在所述距离的所述绝对值大于所述阈值的情况下,所述比较模块(3002)还用于:在所述距离为正的情况下,确定为所述样本集存储所述第一运动信息;或,在所述距离为负的情况下,确定为所述样本集存储所述第二运动信息。
在一种可行的实现方式中,所述阈值是预定的。
在一种可行的实现方式中,所述阈值基于所述共同边界与水平方向或垂直方向之间的几何关系。
在一种可行的实现方式中,所述阈值基于所述共同边界的垂直方向与所述水平方向或所述垂直方向之间的角度。
在一种可行的实现方式中,所述阈值基于所述当前块的宽度和/或高度。
在一种可行的实现方式中,所述共同边界通过角度参数和距离参数确定,所述计算模块(3001)还用于:确定所述角度参数和所述距离参数。
在一种可行的实现方式中,在解码器中,所述计算模块(3001)还用于:从码流解析出所述角度参数和所述距离参数;或,从所述码流解析出指示符,根据所述指示符获取所述角度参数和所述距离参数。
在一种可行的实现方式中,所述计算模块(3001)还用于:根据所述角度参数确定第一计算参数;根据所述角度参数计算临时角度参数;根据所述临时角度参数确定第二计算参数;根据所述角度参数和所述距离参数计算第三计算参数。
在一种可行的实现方式中,所述第一计算参数通过根据所述角度参数检查预设查找表确定,所述第二计算参数通过根据所述临时角度参数检查所述查找表确定,其中,所述第一计算参数和所述第二计算参数分别为同一角度的余弦值和正弦值。
在一种可行的实现方式中,所述距离通过以下公式计算:
distFromLine=(x+K)*P1+(y+K)*P2–P3
其中,P1、P2和P3分别为所述第一计算参数、所述第二计算参数和所述第三计算参数,distFromLine表示所述距离,K为非负整数,x表示所述样本集中目标位置的横坐标,y表示所述目标位置在直角坐标系中的纵坐标,其中,所述当前块的左上样本的位置设置为坐标原点,右方向设置为正水平方向,下方向设置为正垂直方向。
在一种可行的实现方式中,K等于1。
在一种可行的实现方式中,所述目标位置在所述样本集中预定。
在一种可行的实现方式中,所述预定的位置是所述样本集的左上位置,或所述样本集的中心位置。
在一种可行的实现方式中,所述距离的所述样本精度高于整数样本;
对应地,所述距离通过以下公式计算:
distFromLine=((x<<N)+K)*P1+((y<<N)+K)*P2–P3
其中,2N表示所述距离的所述样本精度的倒数。
在一种可行的实现方式中,N等于1。
在一种可行的实现方式中,所述样本集为所述当前块的亮度样本集。
在一种可行的实现方式中,所述装置(3000)还包括划分模块(3003),用于:将所述当前块划分为多个样本集,其中,所述多个样本集中的每个样本集的大小与所述样本集相同;或,将所述当前块设置为所述样本集。
在一种可行的实现方式中,所述样本集是4×4样本阵列。
在一种可行的实现方式中,所述多个样本集中的每个样本集对应每个运动信息存储单元,所述运动信息存储单元用于存储所述第一运动信息、所述第二运动信息和所述第三运动信息中的一个。
在一种可行的实现方式中,所述第一子块和所述第二子块为三角部分、梯形部分或非对称矩形部分。
在一种可行的实现方式中,所述第一运动信息包括基于第一参考图像列表的运动信息,所述第二运动信息包括基于第二参考图像列表的运动信息,所述第三运动信息包括所述第一运动信息和所述第二运动信息。
在第六实施例中,一种用于对视频流进行解码的装置,包括处理器和存储器,其中,所述存储器存储使所述处理器执行根据第三实施例的任何实现方式的方法的指令。
在第七实施例中,一种用于对视频流进行编码的装置,包括处理器和存储器,其中,所述存储器存储使所述处理器执行根据第三实施例的任何实现方式的方法的指令。
在第八实施例中,一种计算机可读存储介质,其中存储有指令,所述指令在被执行时使一个或多个处理器对视频数据进行译码,其中,所述指令使所述一个或多个处理器执行根据第三实施例的任何实现方式的方法。
在第九实施例中,一种计算机程序,包括程序代码,当所述程序代码在计算机上执行时,用于执行根据第三实施例的任何实现方式的方法。
下文对上述实施例中所示的编码方法和解码方法的应用以及使用这些方法的系统进行说明。
图22为用于实现内容分发服务的内容供应系统3100的框图。该内容供应系统3100包括捕获设备3102、终端设备3106,并且可选地包括显示器3126。捕获设备3102与终端设备3106通过通信链路3104进行通信。该通信链路可以包括上述通信信道13。通信链路3104包括但不限于WIFI、以太网、电缆、无线(3G/4G/5G)、USB或者其任何组合等。
捕获设备3102生成数据,并且可以通过如上述实施例所示的编码方法对数据进行编码。或者,捕获设备3102可以将数据分发给流服务器(图中未示出),服务器对数据进行编码并将编码数据发送给终端设备3106。捕获设备3102包括但不限于摄像机、智能手机或平板电脑、计算机或笔记本电脑、视频会议系统、PDA、车载设备,或它们的任何组合等。例如,捕获设备3102可以包括如以上所描述的源设备12。当数据包括视频时,捕获设备3102中包括的视频编码器20实际上可以执行视频编码处理。当数据包括音频(即,语音)时,捕获设备3102中包括的音频编码器实际上可以执行音频编码处理。对于一些实际场景,捕获设备3102通过将编码视频和音频数据复用在一起来进行分发。对于其它实用场景,例如在视频会议系统中,不复用编码音频数据和编码视频数据。捕获设备3102将编码音频数据和编码视频数据分别分发给终端设备3106。
在内容提供系统3100中,终端设备310接收并再现编码数据。终端设备3106可以是具有数据接收和恢复能力的设备,例如智能手机或平板电脑3108、计算机或笔记本电脑3110、网络录像机(network video recorder,NVR)/数字录像机(digital videorecorder,DVR)3112、TV 3114、机顶盒(set top box,STB)3116、视频会议系统3118、视频监控系统3120、个人数字助理(personal digital assistant,PDA)3122、车载设备3124或其任何组合,或者能够解码上述编码数据的设备。例如,终端设备3106可以包括如以上所描述的目的地设备14。当编码数据包括视频时,终端设备中包括的视频解码器30优先进行视频解码。当编码数据包括音频时,终端设备中包括的音频解码器优先进行音频解码处理。
对于带有显示器的终端设备,例如智能手机或平板电脑3108、计算机或笔记本电脑3110、网络录像机(network video recorder,NVR)/数字录像机(digital videorecorder,DVR)3112、TV 3114、个人数字助理(personal digital assistant,PDA)3122或车载设备3124,终端设备可以将解码数据馈送到该终端设备的显示器。对于没有显示器的终端设备(例如STB 3116、视频会议系统3118或视频监控系统3120),连接外部显示器3126以接收并显示解码数据。
该系统中的每个设备在进行编码或解码时,可以使用如上述实施例中所示的图像编码设备或图像解码设备。
图23为终端设备3106的一个示例的结构的图。在终端设备3106从捕获设备3102接收流之后,协议处理单元(protocol proceeding unit)3202分析流的传输协议。协议包括但不限于实时流协议(real time streaming protocol,RTSP)、超文本传输协议(hypertext transfer protocol,HTTP)、HTTP直播协议(HTTP live streaming protocol,HLS)、MPEG-DASH、实时传输协议(real-time transport protocol,RTP)、实时消息协议(realtime messaging protocol,RTMP)或其任何组合等。
协议处理单元3202对流进行处理后,生成流文件。将文件输出到解复用单元3204。解复用单元3204可以将复用数据分为编码音频数据和编码视频数据。如以上所描述,对于一些实际场景,例如在视频会议系统中,不复用编码音频数据和编码视频数据。在这种情况下,将编码数据发送到视频解码器3206和音频解码器3208,无需经过解复用单元3204。
通过解复用处理,生成视频基本流(elementary stream,ES)、音频ES和可选的字幕。视频解码器3206包括如上述实施例中所说明的视频解码器30,通过如上述实施例中所示的解码方法对视频ES进行解码以生成视频帧,并将该数据馈送到同步单元3212。音频解码器3208,解码音频ES以生成音频帧,并将该数据馈送到同步单元3212。或者,在将视频帧馈送到同步单元3212之前,可以将该视频帧存储在缓冲区(图23中未示出)中。类似地,在将音频帧馈送到同步单元3212之前,可以将该音频帧存储在缓冲区(图23中未示出)中。
同步单元3212同步视频帧和音频帧,并将视频/音频提供给视频/音频显示器3214。例如,同步单元3212同步视频和音频信息的呈现。可以使用关于译码音频和视频数据的表示的时间戳和关于数据流本身的传递的时间戳在语法中对信息进行译码。
如果流中包括字幕,则字幕解码器3210解码字幕,并使字幕与视频帧和音频帧同步,并将视频/音频/字幕提供给视频/音频/字幕显示器3216。
本申请并不限于上述系统,上述实施例中的图像编码设备或图像解码设备都可以结合到其它系统,例如汽车系统。
数学运算符
本申请中使用的数学运算符与C编程语言中使用的数学运算符类似。但是,这里精确定义了整除运算和算术移位运算的结果,并且还定义了其它运算,如幂次方和实值除法运算。编号和计数规范通常约定从0开始,例如,“第一个”相当于第0个,“第二个”相当于第1个,等等。
算术运算符
以下算术运算符定义如下:
+ 加法
– 减法(用作双参数运算符)或者非运算(用作一元前缀运算符)。
* 乘法,包括矩阵乘法。
xy 不幂应次解方,释表为示是x幂的次y方。次幂。在其它上下文中,该表示形式也可以用作上标,而向零方向对结果进行截断的整数除法。例如,7/4和–7/–4被截断成1,–7/4和/ 7/–4被截断成–1。
÷ 用来表示数学等式中的除法运算,但没有截断或者四舍五入操作。
用来表示数学等式中的除法运算,但没有截断或者四舍五入操作。
f(i)的和,i取从x到y的所有整数值,包括x和y。
x%y取模运算,x除以y得到的余数,仅针对x>=0且y>0的整数x和y定义。
逻辑运算符
以下逻辑运算符定义如下:
x&&y x和y的布尔逻辑“与”操作
x||y x和y的布尔逻辑“或”操作
! 布尔逻辑“非”
x?y:z如果x为真或不等于0,则等于y的值;否则,等于z的值。
关系运算符
以下关系运算符定义如下:
> 大于
>= 大于等于
< 小于
<= 小于等于
== 等于
!= 不等于
当关系运算符用于一个已赋值为“na”(不适用)的语法元素或变量时,则将值“na”视为该语法元素或变量的唯一值。值“na”不等于任何其它值。
按位运算符
以下按位运算符的定义如下:
&按位“与”。对整数参数进行运算时,对整数值的二的补码表示进行运算。当对二进制参数进行运算时,如果它包括的位比另一个参数少,则通过添加等于0的更多有效位来扩展较短的参数。
|按位“或”。对整数参数进行运算时,对整数值的二的补码表示进行运算。当对二进制参数进行运算时,如果它包括的位比另一个参数少,则通过添加等于0的更多有效位来扩展较短的参数。
^按位“异或”。对整数参数进行运算时,对整数值的二的补码表示进行运算。
当对二进制参数进行运算时,如果它包括的位比另一个参数少,则通过添加等于0的更多有效位来扩展较短的参数。
x>>y将x的二的补码整数表示算法右移y个二进制数字。该函数仅针对y的非负整数值定义。右移的结果是移到最高有效位(most significant bit,MSB)的位的值等于移位操作前的x的MSB。
x<<y将x的二的补码整数表示算法左移y个二进制数字。该函数仅针对y的非负整数值定义。左移的结果是移到最低有效位(least significant bit,LSB)的位的值等于0。
赋值运算符
以下算术运算符定义如下:
= 赋值运算符
++ 递增,即,x++等价于x=x+1;当用于数组索引时,等于递增操作之前变量的值。
––递减,即,x––等价于x=x–1;当用于数组索引时,等于递减操作之前变量的值。
+= 按指定数量递增,即,x+=3等价于x=x+3,x+=(–3)等价于x=x+(–3)。
–= 按指定数量递减,即,x–=3等价于x=x–3,x–=(–3)等价于x=x–(–3)。
范围表示法
以下表示法用于指定值的范围:
x=y..z x取从y到z的整数值(包括y和z),其中,x、y和z是整数,并且z大于y。
数学函数
数学函数定义如下:
Asin(x)三角反正弦函数,对参数x进行运算,x在–1.0至1.0的范围内(包括端值),输出值在–π÷2至π÷2的范围内(包括端值),单位为弧度。
Atan(x)三角反正切函数,对参数x运算,输出值在–π÷2至π÷2的范围内(包括端值),单位为弧度。
Ceil(x)表示大于或等于x的最小整数值。
Clip1Y(x)=Clip3(0,(1<<BitDepthY)–1,x)
Clip1C(x)=Clip3(0,(1<<BitDepthC)–1,x)
Cos(x)三角余弦函数,对参数x运算,单位为弧度。
Floor(x)表示小于或等于x的最大整数值。
Ln(x)x的自然对数(以e为底的对数,其中,e是自然对数底数常数2.718281828……)。
Log2(x)以2为底x的对数。
Log10(x)以10为底x的对数。
Round(x)=Sign(x)*Floor(Abs(x)+0.5)
Sin(x)三角正弦函数,对参数x进行运算,单位为弧度。
Swap(x,y)=(y,x)
Tan(x)三角正切函数,对参数x进行运算,单位为弧度。
运算优先级顺序
当没有使用括号来显式的表示优先顺序时,则遵循如下规则:
–高优先级的运算在低优先级的运算之前进行。
–相同优先级的运算从左到右依次进行。
下表从最高到最低的顺序说明运算的优先级,在表中的位置越高,优先级也越高。
如果在C编程语言中也使用这些运算符,则本文中采用的优先级顺序与C编程语言中采用的优先级顺序相同。
表:运算优先级从最高(表格顶部)到最低(表格底部)进行排序
逻辑运算的文字描述
文本中,逻辑运算中的语句以数学形式描述如下:
if(condition 0)
statement 0
else if(condition 1)
statement 1
...
else/*informative remark on remaining condition*/
statement n
可以通过如下方式进行描述:
……如下/……以下为准:
–如果条件0,则语句0
–否则,如果条件1,则语句1
-……
–否则(剩余条件的提示性说明),则语句n
文本中的每个“如果……否则,如果……否则,……”语句由“……如下”或“……以下为准”(后面紧跟着“如果……”)引入。最后一个条件“如果……否则,如果……否则,……”总有一个“否则,……”。插入的“如果……否则,如果……否则,……”语句可以通过匹配“……如下”或“……以下为准”,以“否则,……”结尾来识别。
文本中,逻辑运算中的语句以数学形式描述如下:
if(condition 0a&&condition 0b)
statement 0
else if(condition 1a||condition 1b)
statement 1
...
else
statement n
可以通过如下方式进行描述:
……如下/……以下为准:
–如果以下所有条件都为真,则语句0:
–条件0a
–条件0b
–否则,如果以下一个或多个条件为真,则语句1:
–条件1a
–条件1b
–……
–否则,语句n
文本中,逻辑运算中的语句以数学形式描述如下:
if(condition 0)
statement 0
if(condition 1)
statement 1
可以通过如下方式进行描述:
如果条件0,则语句0
如果条件1,则语句1
编码器20和解码器30等的实施例,以及本文描述的与编码器20和解码器30等有关的功能可以以硬件、软件、固件或其任何组合来实现。如果以软件实现,则功能可以存储在计算机可读介质中或作为一个或多个指令或代码通过通信介质传输,并由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,对应数据存储介质等有形介质,或包括便于例如根据通信协议将计算机程序从一个地方传输到另一个地方的任何介质的通信介质。在这种方式中,计算机可读介质通常可以对应(1)非瞬时性的有形计算机可读存储介质或(2)通信介质,例如信号或载波。数据存储介质可以是任何可用介质,可由一个或多个计算机或一个或多个处理器访问以检索用于实现本发明所描述的技术的指令、代码和/或数据结构。计算机程序产品可以包括计算机可读介质。
作为示例而非限制,此类计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储器、磁盘存储器或其它磁性存储设备、闪存,或可以用于存储指令或数据结构形式的所需程序代码并且可由计算机访问的任何其它介质。此外,任何连接都可以称为计算机可读介质。例如,如果指令是从网站、服务器或其它远程源通过同轴电缆、光纤电缆、双绞线、数字用户线(digital subscriber line,DSL)或无线技术(例如红外、无线电、微波等)发送的,则介质的定义包括同轴电缆、光纤电缆、双绞线、DSL或无线技术(例如红外、无线电和微波等)。但是,应理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其它瞬时介质,而是指非瞬时有形存储介质。本文使用的磁盘和光盘包括压缩光盘(compact disc,CD)、激光光盘、光盘、数字通用光盘(digital versatile disc,DVD)、软盘和蓝光光盘,盘通常磁性地再现数据,而光盘则用激光光学地再现数据。上述的组合也应包括在计算机可读介质的范围内。
指令可以由一个或多个处理器执行,例如一个或多个数字信号处理器(digitalsignal processor,DSP)、通用微处理器、专用集成电路(application-specificintegrated circuit,ASIC)、现场可编程逻辑阵列(field programmable logic array,FPGA)或其它等效的集成或分立逻辑电路。因此,本文使用的术语“处理器”可以指任何上述结构或任何适合于实现本文所描述的技术的任何其它结构。此外,在一些方面中,本文所描述的功能可以在用于编码和解码的专用硬件和/或软件模块中提供,或者结合在组合编解码器中。此外,这些技术可以在一个或多个电路或逻辑元件中完全实现。
本发明的技术可以在多种设备或装置中实现,包括无线手持电话、集成电路(integrated circuit,IC)或一组IC(例如芯片组)。本发明描述各种组件、模块或单元以强调用于执行所公开技术的设备的功能方面,但这些组件、模块或单元不一定要求通过不同的硬件单元实现。相反,如以上所描述,各种单元可以组合在编解码器硬件单元中,或者由包括如以上所描述的一个或多个处理器的互操作硬件单元的集合结合合适的软件和/或固件来提供。
Claims (28)
1.一种解码码流的方法,其特征在于,所述方法包括:
接收码流,所述码流中包括当前块的编码数据和指示符,所述当前块被共同边界分割为第一子块和第二子块,所述第一子块对应第一预测值,所述第二子块对应第二预测值;
解析所述码流获取所述指示符;
基于所述指示符获取角度参数和距离参数,所述角度参数表示几何分割模式的角度索引,所述距离参数表示所述几何分割模式的距离索引;
基于所述角度参数和所述距离参数确定所述当前块中的样本集与所述共同边界之间的距离;
基于所述距离获取第一权重系数;
基于所述第一权重系数获取第二权重系数;
基于所述第一预测值、所述第二预测值,所述第一权重系数和所述第二权重系数获取所述当前块的组合预测值。
2.根据权利要求1所述的方法,其特征在于,所述角度参数为angleIdx,所述距离参数为distanceIdx,其中所述基于所述角度参数和所述距离参数确定所述当前块中的样本集与所述共同边界之间的距离,包括:
基于以下公式计算所述距离:
distFromLine=((x<<N)+K)*P1+((y<<N)+K)*P2-P3;
其中,distFromLine表示所述距离,K为非负整数,N=1,P1,P2和P3分别为第一计算参数,第二计算参数和第三计算参数,所述第一计算参数根据所述angleIdx查找第一预设查找表得到的,所述第二计算参数是根据临时角度参数查找所述第一预设查找表得到的,所述临时角度参数为(angleIdx+8)%32,所述第三计算参数是根据所述angleIdx和所述distanceIdx得到的。
3.根据权利要求1或2所述的方法,其特征在于,基于所述距离获取第一权重系数,包括:
基于以下公式计算所述第一权重系数:
sampleWeight1=Clip3(0,8,f(sample_dist));
其中所述sampleWeight1表示所述第一权重系数,所述sample_dist表示所述距离,所述f(sample_dist)表示以sample_dist为输入的函数。
4.根据权利要求1至3中任一项所述的方法,其特征在于,基于所述第一权重系数获取所述第二权重系数,包括:
基于以下公式计算所述第二权重系数:
sampleWeight2=T-sampleWeight1;
其中,所述sampleWeight1表示所述第一权重系数,所述sampleWeight2表示所述第二权重系数,所述T为预定义的常数。
5.根据权利要求4所述的方法,其特征在于,所述T等于8。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述样本集是4×4样本阵列。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述第一子块和所述第二子块为三角部分、梯形部分或非对称矩形部分。
8.根据权利要求1至7中任一项所述的方法,其特征在于,所述共同边界为所述几何分割模式的分割线。
9.一种解码装置,其特征在于,所述装置包括:
接收模块,用于接收码流,所述码流中包括当前块的编码数据和指示符,所述当前块被共同边界分割为第一子块和第二子块,所述第一子块对应第一预测值,所述第二子块对应第二预测值;
解析模块,用于解析所述码流获取所述指示符;
获取模块,用于基于所述指示符获取角度参数和距离参数,所述角度参数表示几何分割模式的角度索引,所述距离参数表示所述几何分割模式的距离索引;
计算模块,用于基于所述角度参数和所述距离参数确定所述当前块中的样本集与所述共同边界之间的距离;
所述计算模块,还用于:
基于所述距离获取第一权重系数;
基于所述第一权重系数获取第二权重系数;
基于所述第一预测值、所述第二预测值,所述第一权重系数和所述第二权重系数获取所述当前块的组合预测值。
10.根据权利要求9所述的装置,其特征在于,所述角度参数为angleIdx,所述距离参数为distanceIdx,所述计算模块具体用于:
基于以下公式计算所述距离:
distFromLine=((x<<N)+K)*P1+((y<<N)+K)*P2-P3;
其中,distFromLine表示所述距离,K为非负整数,N=1,P1,P2和P3分别为第一计算参数,第二计算参数和第三计算参数,所述第一计算参数根据所述angleIdx查找第一预设查找表得到的,所述第二计算参数是根据临时角度参数查找所述第一预设查找表得到的,所述临时角度参数为(angleIdx+8)%32,所述第三计算参数是根据所述angleIdx和所述distanceIdx得到的。
11.根据权利要求9或10所述的装置,其特征在于,所述计算模块还用于:
基于以下公式计算所述第一权重系数:
sampleWeight1=Clip3(0,8,f(sample_dist));
其中所述sampleWeight1表示所述第一权重系数,所述sample_dist表示所述距离,所述f(sample_dist)表示以sample_dist为输入的函数。
12.根据权利要求9至11中任一项所述的装置,其特征在于,所述计算模块还用于:
基于以下公式计算所述第二权重系数:
sampleWeight2=T-sampleWeight1;
其中,所述sampleWeight1表示所述第一权重系数,所述sampleWeight2表示所述第二权重系数,所述T为预定义的常数所述T等于8。
13.根据权利要求12所述的装置,其特征在于,所述T等于8。
14.根据权利要求9至13中任一项所述的装置,其特征在于,所述样本集是4×4样本阵列。
15.根据权利要求9至14中任一项所述的装置,其特征在于,所述第一子块和所述第二子块为三角部分、梯形部分或非对称矩形部分。
16.根据权利要求9至15中任一项所述的装置,其特征在于,所述共同边界为所述几何分割模式的分割线。
17.一种用于对视频流进行解码的装置,其特征在于,包括处理器和存储器,其中,所述存储器存储使所述处理器执行根据权利要求1至8中任一项所述的方法的指令。
18.一种编码码流的方法,其特征在于,所述方法包括:
将当前块和指示符编码至码流中,其中所述当前块被共同边界分割为第一子块和第二子块,所述第一子块对应第一预测值,所述第二子块对应第二预测值;所述指示符用于获取角度参数和距离参数,所述角度参数表示几何分割模式的角度索引,所述距离参数表示所述几何分割模式的距离索引;
基于所述角度参数和所述距离参数确定所述当前块中的样本集与所述共同边界之间的距离;
基于所述距离获取第一权重系数;
基于所述第一权重系数获取第二权重系数;
基于所述第一预测值、所述第二预测值,所述第一权重系数和所述第二权重系数获取所述当前块的组合预测值。
19.根据权利要求18所述的方法,其特征在于,所述角度参数为angleIdx,所述距离参数为distanceIdx,其中所述基于所述角度参数和所述距离参数确定所述当前块中的样本集与所述共同边界之间的距离,包括:
基于以下公式计算所述距离:
distFromLine=((x<<N)+K)*P1+((y<<N)+K)*P2-P3;
其中,distFromLine表示所述距离,K为非负整数,N=1,P1,P2和P3分别为第一计算参数,第二计算参数和第三计算参数,所述第一计算参数根据所述angleIdx查找第一预设查找表得到的,所述第二计算参数是根据临时角度参数查找所述第一预设查找表得到的,所述临时角度参数为(angleIdx+8)%32,所述第三计算参数是根据所述angleIdx和所述distanceIdx得到的。
20.根据权利要求18或19所述的方法,其特征在于,基于所述距离获取第一权重系数,包括:
基于以下公式计算所述第一权重系数:
sampleWeight1=Clip3(0,8,f(sample_dist));
其中所述sampleWeight1表示所述第一权重系数,所述sample_dist表示所述距离,所述f(sample_dist)表示以sample_dist为输入的函数。
21.根据权利要求18至20中任一项所述的方法,其特征在于,基于所述第一权重系数获取所述第二权重系数,包括:
基于以下公式计算所述第二权重系数:
sampleWeight2=T-sampleWeight1;
其中,所述sampleWeight1表示所述第一权重系数,所述sampleWeight2表示所述第二权重系数,所述T为预定义的常数。
22.根据权利要求21所述的方法,其特征在于,所述T等于8。
23.根据权利要求18至22中任一项所述的方法,其特征在于,所述样本集是4×4样本阵列。
24.根据权利要求18至23中任一项所述的方法,其特征在于,所述第一子块和所述第二子块为三角部分、梯形部分或非对称矩形部分。
25.根据权利要求18至24中任一项所述的方法,其特征在于,所述共同边界为所述几何分割模式的分割线。
26.一种用于对视频流进行编码的装置,其特征在于,包括处理器和存储器,其中,所述存储器存储使所述处理器执行根据权利要求18至25中任一项所述的方法的指令。
27.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,所述指令在被执行时使一个或多个处理器执行根据权利要求1至8或18至25中任一项所述的方法。
28.一种解码码流的设备,其特征在于,包括可读存储介质和解码器,所述可读存储介质用于存储码流,所述码流包括当前块的编码数据和指示符,其中所述当前块被共同边界分割为第一子块和第二子块,所述第一子块对应第一预测值,所述第二子块对应第二预测值;所述指示符用于获取角度参数和距离参数,所述角度参数表示几何分割模式的角度索引,所述距离参数表示所述几何分割模式的距离索引;所述角度参数和所述距离参数用于确定所述当前块中的样本集与所述共同边界之间的距离,所述距离用于获取第一权重系数,所述第一权重系数用于获取第二权重系数,所述第一权重系数和所述第二权重系数用于结合所述第一预测值和所述第二预测值获取所述当前块的组合预测值;
所述解码器用于执行如权利要求1至8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310530937.9A CN116708797A (zh) | 2019-08-26 | 2019-08-26 | 运动信息存储方法及装置 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201980099675.7A CN114270845A (zh) | 2019-08-26 | 2019-08-26 | 运动信息存储方法及装置 |
PCT/EP2019/072716 WO2021037337A1 (en) | 2019-08-26 | 2019-08-26 | Method and apparatus for motion information storage |
CN202310530937.9A CN116708797A (zh) | 2019-08-26 | 2019-08-26 | 运动信息存储方法及装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980099675.7A Division CN114270845A (zh) | 2019-08-26 | 2019-08-26 | 运动信息存储方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116708797A true CN116708797A (zh) | 2023-09-05 |
Family
ID=67777310
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310530937.9A Pending CN116708797A (zh) | 2019-08-26 | 2019-08-26 | 运动信息存储方法及装置 |
CN202210704754.XA Active CN115118978B (zh) | 2019-08-26 | 2019-08-26 | 运动信息存储方法及装置 |
CN201980099675.7A Pending CN114270845A (zh) | 2019-08-26 | 2019-08-26 | 运动信息存储方法及装置 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210704754.XA Active CN115118978B (zh) | 2019-08-26 | 2019-08-26 | 运动信息存储方法及装置 |
CN201980099675.7A Pending CN114270845A (zh) | 2019-08-26 | 2019-08-26 | 运动信息存储方法及装置 |
Country Status (17)
Country | Link |
---|---|
US (1) | US12081765B2 (zh) |
EP (2) | EP4005204B1 (zh) |
JP (2) | JP7385004B2 (zh) |
KR (2) | KR20240119195A (zh) |
CN (3) | CN116708797A (zh) |
AU (1) | AU2019462982A1 (zh) |
BR (1) | BR112022003113A2 (zh) |
CA (1) | CA3152030A1 (zh) |
DK (1) | DK4005204T3 (zh) |
ES (1) | ES2967663T3 (zh) |
FI (1) | FI4005204T3 (zh) |
HU (1) | HUE064061T2 (zh) |
MX (1) | MX2022002197A (zh) |
PL (1) | PL4005204T3 (zh) |
PT (1) | PT4005204T (zh) |
WO (1) | WO2021037337A1 (zh) |
ZA (1) | ZA202201896B (zh) |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2461977C2 (ru) | 2006-12-18 | 2012-09-20 | Конинклейке Филипс Электроникс Н.В. | Сжатие и снятие сжатия изображения |
KR101740039B1 (ko) * | 2009-06-26 | 2017-05-25 | 톰슨 라이센싱 | 적응형 기하학적 분할을 이용한 비디오 인코딩 및 디코딩 방법 및 장치 |
US8879632B2 (en) * | 2010-02-18 | 2014-11-04 | Qualcomm Incorporated | Fixed point implementation for geometric motion partitioning |
JP2012023597A (ja) * | 2010-07-15 | 2012-02-02 | Sony Corp | 画像処理装置及び画像処理方法 |
JP2012080369A (ja) * | 2010-10-01 | 2012-04-19 | Sony Corp | 画像処理装置及び画像処理方法 |
US9338476B2 (en) | 2011-05-12 | 2016-05-10 | Qualcomm Incorporated | Filtering blockiness artifacts for video coding |
US8964833B2 (en) | 2011-07-19 | 2015-02-24 | Qualcomm Incorporated | Deblocking of non-square blocks for video coding |
CN103716629B (zh) | 2012-09-29 | 2017-02-22 | 华为技术有限公司 | 用于图像处理的方法、装置、编码器和解码器 |
US10200711B2 (en) | 2015-03-27 | 2019-02-05 | Qualcomm Incorporated | Motion vector derivation in video coding |
KR20180081716A (ko) | 2015-11-13 | 2018-07-17 | 엘지전자 주식회사 | 영상 코딩 시스템에서 임계값을 이용한 적응적 영상 예측 방법 및 장치 |
WO2017195554A1 (ja) | 2016-05-13 | 2017-11-16 | シャープ株式会社 | 予測画像生成装置、動画像復号装置、および動画像符号化装置。 |
CN112584161B (zh) * | 2018-12-28 | 2022-05-31 | 杭州海康威视数字技术股份有限公司 | 一种编解码方法及其设备 |
EP3987795A4 (en) * | 2019-08-15 | 2023-02-08 | Alibaba Group Holding Limited | BLOCK PARTITION METHODS FOR VIDEO CODING |
US11570434B2 (en) * | 2019-08-23 | 2023-01-31 | Qualcomm Incorporated | Geometric partition mode with harmonized motion field storage and motion compensation |
-
2019
- 2019-08-26 KR KR1020247025742A patent/KR20240119195A/ko active Application Filing
- 2019-08-26 KR KR1020227008195A patent/KR102691349B1/ko active IP Right Grant
- 2019-08-26 CN CN202310530937.9A patent/CN116708797A/zh active Pending
- 2019-08-26 EP EP19759556.4A patent/EP4005204B1/en active Active
- 2019-08-26 HU HUE19759556A patent/HUE064061T2/hu unknown
- 2019-08-26 MX MX2022002197A patent/MX2022002197A/es unknown
- 2019-08-26 BR BR112022003113A patent/BR112022003113A2/pt unknown
- 2019-08-26 PL PL19759556.4T patent/PL4005204T3/pl unknown
- 2019-08-26 AU AU2019462982A patent/AU2019462982A1/en active Pending
- 2019-08-26 JP JP2022510850A patent/JP7385004B2/ja active Active
- 2019-08-26 FI FIEP19759556.4T patent/FI4005204T3/fi active
- 2019-08-26 WO PCT/EP2019/072716 patent/WO2021037337A1/en unknown
- 2019-08-26 CN CN202210704754.XA patent/CN115118978B/zh active Active
- 2019-08-26 PT PT197595564T patent/PT4005204T/pt unknown
- 2019-08-26 EP EP23174453.3A patent/EP4221212A1/en active Pending
- 2019-08-26 DK DK19759556.4T patent/DK4005204T3/da active
- 2019-08-26 CN CN201980099675.7A patent/CN114270845A/zh active Pending
- 2019-08-26 CA CA3152030A patent/CA3152030A1/en active Pending
- 2019-08-26 ES ES19759556T patent/ES2967663T3/es active Active
-
2022
- 2022-02-14 ZA ZA2022/01896A patent/ZA202201896B/en unknown
- 2022-02-25 US US17/681,066 patent/US12081765B2/en active Active
-
2023
- 2023-11-09 JP JP2023191269A patent/JP2024020331A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
KR102691349B1 (ko) | 2024-08-05 |
HUE064061T2 (hu) | 2024-02-28 |
ZA202201896B (en) | 2022-12-21 |
KR20240119195A (ko) | 2024-08-06 |
DK4005204T3 (da) | 2024-01-02 |
CN115118978A (zh) | 2022-09-27 |
MX2022002197A (es) | 2022-03-11 |
US20220191504A1 (en) | 2022-06-16 |
JP7385004B2 (ja) | 2023-11-21 |
WO2021037337A1 (en) | 2021-03-04 |
CA3152030A1 (en) | 2021-03-04 |
EP4005204B1 (en) | 2023-10-04 |
CN114270845A (zh) | 2022-04-01 |
PT4005204T (pt) | 2023-12-06 |
BR112022003113A2 (pt) | 2022-05-17 |
FI4005204T3 (fi) | 2024-01-09 |
ES2967663T3 (es) | 2024-05-03 |
JP2022545785A (ja) | 2022-10-31 |
KR20220044817A (ko) | 2022-04-11 |
CN115118978B (zh) | 2023-04-11 |
EP4221212A1 (en) | 2023-08-02 |
AU2019462982A1 (en) | 2022-03-03 |
US12081765B2 (en) | 2024-09-03 |
PL4005204T3 (pl) | 2024-03-11 |
EP4005204A1 (en) | 2022-06-01 |
JP2024020331A (ja) | 2024-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113613013B (zh) | 视频解码设备、由解码设备实现的译码方法和解码器 | |
CN113748677A (zh) | 编码器、解码器及对应的帧内预测方法 | |
CN112673633B (zh) | 合并模式的编码器、解码器及对应方法 | |
CN114026864B (zh) | 用于几何分割模式的色度样本权重推导 | |
CN114450958B (zh) | 用于减小增强插值滤波器的内存带宽的仿射运动模型限制 | |
CN113597761A (zh) | 帧内预测方法和装置 | |
CN114845102A (zh) | 光流修正的提前终止 | |
CN114503558B (zh) | 插值滤波器在仿射运动补偿中的适应性使用 | |
CN114830665B (zh) | 仿射运动模型限制 | |
CN113348665B (zh) | 编码器、解码器及色度帧内模式推导的对应方法 | |
CN113170118B (zh) | 视频译码中进行色度帧内预测的方法及装置 | |
CN112868233B (zh) | 编码器、解码器及相应的帧间预测方法 | |
CN113875251A (zh) | 用于几何分割模式的自适应滤波器强度指示 | |
CN115278227B (zh) | 一种由解码设备或编码设备实现的译码方法,编码器和解码器 | |
CN115118978B (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 |