CN110166778A - 视频解码方法、视频解码器以及电子设备 - Google Patents
视频解码方法、视频解码器以及电子设备 Download PDFInfo
- Publication number
- CN110166778A CN110166778A CN201810147223.9A CN201810147223A CN110166778A CN 110166778 A CN110166778 A CN 110166778A CN 201810147223 A CN201810147223 A CN 201810147223A CN 110166778 A CN110166778 A CN 110166778A
- Authority
- CN
- China
- Prior art keywords
- motion vector
- precision
- image block
- current
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
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/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/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- 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
- H04N19/139—Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
-
- 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/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/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive 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/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)
Abstract
本申请提供了视频解码方法及视频解码器。该方法包括:从码流中解析出当前图像块的运动矢量差值(MVD)信息;获取当前图像块的运动矢量预测值(MVP);当该MVP被包括于与目标运动矢量精度(MVR)对应的目标运动矢量集合时,基于所述MVP、所述MVD信息以及所述MVR,得到当前图像块的运动矢量,其中,目标运动矢量集合为多个运动矢量集合中的一个,所述多个运动矢量集合包括第一运动矢量集合和第二运动矢量集合,所述第一运动矢量集合对应的第一运动矢量精度不同于所述第二运动矢量集合对应的第二运动矢量精度;基于当前图像块的具有MVR的运动矢量,得到当前图像块的预测块;基于所述预测块对当前图像块进行重建。本申请实施例有利于提高运动矢量预测精度。
Description
技术领域
本申请涉及视频编解码技术领域,尤其涉及视频解码方法、视频解码器以及电子设备。
背景技术
通过视频压缩技术,例如MPEG(Moving Pictures Experts Group,动态图像专家组) -2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4第10部分高级视频编解码(advancedvideo coding,AVC)、ITU-T H.265高效率视频编解码(high efficiency video coding,HEVC)以及 H.266标准定义的标准和上述标准的扩展部分中所描述的那些视频压缩技术,设备之间可以实现高效地发射及接收数字视频信息。通常情况下,视频序列的图像被划分成图像块进行编码或解码。
视频压缩技术中,为了减少或去除视频序列中的冗余信息,引入了基于图像块的空间预测(帧内预测,intra prediction)和/或时间预测(帧间预测,inter prediction)。采用帧间预测技术可以将已编码的图像作为当前帧的参考图像(Reference Frame),为当前图像中的当前图像块寻找匹配的参考块,将参考块中的像素点的像素值作为当前图像块中像素点(sample pixel)的像素值的预测值,并获取当前图像块的运动信息,该运动信息例如可以包括参考块所在图像的指示信息(即参考图像信息)和当前图像块到参考块的位置偏移信息(即运动矢量MV)。图像可被称作帧,且参考图像可被称作参考帧。
为了减少传输运动信息所需的比特开销,可以使用邻近位置的运动信息来预测当前位置的运动信息。将运动信息中的运动矢量进行差分编码,分为运动矢量预测值(MotionVector Prediction,MVP)和运动矢量差(Motion Vector Difference,MVD)两部分。运动矢量预测值可以由时域和/或空域邻近位置的运动矢量推导得出,且运动矢量预测值不编码、或者不直接编码入码流,而在码流中可以编码传输MVD信息。在解码过程中,解码端提取码流中的MVD信息,并推导出运动矢量预测值,计算运动矢量预测值和MVD之和以得到最终MV。推导出的运动矢量预测值越接近最终MV,需要传递的MVD信息越小。
目前常规的H.264及H.265视频编码器与视频解码器之间仅支持传输具有四分之一像素精度的运动矢量差信息,且四分之一像素精度是固定设置的。然而,实际场景中物体运动的距离可能分布在不同像素精度位置,因此目前做法会导致运动矢量预测不准确的情况,从而导致运动矢量预测精度的偏差。
发明内容
本申请实施例提供视频解码方法、视频解码器以及相应的电子设备,以提高运动矢量预测精度,从而提高编解码性能。
第一方面,本申请实施例提供了一种视频解码方法,该方法包括:接收码流,所述码流携带有当前解码图像块的运动矢量差值MVD信息;从所述码流中解析出所述运动矢量差值MVD信息;获取所述当前解码图像块的运动矢量预测值MVP;当所述运动矢量预测值被包括于与目标运动矢量精度对应的目标运动矢量集合时(例如,当所述运动矢量预测值被包括于目标运动矢量集合时,根据多个运动矢量集合与多种运动矢量精度的对应关系确定所述目标运动矢量集合所对应的目标运动矢量精度为所述运动矢量预测值具有的运动矢量精度),基于所述运动矢量预测值、所述运动矢量差值信息以及所述目标运动矢量精度,得到所述当前解码图像块的运动矢量,其中,所述当前解码图像块的运动矢量具有所述目标运动矢量精度,所述目标运动矢量集合为多个运动矢量集合中的一个,所述目标运动矢量精度为包括第一运动矢量精度和第二运动矢量精度的多种运动矢量精度中的一种,所述多个运动矢量集合包括第一运动矢量集合和第二运动矢量集合,所述第一运动矢量集合和第二运动矢量集合中的至少一个运动矢量集合包括两个或以上的运动矢量预测值,且所述第一运动矢量集合所对应的第一运动矢量精度不同于所述第二运动矢量集合所对应的第二运动矢量精度;基于所述当前解码图像块的运动矢量,得到当前解码图像块的预测块(亦可理解为当前解码图像块的像素值的预测值);基于所述预测块对所述当前解码图像块进行重建。
此外,应当理解的是,这里的当前图像块(简称为当前块)可以理解为当前正在处理的图像块。例如在编码过程中,当前图像块或当前编码图像块指当前正在编码的图像块(encoding block);在解码过程中,当前图像块或当前解码图像块指当前正在解码的图像块(decoding block)。
此外,应当理解的是,为当前图像块提供预测的块称为预测块。预测块内的像素值或者采样值或者采样信号,称为预测信号。
应当理解的是,本申请实施例的方法的执行主体可以是视频解码器或具有视频解码功能的电子设备。
可见,本申请实施例的视频解码方法中,在视频解码器获取当前解码图像块的运动矢量预测值之后,通过该运动矢量预测值所属的目标运动矢量集合所对应的目标运动矢量精度的方式,能自适应确定用于当前解码图像块的适当的运动矢量精度,如果运动矢量集合的数目为N,则视频解码器可支持M种运动矢量精度,其中M小于或等于N,M和N均为正整数,提高了运动矢量预测精度,具体地,由于本发明实施例能自适应地选择运动矢量精度,针对某些视频内容对应的一个或多个图像块,使用具有较高像素精度(例如1/8像素精度)的运动矢量相对于使用较低像素精度的运动矢量,提高了视频编解码质量,而且带来的益处优于内插开销代价,比如基于具有高像素精度(例如1/8像素精度)的运动矢量得到的预测块更接近于当前解码图像块的原始块,即使内插分数像素位置导致了一些内插开销;而针对某些视频内容对应的一个或多个图像块,使用较低像素精度的运动矢量(例如整数像素精度)相对于使用较高像素精度的运动矢量,既没有降低视频编解码质量,还避免了内插开销代价,因此,本申请实施例的视频解码方法整体上提高了编解码性能。
结合第一方面,在第一方面的某些实现方式中,所述当所述运动矢量预测值被包括于与目标运动矢量精度对应的目标运动矢量集合时,基于所述运动矢量预测值、所述运动矢量差值(MVD)信息以及目标运动矢量精度,得到所述当前待解码图像块的运动矢量,包括:
确定所述运动矢量预测值被包括于所述目标运动矢量集合,根据多个运动矢量集合与多种运动矢量精度的对应关系确定所述目标矢量集合对应的目标运动矢量精度为所述运动矢量预测值具有的运动矢量精度;
计算所述运动矢量预测值和所述运动矢量差值MVD之和,以得到所述当前解码图像块的运动矢量,所述当前解码图像块的运动矢量、所述运动矢量预测值和运动矢量差值MVD 具有同一运动矢量精度(即均具有目标运动矢量精度);或者,
基于所述目标运动矢量精度(例如基于目标运动矢量精度的索引值)对所述运动矢量差值信息进行缩放(例如放大)处理,以得到经缩放(例如经放大)的运动矢量差值MVD;计算所述运动矢量预测值和所述经放大的运动矢量差值MVD之和,以得到所述当前解码图像块的运动矢量,所述当前解码图像块的运动矢量、所述运动矢量预测值和经放大的运动矢量差值MVD具有同一运动矢量精度(即均具有目标运动矢量精度)。
需要说明的是,这里的多个运动矢量集合与多种运动矢量精度的对应关系可以是一一对应关系,也可以是M:N的对应关系,M不等于N,例如,多个运动矢量集合与多种运动矢量精度也可以是一对多或多对一的对应关系,本申请实施例对此不作限定。
可见,本申请实施例中,针对从所述码流中解析出的当前解码图像块的运动矢量差值 MVD信息,在视频解码器推导出当前解码图像块的运动矢量预测值之后,根据多个运动矢量集合与多种运动矢量精度的对应关系,自适应的推导出目标运动矢量精度,根据自适应推导得来的目标运动矢量精度对所述解析出的MVD信息进行缩放(例如放大)处理,以将所述解析出的运动矢量差信息恢复成视频编码端缩放(例如缩小)处理前的运动矢量差信息,从而保证了运动矢量差缩放的准确性,而且经缩放处理的MVD信息相对于原始MVD信息占用较少的比特开销或相同的比特开销,从而提高了编解码性能。
结合第一方面,在第一方面的某些实现方式中,所述第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前图像块的第一距离不同于所述第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前图像块的第二距离,所述第一邻近块和第二邻近块被包括于所述当前图像块的空域邻近块和/或时域邻近块中。需要说明的是,这里的第一邻近块泛指:分组到第一运动矢量集合中的MVPs所对应的空域和/或时域邻近块,如表-7A所示,第一邻近块可指空域邻近块A1和B1;以及,这里的第二邻近块泛指:分组到第二运动矢量集合中的MVPs所对应的空域和/或时域邻近块,如表-7A所示,第二邻近块可指空域邻近块A0和B0。
需要说明的是,这里的第一距离,例如是第一邻近块的左上角像素位置相对于当前图像块的左上角像素位置的距离,或者第一邻近块的中心点像素位置相对于当前图像块的中心点像素位置的距离;这里的第二距离例如是第二邻近块的左上角像素位置相对于当前图像块的左上角像素位置的距离,或者第二邻近块的中心点像素位置相对于当前图像块的中心点像素位置的距离,但本申请并不限于此。
需要说明的是,这里的空域邻近块可以包括当前图像块所在图像中的、与所述当前图像块邻近的一个或多个空域邻近块。
需要说明的是,这里的时域邻近块可以包括参考图像中、与并置块(co-located块) 邻近的一个或多个空域邻近块,和/或,所述并置块中的一个或多个子块,其中,所述并置块为参考图像中与所述当前图像块具有相同的大小、形状和坐标的图像块。
结合第一方面,在第一方面的某些实现方式中,如果所述第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前解码图像块的第一距离小于所述第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前解码图像块的第二距离,则所述第一运动矢量集合对应的第一运动矢量精度(例如1/8像素精度)高于所述第二运动矢量集合对应的第二运动矢量精度(例如1/4像素精度);或者,
如果所述第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前解码图像块的第一距离大于所述第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前解码图像块的第二距离,则所述第一运动矢量集合对应的第一运动矢量精度(例如 1/4像素精度)低于所述第二运动矢量集合对应的第二运动矢量精度(例如1/8像素精度)。
需要说明的是,这里是针对不同运动矢量集合的说明,而针对某个运动矢量预测值所对应的邻近块与当前图像块的距离等于另一个运动矢量预测值所对应的邻近块与当前图像块的距离的情况,一般是将这两个运动矢量预测值分组到同一运动矢量集合中。
结合第一方面,在第一方面的某些实现方式中,所述多个运动矢量集合与所述多种运动矢量精度的对应关系是预先设置的。
结合第一方面,在第一方面的某些实现方式中,所述多个运动矢量集合与所述多种运动矢量精度的对应关系是根据运动矢量精度赋值规则而确定的,其中,所述运动矢量精度赋值规则用于表征所述运动矢量集合中包括的运动矢量预测值所对应的邻近块与当前图像块之间的距离与运动矢量精度的取值大小之间的关系。所述运动矢量精度赋值规则可以理解为:运动矢量预测值所对应的邻近块与当前解码图像块的距离越近,运动矢量精度越高;运动矢量预测值所对应的邻近块与当前解码图像块的距离越远,运动矢量精度越低。此外,这里的邻近块可以包括但不限于:所述当前解码图像块的空域邻近块和/或时域邻近块。
结合第一方面,在第一方面的某些实现方式中,所述码流进一步携带有运动矢量精度参数,所述运动矢量精度参数用于指示所述多种运动矢量精度的值,所述运动矢量精度参数携带在所述当前解码图像块的序列参数集、图像参数集PPS、条带slice头或者某个其它层级位置处中的任意一种。较优的,这里的多种运动矢量精度可以大于或等于三种运动矢量精度。
结合第一方面,在第一方面的某些实现方式中,所述码流进一步携带有运动矢量精度参数,所述运动矢量精度参数用于指示用于当前解码处理单元的运动矢量精度个数(例如 pps_amvr_number)和与所述运动矢量精度个数对应的至少两种运动矢量精度值(例如 pps_amvr_set[pps_amvr_number]),其中所述当前解码处理单元包括视频序列、图像、条带slice、区域partition、CTU和CU中的一种或多种。
可见,本申请实施例的解码方法中,有利于视频解码器根据从码流中解析出的运动矢量精度参数和运动矢量精度赋值规则而设置所述多个运动矢量集合与所述多种运动矢量精度的对应关系,从而有利于视频解码器自适应地确定用于解码图像块的目标运动矢量精度(例如整像素精度或1/2像素精度或1/4像素精度或1/8像素精度或4像素精度等)。
结合第一方面,在第一方面的某些实现方式中,所述码流进一步携带有第一标识,所述第一标识用于指示第三运动矢量集合对应的第三运动矢量精度;例如,第一标识可以携带在所述解码图像块的序列参数集、图像参数集或者条带头中的任意一种中;或者,
所述码流进一步携带有第一标识和第二标识,所述第一标识用于指示第三运动矢量精度,所述第二标识用于指示第三运动矢量集合;例如,第一标识和第二标识可以携带在所述解码图像块的序列参数集、图像参数集或者条带头中的任意一种中;
其中,所述第三运动矢量集合为所述多个运动矢量集合中的第一运动矢量集合,或者第二运动矢量集合,或者其它运动矢量集合,所述第三运动矢量精度为所述多种运动矢量精度中的第一运动矢量精度,或者第二运动矢量精度,或者其它运动矢量精度。
可见,在视频编码器仅发信号通知重要运动矢量集合的运动矢量精度的情况下,本发明实施例的解码方法能自适应确定用于当前解码图像块的运动矢量精度,而且通过针对重要运动矢量集合传递flag表示具体对应的运动矢量精度,也提高了编解码效率。
结合第一方面,在第一方面的某些实现方式中,所述码流还携带有第三标识(例如,候选预测运动矢量索引),所述第三标识用于指示当前解码图像块的候选运动矢量预测值 MVP(例如,候选预测运动矢量索引可指示在候选运动矢量预测列表中被选定的候选运动矢量预测值的位置);相应地,所述获取所述当前待解码图像块的运动矢量预测值MVP,包括:基于所述第三标识从候选运动矢量预测值列表(motion vector predictioncandidate list)中确定所述当前待解码图像块的候选运动矢量预测值MVP;或者,
所述获取所述当前待解码图像块的运动矢量预测值MVP,包括:采用双向匹配方法或者模板匹配方法,获取所述当前待解码图像块的运动矢量预测值MVP。
可见,一方面,本申请实施例的视频解码方法,不仅适用于高级运动矢量预测模式(advanced motion vector prediction,AMVP)下的候选运动矢量预测值列表,而且也适用于其它模式下使用空域邻近块和/或时域邻近块的运动矢量构建的候选运动矢量预测值列表,从而提高编解码性能。另一方面,本发明实施例的视频解码方法可以支持多种获取运动矢量预测值的方法,从而提高了视频解码方法的灵活性。
本申请的第二方面提供一种视频解码器,包括:熵解码模块,用于接收码流,所述码流携带有当前待解码图像块的运动矢量差值(MVD)信息,并从所述码流中解析出所述当前待解码图像块的运动矢量差值信息;帧间预测模块,用于获取所述当前待解码图像块的运动矢量预测值(MVP);当所述运动矢量预测值被包括于与目标运动矢量精度对应的目标运动矢量集合时,基于所述运动矢量预测值、所述运动矢量差值信息以及所述目标运动矢量精度,得到所述当前解码图像块的运动矢量,其中,所述当前解码图像块的运动矢量具有所述目标运动矢量精度,所述目标运动矢量集合为多个运动矢量集合中的一个,所述目标运动矢量精度为包括第一运动矢量精度和第二运动矢量精度的多种运动矢量精度中的一种,所述多个运动矢量集合包括第一运动矢量集合和第二运动矢量集合,所述第一运动矢量集合和第二运动矢量集合中的至少一个运动矢量集合包括两个或以上的运动矢量预测值,且所述第一运动矢量集合所对应的第一运动矢量精度不同于所述第二运动矢量集合所对应的第二运动矢量精度;以及,基于所述当前解码图像块的具有所述目标运动矢量精度的运动矢量进行运动补偿,以得到所述当前待解码图像块的预测块(亦可理解为当前解码图像块的像素值的预测值);以及,重建模块,用于基于所述当前解码图像块的预测块(亦可理解为当前解码图像块的像素值的预测值)对所述当前解码图像块进行重建。其中,这里的“当所述运动矢量预测值被包括于与目标运动矢量精度对应的目标运动矢量集合时,基于所述运动矢量预测值、所述运动矢量差值信息以及所述目标运动矢量精度,得到所述当前解码图像块的运动矢量”,例如可以是,“当所述运动矢量预测值被包括于所述目标运动矢量集合时,根据多个运动矢量集合与多种运动矢量精度的对应关系确定所述目标运动矢量集合所对应的目标运动矢量精度为所述运动矢量预测值具有的运动矢量精度;基于所述运动矢量预测值、所述运动矢量差值信息以及所述目标运动矢量精度,得到所述当前解码图像块的运动矢量)。
结合第二方面,在第二方面的某些实现方式中,在所述当所述运动矢量预测值被包括于与目标运动矢量精度对应的目标运动矢量集合时,基于所述运动矢量预测值、所述运动矢量差值信息以及目标运动矢量精度,得到所述当前解码图像块的运动矢量的方面,所述帧间预测模块具体用于:
确定所述运动矢量预测值被包括于所述目标运动矢量集合,根据多个运动矢量集合与多种运动矢量精度的对应关系确定所述目标矢量集合对应的目标运动矢量精度为所述运动矢量预测值具有的运动矢量精度;
计算所述运动矢量预测值和所述运动矢量差值MVD信息之和,以得到所述当前解码图像块的运动矢量,所述当前解码图像块的运动矢量、所述运动矢量预测值和运动矢量差值 MVD具有同一运动矢量精度(即均具有目标运动矢量精度);或者,
基于所述目标运动矢量精度对所述运动矢量差值信息进行缩放(例如放大)处理,以得到经缩放(例如经放大的)的运动矢量差值MVD;计算所述运动矢量预测值和所述经放大的运动矢量差值MVD之和,以得到所述当前解码图像块的运动矢量,所述当前解码图像块的运动矢量、所述运动矢量预测值和经放大的运动矢量差值MVD具有同一运动矢量精度(即均具有目标运动矢量精度)。
需要说明的是,这里的多个运动矢量集合与多种运动矢量精度的对应关系可以是一一对应关系,也可以是M:N的对应关系,M不等于N,例如,多个运动矢量集合与多种运动矢量精度也可以是一对多或多对一的对应关系,本申请实施例对此不作限定。
结合第二方面,在第二方面的某些实现方式中,所述第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前解码图像块的第一距离不同于所述第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前解码图像块的第二距离,所述第一邻近块和第二邻近块被包括于所述当前图像块的空域邻近块和/或时域邻近块中。
结合第二方面,在第二方面的某些实现方式中,如果所述第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前解码图像块的第一距离小于所述第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前解码图像块的第二距离,则所述第一运动矢量集合对应的第一运动矢量精度高于所述第二运动矢量集合对应的第二运动矢量精度;或者,
如果所述第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前解码图像块的第一距离大于所述第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前解码图像块的第二距离,则所述第一运动矢量集合对应的第一运动矢量精度低于所述第二运动矢量集合对应的第二运动矢量精度。
结合第二方面,在第二方面的某些实现方式中,所述多个运动矢量集合与所述多种运动矢量精度的对应关系是预先设置的。
结合第二方面,在第二方面的某些实现方式中,所述多个运动矢量集合与所述多种运动矢量精度的对应关系是根据运动矢量精度赋值规则而确定的,其中,所述运动矢量精度赋值规则用于表征所述运动矢量集合中包括的运动矢量预测值所对应的邻近块与当前图像块之间的距离与运动矢量精度的取值大小之间的关系,即:所述运动矢量集合中包括的运动矢量预测值所对应的邻近块与当前解码图像块之间的距离越远,运动矢量精度越低;所述运动矢量集合中包括的运动矢量预测值所对应的邻近块与当前解码图像块之间的距离越近,运动矢量精度越高。
结合第二方面,在第二方面的某些实现方式中,所述码流进一步携带有运动矢量精度参数,所述运动矢量精度参数用于指示所述多种运动矢量精度的值,所述运动矢量精度参数携带在所述解码图像块的序列参数集、图像参数集PPS或者条带头中的任意一种;
相应地,所述熵解码模块还用于从所述码流中解析出所述运动矢量精度参数。
结合第二方面,在第二方面的某些实现方式中,所述码流进一步携带有运动矢量精度参数,所述运动矢量精度参数用于指示用于当前解码处理单元的运动矢量精度个数(例如 pps_amvr_number)和与所述运动矢量精度个数对应的至少两种运动矢量精度值(例如 pps_amvr_set[pps_amvr_number]),其中所述当前解码处理单元包括视频序列、图像、条带slice、区域partition、解码树单元CTU和解码单元CU中的一种或多种;
相应地,所述熵解码模块还用于从所述码流中解析出所述运动矢量精度参数。
结合第二方面,在第二方面的某些实现方式中,所述码流进一步携带有第一标识,所述第一标识用于指示第三运动矢量集合对应的第三运动矢量精度;或者,
所述码流进一步携带有第一标识和第二标识,所述第一标识用于指示第三运动矢量精度,所述第二标识用于指示第三运动矢量集合;
其中,所述第三运动矢量集合为所述多个运动矢量集合中的第一运动矢量集合,或者第二运动矢量集合,或者其它运动矢量集合,所述第三运动矢量精度为所述多种运动矢量精度中的第一运动矢量精度,或者第二运动矢量精度,或者其它运动矢量精度;
相应地,所述熵解码模块还用于从所述码流中解析出所述第一标识,或者解码出所述第一标识和第二标识。
结合第二方面,在第二方面的某些实现方式中,所述码流还携带有用于指示当前解码图像块的候选运动矢量预测值的第三标识,所述熵解码模块还用于从码流中解析出所述第三标识;
在获取所述当前解码图像块的运动矢量预测值的方面,所述帧间预测模块具体用于:
基于所述第三标识从候选运动矢量预测列表中确定所述当前解码图像块的候选运动矢量预测值;或者,
采用双向匹配方法或者模板匹配方法,获取所述当前解码图像块的运动矢量预测值。
本申请实施例还提供视频编码方法、视频编码器以及相应的电子设备,以提高运动矢量预测精度,从而提高编码性能。
本申请的第三方面提供一种视频编码方法,所述方法包括:对当前编码图像块执行运动估计过程,以得到当前编码图像块的运动矢量;获取所述当前编码图像块的运动矢量预测值;当所述运动矢量预测值被包括于与目标运动矢量精度对应的目标运动矢量集合时 (例如,当所述运动矢量预测值被包括于目标运动矢量集合时,根据多个运动矢量集合与多种运动矢量精度的对应关系确定所述目标运动矢量集合所对应的目标运动矢量精度为所述运动矢量预测值具有的/对应的运动矢量精度),基于所述当前待编码图像块的运动矢量、所述运动矢量预测值以及所述目标运动矢量精度,得到所述当前编码图像块的运动矢量差值(MVD)信息;其中,所述当前编码图像块的运动矢量差值(MVD)具有目标运动矢量精度,所述目标运动矢量集合为多个运动矢量集合中的一个,所述目标运动矢量精度为包括第一运动矢量精度和第二运动矢量精度的多种运动矢量精度中的一种,所述多个运动矢量集合包括第一运动矢量集合和第二运动矢量集合,所述第一运动矢量集合和第二运动矢量集合中的至少一个运动矢量集合包括两个或以上的运动矢量预测值,且所述第一运动矢量集合所对应的第一运动矢量精度不同于所述第二运动矢量集合所对应的第二运动矢量精度;以及,将所述当前编码图像块的运动矢量差值信息熵编码入码流。
可见,本申请实施例的视频编码方法中,在视频编码器获取当前编码图像块的运动矢量预测值之后,通过运动矢量预测值所属的目标运动矢量集合所对应的目标运动矢量精度的方式,能自适应确定用于当前编码图像块的适当的运动矢量精度,如果运动矢量集合的数目为N,则视频编码方法可支持M种运动矢量MV精度,其中M小于或等于N,M和N均为正整数,例如M、N大于或等于3,提高了运动矢量预测精度,具体地,由于本发明实施例能自适应地选择运动矢量精度,针对某些视频内容对应的一个或多个图像块,使用具有较高像素精度(例如1/8像素精度)的运动矢量相对于使用较低像素精度的运动矢量,提高了视频编解码质量,而且带来的益处优于内插开销代价,比如,基于具有高像素精度 (例如1/8像素精度)的运动矢量得到的预测块更接近于当前编码图像块的原始块,即使内插分数像素位置导致了一些内插开销;而针对某些视频内容对应的一个或多个图像块,使用较低像素精度的运动矢量(例如整数像素精度)相对于使用较高像素精度的运动矢量,既没有降低视频编解码质量,还避免了内插开销代价,因此,本申请实施例的视频编码方法整体上提高了编解码性能。
结合第三方面,在第三方面的某些实现方式中,所述当所述运动矢量预测值被包括于与目标运动矢量精度对应的目标运动矢量集合时,基于所述当前待编码图像块的运动矢量、所述运动矢量预测值以及所述目标运动矢量精度,得到当前待编码图像块的运动矢量差值(MVD)信息,包括:
确定所述运动矢量预测值被包括于所述目标运动矢量集合,根据多个运动矢量集合与多种运动矢量精度的对应关系确定所述目标矢量集合对应的目标运动矢量精度为所述运动矢量预测值具有的/对应的运动矢量精度;
计算所述当前编码图像块的运动矢量与所述运动矢量预测值之差值MVD,所述当前编码图像块的运动矢量、所述运动矢量预测值和所述MVD具有目标运动矢量精度;或者,
计算所述当前编码图像块的运动矢量与所述运动矢量预测值之差值MVD,所述当前编码图像块的运动矢量和所述运动矢量预测值具有目标运动矢量精度;以及,基于所述目标运动矢量精度(例如所述目标运动矢量精度的索引)对所述计算得到的运动矢量差值进行缩放(例如缩小)处理,以得到经缩放处理(例如经缩小处理)的运动矢量差值。
可见,本申请实施例的视频编码方法中,通过自适应选择像素精度能在编码效率和比特开销之间达成较好的平衡,而且视频编码器能自适应选择目标运动矢量精度来编码所述 MVD信息,比如,经缩小处理的运动矢量差值相对于原始运动矢量差占用较少的比特数或者占用一样的比特数,针对前者还能降低了比特传输开销,从而整体上提高了编解码性能。
结合第三方面,在第三方面的某些实现方式中,所述第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前图像块的第一距离不同于所述第二运动矢量集合中的运动矢量预测值所对应的第一二邻近块与当前图像块的第二距离,所述第一邻近块和第二邻近块被包括于所述当前图像块的空域邻近块和/或时域邻近块中。需要说明的是,这里的第一邻近块泛指:分组到第一运动矢量集合中的MVPs所对应的空域和/或时域邻近块,如表-3所示,第一邻近块可指空域邻近块A1和B1;以及,这里的第二邻近块泛指:分组到第二运动矢量集合中的MVPs所对应的空域和/或时域邻近块,如表-7A所示,第二邻近块可指空域邻近块A0和B0。
结合第三方面,在第三方面的某些实现方式中,如果第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前编码图像块的第一距离小于第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前编码图像块的第二距离,则所述第一运动矢量集合对应的第一运动矢量精度高于所述第二运动矢量集合对应的第二运动矢量精度;或者,
如果所述第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前编码图像块的第一距离大于所述第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前编码图像块的第二距离,则所述第一运动矢量集合对应的第一运动矢量精度低于所述第二运动矢量集合对应的第二运动矢量精度。
结合第三方面,在第三方面的某些实现方式中,所述多个运动矢量集合与多种运动矢量精度的对应关系是预先设置的。
结合第三方面,在第三方面的某些实现方式中,所述多个运动矢量集合与多种运动矢量精度的对应关系是根据运动矢量精度赋值规则而确定的;其中,所述运动矢量精度赋值规则用于表征所述运动矢量集合中包括的运动矢量预测值所对应的邻近块与当前图像块之间的距离与运动矢量精度的取值大小之间的关系。所述运动矢量精度赋值规则可以理解为:运动矢量预测值所对应的邻近块与当前编码图像块的距离越近,运动矢量精度越高;运动矢量预测值所对应的邻近块与当前编码图像块的距离越远,运动矢量精度越低。此外,这里的邻近块可以包括但不限于:所述当前编码图像块的空域邻近块和/或时域邻近块。
结合第三方面,在第三方面的某些实现方式中,所述方法还包括:
将运动矢量精度参数熵编码入码流,所述运动矢量精度参数用于指示所述多种运动矢量精度的值,所述运动矢量精度参数携带在所述编码图像块的序列参数集、图像参数集 PPS或者条带头中的任意一种。
结合第三方面,在第三方面的某些实现方式中,所述方法还包括:
将运动矢量精度参数熵编码入码流,所述运动矢量精度参数用于指示用于当前编码处理单元的运动矢量精度个数(例如pps_amvr_number)和与所述运动矢量精度个数对应的至少两种运动矢量精度值(例如pps_amvr_set[pps_amvr_number]),其中所述当前编码处理单元包括视频序列、图像、条带slice、区域partition、编码树单元(Coding TreeUnit,CTU)和编码单元(coding unit,CU)中的一种或多种。
结合第三方面,在第三方面的某些实现方式中,所述方法还包括:
将第一标识熵编码入码流,所述第一标识用于指示第三运动矢量集合对应的第三运动矢量精度;或者,
将第一标识和第二标识熵编码入码流,所述第一标识用于指示第三运动矢量精度,所述第二标识用于指示第三运动矢量集合;
其中,所述第三运动矢量集合为所述多个运动矢量集合中的第一运动矢量集合,或者第二运动矢量集合,或者其它运动矢量集合,所述第三运动矢量精度为所述多种运动矢量精度中的第一运动矢量精度,或者第二运动矢量精度,或者其它运动矢量精度。
可见,相对于现有的视频编码方法,本申请实施例的视频编码方法仅发信号通知重要运动矢量集合的运动矢量精度,能进一步节省比特开销,提高了视频图像的编解码性能
结合第三方面,在第三方面的某些实现方式中,所述获取当前待编码图像块的运动矢量预测值,包括:根据率失真代价准则从候选运动矢量预测列表(candidate MVPlist) 中确定用于当前待编码图像块的候选运动矢量预测值MVP,例如,所述候选运动矢量预测值MVP编码所述当前编码图像块的码率失真代价最小;
所述将当前待编码图像块的运动矢量差值MVD熵编码入码流,包括:
将当前待编码图像块的运动矢量差值MVD和第三标识(例如,候选预测运动矢量索引) 熵编码入码流,所述第三标识用于指示当前编码图像块的候选运动矢量预测值MVP(例如,候选预测运动矢量索引可指示在候选运动矢量预测列表中被选定的候选运动矢量预测值的位置)。
需要说明的是,本申请实施例的视频编码方法,不仅适用于高级运动矢量预测模式(advanced motion vector prediction,AMVP)下的候选运动矢量预测值列表,而且也适用于其它模式下使用空域邻近块和/或时域邻近块的运动矢量构建的候选运动矢量预测值列表,从而提高编解码性能。
本申请的第四方面提供一种视频编码器,包括:帧间预测模块,用于对当前编码图像块执行运动估计过程,以得到当前编码图像块的运动矢量;以及获取所述当前编码图像块的运动矢量预测值;所述帧间预测模块还用于当所述运动矢量预测值被包括于与目标运动矢量精度对应的目标运动矢量集合时(例如,当所述运动矢量预测值被包括于目标运动矢量集合时,根据多个运动矢量集合与多种运动矢量精度的对应关系确定所述目标运动矢量集合所对应的目标运动矢量精度为所述运动矢量预测值具有的/对应的运动矢量精度),基于所述当前编码图像块的运动矢量、所述运动矢量预测值以及所述目标运动矢量精度,得到所述当前编码图像块的运动矢量差值(MVD)信息;其中,所述当前编码图像块的运动矢量差值(MVD)具有目标运动矢量精度,所述目标运动矢量集合为多个运动矢量集合中的一个,所述目标运动矢量精度为包括第一运动矢量精度和第二运动矢量精度的多种运动矢量精度中的一种,所述多个运动矢量集合包括第一运动矢量集合和第二运动矢量集合,所述第一运动矢量集合和第二运动矢量集合中的至少一个运动矢量集合包括两个或以上的运动矢量预测值,且所述第一运动矢量集合所对应的第一运动矢量精度不同于所述第二运动矢量集合所对应的第二运动矢量精度;以及,熵编码模块,用于将所述当前待编码图像块的运动矢量差值(MVD)信息熵编码入码流。
结合第四方面,在第四方面的某些实现方式中,在所述基于所述当前编码图像块的运动矢量、所述运动矢量预测值以及所述目标运动矢量精度,得到当前编码图像块的运动矢量差值(MVD)信息的方面,所述帧间预测模块具体用于:
确定所述运动矢量预测值被包括于所述目标运动矢量集合,根据多个运动矢量集合与多种运动矢量精度的对应关系确定所述目标矢量集合对应的目标运动矢量精度为所述运动矢量预测值具有的/对应的运动矢量精度;计算所述当前编码图像块的运动矢量与所述运动矢量预测值之差值MVD,所述当前编码图像块的运动矢量、所述运动矢量预测值和所述MVD具有目标运动矢量精度;或者,
计算所述当前编码图像块的运动矢量与所述运动矢量预测值之差值MVD,所述当前编码图像块的运动矢量和所述运动矢量预测值具有目标运动矢量精度;以及,基于所述目标运动矢量精度(例如基于所述目标运动矢量精度的索引值)对所述计算得到的运动矢量差值进行缩放(例如缩小)处理,以得到经缩放(例如经缩小)的运动矢量差值。
结合第四方面,在第四方面的某些实现方式中,所述第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前图像块的第一距离不同于所述第二运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前图像块的第二距离,所述第一邻近块和第二邻近块被包括于所述当前图像块的空域邻近块和/或时域邻近块中。
结合第四方面,在第四方面的某些实现方式中,如果第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前编码图像块的第一距离小于第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前编码图像块的第二距离,则所述第一运动矢量集合对应的第一运动矢量精度高于所述第二运动矢量集合对应的第二运动矢量精度;或者,
如果所述第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前编码图像块的第一距离大于所述第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前编码图像块的第二距离,则所述第一运动矢量集合对应的第一运动矢量精度低于所述第二运动矢量集合对应的第二运动矢量精度。
结合第四方面,在第四方面的某些实现方式中,所述多个运动矢量集合与多种运动矢量精度的对应关系是预先设置的。
结合第四方面,在第四方面的某些实现方式中,所述多个运动矢量集合与多种运动矢量精度的对应关系是根据运动矢量精度赋值规则而确定的;其中,所述运动矢量精度赋值规则用于表征所述运动矢量集合中包括的运动矢量预测值所对应的邻近块与当前图像块之间的距离与运动矢量精度的取值大小之间的关系。所述运动矢量精度赋值规则可以理解为:运动矢量预测值所对应的邻近块与当前编码图像块的距离越近,运动矢量精度越高;运动矢量预测值所对应的邻近块与当前编码图像块的距离越远,运动矢量精度越低。此外,这里的邻近块可以包括但不限于:所述当前编码图像块的空域邻近块和/或时域邻近块。
结合第四方面,在第四方面的某些实现方式中,所述熵编码模块还用于:将运动矢量精度参数熵编码入码流,所述运动矢量精度参数用于指示所述多种运动矢量精度的值,所述运动矢量精度参数携带在所述编码图像块的序列参数集、图像参数集PPS或者条带头中的任意一种。
结合第四方面,在第四方面的某些实现方式中,所述熵编码模块还用于:将运动矢量精度参数熵编码入码流,所述运动矢量精度参数用于指示用于当前编码处理单元的运动矢量精度个数(例如pps_amvr_number)和与所述运动矢量精度个数对应的至少两种运动矢量精度值(例如pps_amvr_set[pps_amvr_number]),其中所述当前编码处理单元包括视频序列、图像、条带、区域partition、编码树单元(Coding Tree Unit,CTU)和编码单元(coding unit,CU)中的一种或多种。
结合第四方面,在第四方面的某些实现方式中,所述熵编码模块还用于:
将第一标识熵编码入码流,所述第一标识用于指示第三运动矢量集合对应的第三运动矢量精度;或者,
将第一标识和第二标识熵编码入码流,所述第一标识用于指示第三运动矢量精度,所述第二标识用于指示第三运动矢量集合;
其中,所述第三运动矢量集合为所述多个运动矢量集合中的第一运动矢量集合,或者第二运动矢量集合,或者其它运动矢量集合,所述第三运动矢量精度为所述多种运动矢量精度中的第一运动矢量精度,或者第二运动矢量精度,或者其它运动矢量精度。
结合第四方面,在第四方面的某些实现方式中,在获取当前待编码图像块的运动矢量预测值的方面,所述帧间预测模块具体用于:根据率失真代价准则从候选运动矢量预测列表(candidate MVP list)中确定用于当前待编码图像块的候选运动矢量预测值MVP例如,所述候选运动矢量预测值MVP编码所述当前编码图像块的码率失真代价最小;
所述熵编码模块还用于将第三标识熵(例如,候选预测运动矢量索引)编码入码流,所述第三标识用于指示当前编码图像块的候选运动矢量预测值(MVP)(例如,候选预测运动矢量索引可指示在候选运动矢量预测列表中被选定的候选运动矢量预测值的位置)。
本申请的第五方面提供一种视频解码方法,包括:接收码流,所述码流携带有当前解码图像块的运动矢量差值MVD信息和用于指示当前解码图像块的候选运动矢量预测值MVP 的索引,从所述码流中解析出所述MVD信息和所述索引;基于所述索引,从候选运动矢量预测值列表中确定用于当前解码图像块的候选运动矢量预测值MVP;当所述候选运动矢量预测值MVP被包括于与目标运动矢量精度对应的目标运动矢量集合时(例如,当所述运动矢量预测值被包括于目标运动矢量集合时,根据多个运动矢量集合与多种运动矢量精度的对应关系确定所述目标运动矢量集合所对应的目标运动矢量精度为所述运动矢量预测值具有的/对应的运动矢量精度),基于所述候选运动矢量预测值MVP、所述运动矢量差值 MVD信息以及所述目标运动矢量精度,得到所述当前解码图像块的运动矢量,其中,所述当前解码图像块的运动矢量具有所述目标运动矢量精度,所述目标运动矢量集合为多个运动矢量集合中的一个,所述目标运动矢量精度为包括第一运动矢量精度和第二运动矢量精度的多种运动矢量精度中的一种,所述多个运动矢量集合包括第一运动矢量集合和第二运动矢量集合,所述第一运动矢量集合和第二运动矢量集合中的至少一个运动矢量集合包括两个或以上的运动矢量预测值,且所述第一运动矢量集合所对应的第一运动矢量精度不同于所述第二运动矢量集合所对应的第二运动矢量精度;基于所述当前解码图像块的具有所述目标运动矢量精度的运动矢量进行运动补偿,得到当前解码图像块的预测块(亦可理解为当前解码图像块的像素值的预测值);基于所述预测块对所述当前解码图像块进行重建。
需要说明的是,目标运动矢量集合,例如为用于构建候选运动矢量预测值列表的多个运动矢量预测值的子集。例如,多个运动矢量集合为用于构建候选运动矢量预测值列表的多个运动矢量预测值的多个子集,不同运动矢量集合中包括的运动矢量预测值彼此之间是不同的。
应当理解的是,本申请实施例的方法的执行主体可以是视频解码器或具有视频解码功能的电子设备。
可见,本申请实施例的视频解码方法中,在视频解码器获取当前解码图像块的候选运动矢量预测值之后,通过该运动矢量预测值所属的目标运动矢量集合所对应的目标运动矢量精度的方式,能自适应确定用于当前解码图像块的适当的运动矢量精度,如果运动矢量集合的数目为N,则视频解码器可支持M种运动矢量MV精度,其中M小于或等于N,M和 N均为正整数,提高了运动矢量预测精度,具体地,由于本发明实施例能自适应地选择运动矢量精度,针对某些视频内容对应的一个或多个图像块,使用具有较高像素精度(例如1/8像素精度)的运动矢量相对于使用较低像素精度的运动矢量,提高了视频编解码质量,而且带来的益处优于内插开销代价,比如,基于具有高像素精度(例如1/8像素精度)的运动矢量得到的预测块更接近于当前解码图像块的原始块,即使内插分数像素位置导致了一些内插开销;而针对某些视频内容对应的一个或多个图像块,使用较低像素精度的运动矢量(例如整数像素精度)相对于使用较高像素精度的运动矢量,既没有降低视频编解码质量,还避免了内插开销代价,因此,本申请实施例的视频解码方法整体上提高了编解码性能。
结合第五方面,在第五方面的某些实现方式中,所述当候选运动矢量预测值MVP被包括于与目标运动矢量精度对应的目标运动矢量集合时,基于所述候选运动矢量预测值MVP、所述运动矢量差值(MVD)信息以及目标运动矢量精度,得到所述当前待解码图像块的运动矢量,包括:
确定所述候选运动矢量预测值被包括于所述目标运动矢量集合,根据多个运动矢量集合与多种运动矢量精度的对应关系确定所述目标矢量集合对应的目标运动矢量精度为所述候选运动矢量预测值具有的/对应的运动矢量精度;
计算所述候选运动矢量预测值MVP和所述运动矢量差值MVD之和,以得到所述当前解码图像块的运动矢量,所述当前解码图像块的运动矢量、所述候选运动矢量预测值MVP和运动矢量差值MVD具有同一运动矢量精度(即均具有目标运动矢量精度);或者,
基于所述目标运动矢量精度对所述运动矢量差值信息进行缩放(例如放大)处理,以得到经缩放(例如经放大的)的运动矢量差值MVD;计算所述候选运动矢量预测值MVP和所述经缩放的运动矢量差值MVD之和,以得到所述当前解码图像块的运动矢量,所述当前解码图像块的运动矢量、所述候选运动矢量预测值MVP和运动矢量差值MVD具有同一运动矢量精度(即均具有目标运动矢量精度)。
需要说明的是,这里的多个运动矢量集合与多种运动矢量精度的对应关系可以是一一对应关系,也可以是M:N的对应关系,M不等于N,例如,多个运动矢量集合与多种运动矢量精度也可以是一对多或多对一的对应关系,本申请实施例对此不作限定。
可见,本申请实施例中,针对从所述码流中解析出的当前解码图像块的经缩放过的运动矢量差值MVD信息,在视频解码器确定候选运动矢量预测值列表中索引对应的当前解码图像块的候选运动矢量预测值MVP之后,根据多个运动矢量集合与多种运动矢量精度的对应关系,自适应的推导出所述MVD信息的目标运动矢量精度,根据自适应推导得来的目标运动矢量精度对所述解析出的MVD信息进行缩放(例如放大)处理,以将所述解析出的经缩放过的运动矢量差信息恢复成视频编码端缩放(例如缩小)处理前的运动矢量差信息,从而保证了运动矢量差缩放的准确性,而且经缩放处理的MVD信息相对于原始MVD信息占用较少的比特开销或相同的比特开销,从而提高了编解码性能。
结合第五方面,在第五方面的某些实现方式中,所述第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前解码图像块的第一距离不同于所述第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前解码图像块的第二距离,所述第一邻近块和第二邻近块被包括于所述当前图像块的空域邻近块和/或时域邻近块中。
需要说明的是,这里的第一距离,例如是第一邻近块的左上角像素位置相对于当前图像块的左上角像素位置的距离,或者第一邻近块的中心点像素位置相对于当前图像块的中心点像素位置的距离;这里的第二距离例如是第二邻近块的左上角像素位置相对于当前图像块的左上角像素位置的距离,或者第二邻近块的中心点像素位置相对于当前图像块的中心点像素位置的距离,但本申请并不限于此。
需要说明的是,这里的空域邻近块可以包括当前解码图像块所在图像中的、与所述当前图像块邻近的一个或多个空域邻近块。
需要说明的是,这里的时域邻近块可以包括参考图像中、与并置块(co-located块) 邻近的一个或多个空域邻近块,和/或,所述并置块中的一个或多个子块,其中,所述并置块为参考图像中与所述当前图像块具有相同的大小、形状和坐标的图像块。
结合第五方面,在第五方面的某些实现方式中,如果所述第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前解码图像块的第一距离小于所述第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前解码图像块的第二距离,则所述第一运动矢量集合对应的第一运动矢量精度(例如1/8像素精度)高于所述第二运动矢量集合对应的第二运动矢量精度(例如1/4像素精度);或者,
如果所述第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前解码图像块的第一距离大于所述第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前解码图像块的第二距离,则所述第一运动矢量集合对应的第一运动矢量精度(例如 1/4像素精度)低于所述第二运动矢量集合对应的第二运动矢量精度(例如1/8像素精度)。
结合第五方面,在第五方面的某些实现方式中,所述多个运动矢量集合与所述多种运动矢量精度的对应关系是预先设置的。
结合第五方面,在第五方面的某些实现方式中,所述多个运动矢量集合与所述多种运动矢量精度的对应关系是根据运动矢量精度赋值规则而确定的,其中,所述运动矢量精度赋值规则用于表征所述运动矢量集合中包括的运动矢量预测值所对应的邻近块与当前解码图像块之间的距离与运动矢量精度的取值大小之间的关系。所述运动矢量精度赋值规则可以理解为:运动矢量预测值所对应的邻近块与当前图像块的距离越近,运动矢量精度越高;运动矢量预测值所对应的邻近块与当前图像块的距离越远,运动矢量精度越低。此外,这里的邻近块可以包括但不限于:所述当前图像块的空域邻近块和/或时域邻近块。
结合第五方面,在第五方面的某些实现方式中,所述码流进一步携带有运动矢量精度参数,所述运动矢量精度参数用于指示所述多种运动矢量精度的值,所述运动矢量精度参数携带在所述解码图像块的序列参数集、图像参数集PPS、条带slice头或者某个其它层级位置处中的任意一种。较优的,这里的多种运动矢量精度可以大于或等于三种运动矢量精度。
结合第五方面,在第五方面的某些实现方式中,所述码流进一步携带有运动矢量精度参数,所述运动矢量精度参数用于指示用于当前解码处理单元的运动矢量精度个数(例如 pps_amvr_number)和与所述运动矢量精度个数对应的至少两种运动矢量精度值(例如 pps_amvr_set[pps_amvr_number]),其中所述当前解码处理单元包括视频序列、图像、条带slice、区域partition、编码树单元(Coding Tree Unit,CTU)和编码单元(codingunit,CU)中的一种或多种。
可见,本申请实施例的解码方法中,有利于视频解码器根据从码流中解析出的运动矢量精度参数和运动矢量精度赋值规则而设置所述多个运动矢量集合与所述多种运动矢量精度的对应关系,从而有利于视频解码器自适应地确定用于解码图像块的目标运动矢量精度(例如整像素精度或1/2像素精度或1/4像素精度或1/8像素精度或4像素精度等)。
结合第五方面,在第五方面的某些实现方式中,所述码流进一步携带有第一标识,所述第一标识用于指示第三运动矢量集合对应的第三运动矢量精度;例如,第一标识可以携带在所述解码图像块的序列参数集、图像参数集或者条带头中的任意一种中;或者,
所述码流进一步携带有第一标识和第二标识,所述第一标识用于指示第三运动矢量精度,所述第二标识用于指示第三运动矢量集合;例如,第一标识和第二标识可以携带在所述解码图像块的序列参数集、图像参数集或者条带头中的任意一种中;
其中,所述第三运动矢量集合为所述多个运动矢量集合中的第一运动矢量集合,或者第二运动矢量集合,或者其它运动矢量集合,所述第三运动矢量精度为所述多种运动矢量精度中的第一运动矢量精度,或者第二运动矢量精度,或者其它运动矢量精度。
可见,在视频编码器仅发信号通知重要运动矢量集合的运动矢量精度的情况下,本发明实施例的解码方法能自适应确定用于当前解码图像块的运动矢量精度,而且通过针对重要运动矢量集合传递flag表示具体对应的运动矢量精度,也提高了编解码效率。
本申请的第六方面提供一种视频解码器,包括:熵解码模块,用于接收码流,所述码流携带有当前解码图像块的运动矢量差值MVD信息和用于指示当前解码图像块的候选运动矢量预测值MVP的索引,从所述码流中解析出所述MVD信息和所述索引;帧间预测模块,用于基于所述索引,从候选运动矢量预测值列表中确定用于当前解码图像块的候选运动矢量预测值MVP(亦称为最佳候选运动矢量预测值MVP);当所述候选运动矢量预测值MVP 被包括于与目标运动矢量精度对应的目标运动矢量集合时(例如,当所述候选运动矢量预测值被包括于目标运动矢量集合时,根据多个运动矢量集合与多种运动矢量精度的对应关系确定所述目标运动矢量集合所对应的目标运动矢量精度为所述候选运动矢量预测值具有的/对应的运动矢量精度),基于所述候选运动矢量预测值MVP、所述运动矢量差值MVD 信息以及所述目标运动矢量精度,得到所述当前解码图像块的运动矢量,其中,所述当前解码图像块的运动矢量具有所述目标运动矢量精度,所述目标运动矢量集合为多个运动矢量集合中的一个,所述目标运动矢量精度为包括第一运动矢量精度和第二运动矢量精度的多种运动矢量精度中的一种,所述多个运动矢量集合包括第一运动矢量集合和第二运动矢量集合,所述第一运动矢量集合和第二运动矢量集合中的至少一个运动矢量集合包括两个或以上的运动矢量预测值,且所述第一运动矢量集合所对应的第一运动矢量精度不同于所述第二运动矢量集合所对应的第二运动矢量精度;基于所述当前解码图像块的具有所述目标运动矢量精度的运动矢量进行运动补偿,得到当前解码图像块的预测块(亦可理解为当前解码图像块的像素值的预测值);以及,重建模块,用于基于所述预测块对所述当前解码图像块进行重建。
结合第六方面,在第六方面的某些实现方式中,在所述当所述候选运动矢量预测值 MVP被包括于与目标运动矢量精度对应的目标运动矢量集合时,基于所述候选运动矢量预测值MVP、所述运动矢量差值信息以及目标运动矢量精度,得到所述当前解码图像块的运动矢量的方面,所述帧间预测模块具体用于:
确定所述候选运动矢量预测值被包括于所述目标运动矢量集合,根据多个运动矢量集合与多种运动矢量精度的对应关系确定所述目标矢量集合对应的目标运动矢量精度为所述候选运动矢量预测值具有的/对应的运动矢量精度;
计算所述候选运动矢量预测值MVP和所述运动矢量差值MVD信息之和,以得到所述当前解码图像块的运动矢量,所述当前解码图像块的运动矢量、所述候选运动矢量预测值MVP和运动矢量差值MVD具有同一运动矢量精度(即均具有目标运动矢量精度);或者,
基于所述目标运动矢量精度对所述运动矢量差值信息进行缩放(例如放大)处理,以得到经缩放(例如经放大的)的运动矢量差值MVD;计算所述候选运动矢量预测值MVP和所述经缩放的运动矢量差值MVD之和,以得到所述当前解码图像块的运动矢量,所述当前解码图像块的运动矢量、所述候选运动矢量预测值MVP和运动矢量差值MVD具有同一运动矢量精度(即均具有目标运动矢量精度)。
需要说明的是,这里的多个运动矢量集合与多种运动矢量精度的对应关系可以是一一对应关系,也可以是M:N的对应关系,M不等于N,例如,多个运动矢量集合与多种运动矢量精度也可以是一对多或多对一的对应关系,本申请实施例对此不作限定。
结合第六方面,在第六方面的某些实现方式中,所述第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前解码图像块的第一距离不同于所述第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前解码图像块的第二距离,所述第一邻近块和第二邻近块被包括于所述当前图像块的空域邻近块和/或时域邻近块中。
结合第六方面,在第六方面的某些实现方式中,如果所述第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前解码图像块的第一距离小于所述第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前解码图像块的第二距离,则所述第一运动矢量集合对应的第一运动矢量精度高于所述第二运动矢量集合对应的第二运动矢量精度;或者,
如果所述第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前解码图像块的第一距离大于所述第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前解码图像块的第二距离,则所述第一运动矢量集合对应的第一运动矢量精度低于所述第二运动矢量集合对应的第二运动矢量精度。
结合第六方面,在第六方面的某些实现方式中,所述多个运动矢量集合与所述多种运动矢量精度的对应关系是预先设置的。
结合第六方面,在第六方面的某些实现方式中,所述多个运动矢量集合与所述多种运动矢量精度的对应关系是根据运动矢量精度赋值规则而确定的,其中,所述运动矢量精度赋值规则用于表征所述运动矢量集合中包括的运动矢量预测值所对应的邻近块与当前解码图像块之间的距离与运动矢量精度的取值大小之间的关系。所述运动矢量精度赋值规则可以理解为:运动矢量预测值所对应的邻近块与当前图像块的距离越近,运动矢量精度越高;运动矢量预测值所对应的邻近块与当前图像块的距离越远,运动矢量精度越低。此外,这里的邻近块可以包括但不限于:所述当前图像块的空域邻近块和/或时域邻近块。
结合第六方面,在第六方面的某些实现方式中,所述码流进一步携带有运动矢量精度参数,所述运动矢量精度参数用于指示所述多种运动矢量精度的值,所述运动矢量精度参数携带在所述解码图像块的序列参数集、图像参数集PPS或者条带头中的任意一种;
相应地,所述熵解码模块还用于从所述码流中解析出所述运动矢量精度参数。
结合第六方面,在第六方面的某些实现方式中,所述码流进一步携带有运动矢量精度参数,所述运动矢量精度参数用于指示用于当前解码处理单元的运动矢量精度个数(例如 pps_amvr_number)和与所述运动矢量精度个数对应的至少两种运动矢量精度值(例如 pps_amvr_set[pps_amvr_number]),其中所述当前解码处理单元包括视频序列、图像、条带slice、区域partition、解码树单元(Coding Tree Unit,CTU)和解码单元(codingunit,CU)中的一种或多种;
相应地,所述熵解码模块还用于从所述码流中解析出所述运动矢量精度参数。
结合第六方面,在第六方面的某些实现方式中,所述码流进一步携带有第一标识,所述第一标识用于指示第三运动矢量集合对应的第三运动矢量精度;或者,
所述码流进一步携带有第一标识和第二标识,所述第一标识用于指示第三运动矢量精度,所述第二标识用于指示第三运动矢量集合;
其中,所述第三运动矢量集合为所述多个运动矢量集合中的第一运动矢量集合,或者第二运动矢量集合,或者其它运动矢量集合,所述第三运动矢量精度为所述多种运动矢量精度中的第一运动矢量精度,或者第二运动矢量精度,或者其它运动矢量精度;
相应地,所述熵解码模块还用于从所述码流中解析出所述第一标识,或者解码出所述第一标识和第二标识。
本申请的第七方面提供了一种视频解码装置,所述装置包括:处理器和耦合于所述处理器的存储器;所述处理器用于执行所述第一、五方面或其各种实现方式中的方法。
本申请的第八方面提供了一种视频编码装置,所述装置包括:处理器和耦合于所述处理器的存储器;所述处理器用于执行所述第三方面或其各种实现方式中的方法。
本申请的第九方面提供一种视频解码设备,包括非易失性存储介质,以及处理器,所述非易失性存储介质存储有可执行程序,所述处理器与所述非易失性存储介质相互耦合,并执行所述可执行程序以实现所述第一、五方面或其各种实现方式中的方法。
本申请的第十方面提供一种视频编码设备,包括非易失性存储介质,以及处理器,所述非易失性存储介质存储有可执行程序,所述处理器与所述非易失性存储介质相互耦合,并执行所述可执行程序以实现所述第三方面或其各种实现方式中的方法。
本申请的第十一方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一或三或五方面或其各种实现方式中的方法。
本申请的第十二方面提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一或三或五方面或其各种实现方式中的方法。
本申请的第十三方面提供了一种电子设备,包括上述第二、六方面或其各种实现方式所述的视频解码器,或上述第四方面或其各种实现方式所述的视频编码器。
应理解,各方面及对应的可实施的设计方式所取得的有益效果相似,不再赘述。
附图说明
图1为本申请实施例中一种视频编码及解码系统的示意性框图;
图2为本申请实施例中一种视频编码器的示意性框图;
图3为本申请实施例中一种视频解码器的示意性框图;
图4A是本申请实施例的一种整数像素位置和分数像素位置的示意图;
图4B是本申请实施例的另一种整数像素位置和分数像素位置的示意图;
图5是本申请实施例的一种视频编码方法的示意性流程图;
图6A是本申请实施例的一种构建AMVP候选MVP列表的示意图;
图6B是本申请实施例的另一种构建AMVP候选MVP列表的示意图;
图6C是本申请实施例的视频编码器输出的图像参数集PPS的一种语法结构的示意图;
图6D是本申请实施例的视频编码器输出的图像参数集PPS的另一种语法结构的示意图;
图6E是本申请实施例的视频编码器输出的图像参数集PPS的再一种语法结构的示意图;
图7是本申请实施例的一种视频解码方法的示意性流程图;
图8是一种用于解码端运动矢量导出(DMVD)中的模板匹配方法的示意图;
图9是一种用于解码端运动矢量导出(DMVD)中的双向匹配方法的示意图;
图10是本申请实施例的一种视频解码方法中的步骤705的示意性流程图;
图11是本申请实施例的另一种编码设备或解码设备的示意性框图;
图12是本申请实施例的一种电子设备的示意性框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
编码视频流,或者其一部分,诸如视频帧或者图像块可以使用视频流中的时间和空间相似性以改善编码性能。例如,视频流的当前图像块可以通过基于视频流中的先前已编码块预测用于当前图像块的运动信息,并识别预测块和当前图像块(即原始块)之间的差值 (亦称为残差),从而基于先前已编码块对当前图像块进行编码。以这种方法,仅仅将用于产生当前图像块的残差和一些参数包括于数字视频输出位流中,而不是将当前图像块的整体包括于数字视频输出位流。这种技术可以称为帧间预测。
运动矢量是帧间预测过程中的一个重要参数,其表示先前已编码块相对于该当前编码块的空间位移。可以使用运动估算的方法,诸如运动搜索来获取运动矢量。初期的帧间预测技术,将表示运动矢量的位(即比特)包括在编码的码流中,以允许解码器再现预测块,进而得到重建块。为了进一步的改善编码效率,后来又提出使用运动矢量预测值(亦可称为参考运动矢量)差分地编码运动矢量,即取代编码运动矢量整体,而仅仅编码运动矢量和运动矢量预测值之间的差值。在有些情况下,运动矢量预测值可以是从先前使用的运动矢量中选择出来的,选择先前使用的运动矢量编码当前的运动矢量可以进一步减少包括于经编码视频码流中的比特开销。
在经编码视频码流(简称为码流或位流)中包含图像块级的运动矢量差MVD信息的前提下,本申请实施例描述自适应地选择用于编码图像块的运动矢量精度及用于通过视频解码器确定视频编码器为所述图像块选择的运动矢量精度的技术方案。根据本申请的一些实施例,视频解码器可在不接收用于指示运动矢量精度的语法元素的情况下推导出由视频编码器为当前图像块所选择的运动矢量精度。根据本申请的一些实施例,视频编码器可在码流中发信号通知由视频编码器针对某个运动矢量集合(例如重要运动矢量集合)选定的运动矢量精度。根据本申请实施例,可在整数像素精度与不同水平的分数像素精度之间自适应地选择。例如,本申请实施例中,可在用于编码图像块的运动矢量的整数像素精度、四像素精度、二分之一像素精度、四分之一像素精度或八分之一像素精度之间自适应地选择。本申请实施例中的术语“八分之一像素”是指像素的八分之一(1/8)的精度,例如,以下各者中的一者:整数像素位置(0/8)、像素的八分之一(1/8)、像素的八分之二(2/8,也称为像素的四分之一)、像素的八分之三(3/8)、像素的八分之四(4/8,也称为像素的二分之一及像素的四分之二)、像素的八分之五(5/8)、像素的八分之六(6/8,也称为像素的四分之三),或像素的八分之七(7/8)。
图1为本申请实施例中视频编码及解码系统10的一种示意性框图。系统10中视频编码器20用于根据本申请提出的视频编码过程的各种方法实例来自适应地选择用于编码图像块的目标运动矢量精度(例如整像素精度或1/2像素精度或1/4像素精度或1/8像素精度或4像素精度等)。系统10中视频解码器30用于根据本申请提出的视频解码过程的各种方法实例来确定视频编码器为图像块选择的用于编码图像块的运动矢量精度,从而提高运动矢量预测精度,进而改善编解码性能。
如图1所示,系统10包含源装置12和目的地装置14,源装置12产生将在稍后时间由目的地装置14解码的经编码视频数据。源装置12及目的地装置14可包括广泛范围的装置中的任一者,包含桌上型计算机、笔记型计算机、平板计算机、机顶盒、例如所谓的“智能”电话的电话手机、所谓的“智能”触控板、电视、摄影机、显示装置、数字媒体播放器、视频游戏控制台、视频流式传输装置或类似者。
目的地装置14可经由通信链路16接收待解码的经编码视频数据。通信链路16可包括能够将经编码视频数据从源装置12移动到目的地装置14的任何类型的媒体或装置。在一个可行的实施方式中,通信链路16可包括使源装置12能够实时将经编码视频数据直接传输到目的地装置14的通信媒体。可根据通信标准(例如,无线通信协议)调制经编码视频数据且将其传输到目的地装置14。通信媒体可包括任何无线或有线通信媒体,例如射频频谱或一个或多个物理传输线。通信媒体可形成基于包的网络(例如,局域网、广域网或因特网的全球网络)的部分。通信媒体可包含路由器、交换器、基站或可有用于促进从源装置12到目的地装置14的通信的任何其它装备。
替代地,可将经编码数据从输出接口22输出到存储装置(未示意)。类似地,可由输入接口从存储装置存取经编码数据。存储装置可包含多种分散式或本地存取的数据存储媒体中的任一者,例如,硬盘驱动器、蓝光光盘、DVD、CD-ROM、快闪存储器、易失性或非易失性存储器或用于存储经编码视频数据的任何其它合适的数字存储媒体。在另一可行的实施方式中,存储装置可对应于文件服务器或可保持由源装置12产生的经编码视频的另一中间存储装置。目的地装置14可经由流式传输或下载从存储装置存取所存储视频数据。文件服务器可为能够存储经编码视频数据且将此经编码视频数据传输到目的地装置 14的任何类型的服务器。可行的实施方式文件服务器包含网站服务器、文件传送协议服务器、网络附接存储装置或本地磁盘机。目的地装置14可经由包含因特网连接的任何标准数据连接存取经编码视频数据。此数据连接可包含适合于存取存储于文件服务器上的经编码视频数据的无线信道(例如,Wi-Fi连接)、有线连接(例如,缆线调制解调器等)或两者的组合。经编码视频数据从存储装置的传输可为流式传输、下载传输或两者的组合。
本申请的技术不必限于无线应用或设定。技术可应用于视频解码以支持多种多媒体应用中的任一者,例如,空中电视广播、有线电视传输、卫星电视传输、流式传输视频传输(例如,经由因特网)、编码数字视频以用于存储于数据存储媒体上、解码存储于数据存储媒体上的数字视频或其它应用。在一些可行的实施方式中,系统10用于支持单向或双向视频传输以支持例如视频流式传输、视频播放、视频广播和/或视频电话的应用。
在图1的可行的实施方式中,源装置12包括视频源18、视频编码器20及输出接口22。根据本申请实施例,源装置12的视频编码器20用于支持自适应选择用于编码图像块的运动矢量分辨率(亦称为运动矢量精度或像素精度)的技术。在一些应用中,输出接口 22可包括调制器/解调制器(调制解调器)和/或传输器。在源装置12中,视频源18可包括例如以下各者的源:视频捕获装置(例如,摄像机)、含有先前捕获的视频的视频存档、用以从视频内容提供者接收视频的视频馈入接口,和/或用于产生计算机图形数据作为源视频的计算机图形系统,或这些源的组合。作为一种可行的实施方式,如果视频源18为摄像机,那么源装置12及目的装置14可形成所谓的摄影机电话或视频电话。本申请中所描述的技术可示例性地适用于视频解码,且可适用于无线和/或有线应用。
可由视频编码器20来编码所捕获、预捕获或计算机产生的视频。经编码视频数据可经由源装置12的输出接口22直接传输到目的地装置14。经编码视频数据也可(或替代地)存储到存储装置(未示意)上以供稍后由目的地装置14或其它装置存取以用于解码和/或播放。
目的地装置14包括输入接口28、视频解码器30及显示装置32。在一些应用中,输入接口28可包括接收器和/或调制解调器。目的地装置14的输入接口28经由通信链路16 接收经编码视频数据。经由通信链路16传达或提供于存储装置上的经编码视频数据可包含由视频编码器20产生以供视频解码器30使用以解码视频数据的多种语法元素(参见图 6C至6E,下文将详细介绍)。这些语法元素可与在通信媒体上传输、存储于存储媒体上或存储于文件服务器上的经编码视频数据包含在一起。
显示装置32可与目的地装置14集成或在目的地装置14外部。在一些可行的实施方式中,目的地装置14可包含集成显示装置且也经配置以与外部显示装置接口连接。在其它可行的实施方式中,目的地装置14可为显示装置。一般来说,显示装置32向用户显示经解码视频数据,且可包括多种显示装置中的任一者,例如液晶显示器、等离子显示器、有机发光二极管显示器或另一类型的显示装置。
视频编码器20及视频解码器30可根据例如目前在开发中的下一代视频编解码压缩标准(H.266)操作且可遵照H.266测试模型(JEM)。替代地,视频编码器20及视频解码器30可根据例如ITU-TH.265标准,也称为高效率视频解码标准,或者,ITU-TH.264标准的其它专属或工业标准或这些标准的扩展而操作,ITU-TH.264标准替代地被称为 MPEG-4第10部分,也称高级视频编码(advanced video coding,AVC)。然而,本申请的技术不限于任何特定解码标准。视频压缩标准的其它可行的实施方式包含MPEG-2和 ITU-T H.263。
尽管未在图1中展示,但在一些方面中,视频编码器20及视频解码器30可各自与音频编码器及解码器集成,且可包含适当多路复用器-多路分用器(MUX-DEMUX)单元或其它硬件及软件以处置共同数据流或单独数据流中的音频及视频两者的编码。如果适用,那么在一些可行的实施方式中,MUX-DEMUX单元可遵照ITUH.223多路复用器协议或例如用户数据报协议(UDP)的其它协议。
视频编码器20及视频解码器30各自可实施为多种合适编码器电路中的任一者,例如,一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑、软件、硬件、固件或其任何组合。在技术部分地以软件实施时,装置可将软件的指令存储于合适的非暂时性计算机可读媒体中且使用一个或多个处理器以硬件执行指令,以执行本申请的技术。视频编码器20及视频解码器30中的每一者可包含于一个或多个编码器或解码器中,其中的任一者可在相应装置中集成为组合式编码器/解码器(CODEC)的部分。
本申请示例性地可涉及视频编码器20将特定信息“用信号发送”到例如视频解码器 30的另一装置。然而,应理解,视频编码器20可通过将特定语法元素与视频数据的各种经编码部分相关联来用信号发送信息。即,视频编码器20可通过将特定语法元素存储到视频数据的各种经编码部分的头信息来“用信号发送”数据。在一些应用中,这些语法元素可在通过视频解码器30接收及解码之前经编码及存储(例如,存储到存储系统或文件服务器)。因此,术语“用信号发送”示例性地可指语法或用于解码经压缩视频数据的其它数据的传达,而不管此传达是实时或近实时地发生或在时间跨度内发生,例如可在编码时将语法元素存储到媒体时发生,语法元素接着可在存储到此媒体之后的任何时间通过解码装置检索。
JCT-VC开发了H.265(HEVC)标准。HEVC标准化基于称作HEVC测试模型(HM) 的视频解码装置的演进模型。H.265的最新标准文档可从 http://www.itu.int/rec/T-REC-H.265获得,最新版本的标准文档为H.265(12/16),该标准文档以全文引用的方式并入本文中。HM假设视频解码装置相对于ITU-TH.264/AVC的现有算法具有若干额外能力。例如,H.264提供9种帧内预测编码模式,而HM可提供多达 35种帧内预测编码模式。
一般来说,HM的工作模型描述可将视频帧或图像划分成包含亮度及色度样本两者的树块或最大编码单元(largest coding unit,LCU)的序列,LCU也被称为CTU。树块具有与H.264标准的宏块类似的目的。条带包含按解码次序的数个连续树块。可将视频帧或图像分割成一个或多个条带。可根据四叉树将每一树块分裂成编码单元。例如,可将作为四叉树的根节点的树块分裂成四个子节点,且每一子节点可又为母节点且被分裂成另外四个子节点。作为四叉树的叶节点的最终不可分裂的子节点包括解码节点,例如,经解码图像块。与经解码码流相关联的语法数据可定义树块可分裂的最大次数,且也可定义解码节点的最小大小。
编码单元(coding unit,CU)包含解码节点及预测单元(prediction unit,PU)以及与解码节点相关联的变换单元(transform unit,TU)。CU的大小对应于解码节点的大小且形状必须为正方形。CU的大小的范围可为8×8像素直到最大64×64像素或更大的树块的大小。每一CU可含有一个或多个PU及一个或多个TU。例如,与CU相关联的语法数据可描述将CU分割成一个或多个PU的情形。分割模式在CU是被跳过或经直接模式编码、帧内预测模式编码或帧间预测模式编码的情形之间可为不同的。PU可经分割成形状为非正方形。例如,与CU相关联的语法数据也可描述根据四叉树将CU分割成一个或多个TU的情形。 TU的形状可为正方形或非正方形。
HEVC标准允许根据TU进行变换,TU对于不同CU来说可为不同的。TU通常基于针对经分割LCU定义的给定CU内的PU的大小而设定大小,但情况可能并非总是如此。 TU的大小通常与PU相同或小于PU。在一些可行的实施方式中,可使用称作“残差四叉树”(residualqualtree,RQT)的四叉树结构将对应于CU的残差样本再分成较小单元。RQT 的叶节点可被称作TU。可变换与TU相关联的像素差值以产生变换系数,变换系数可被量化。
例如,在PU经帧内模式编码时,涉及描述PU的帧内预测模式的数据。例如,在PU 经帧间模式编码时,涉及用于确定PU的运动矢量的数据。例如,用于确定PU的运动矢量的数据可描述运动矢量的水平分量、运动矢量的垂直分量、运动矢量的分辨率(例如,整数像素精度、二分之一像素精度、四分之一像素精度或八分之一像素精度等)、运动矢量所指向的参考图像,和/或运动矢量的参考图像列表(例如,列表0或列表1)。
根据本申请实施例,视频编码器20可自适应地选择具有整数像素精度的运动矢量或者分数(例如四分之一或八分之一)像素精度的运动矢量。根据本申请的一些实施例,视频编码器20可不需要产生图像块的运动矢量的像素精度的指示以包含在经编码视频数据的码流中。而是,视频解码器30可使用由视频编码器20使用的相同或相似的方法推导出所述运动矢量精度。根据本申请的另一些实施例,视频编码器20可在码流中包含被视频解码器30用来确定所选定的运动矢量精度的一或多个语法元素。应当理解的是,为了计算分数像素位置的值,视频编码器20可包含多种内插滤波器。对于具有分数像素精度的运动矢量,使用内插滤波器内插得到该运动矢量指示的当前图像块的预测块。例如,双线性内插可用于计算分数像素位置的值。视频编码器20用于执行运动搜索以得到运动矢量。
一般来说,TU使用变换及量化过程。具有一个或多个PU的给定CU也可包含一个或多个变换单元(TU)。在预测之后,视频编码器20可计算对应于PU的残差值。残差值包括像素差值,像素差值可变换成变换系数、经量化且使用TU扫描以产生串行化变换系数以用于熵解码。
在使用CU的PU的帧内预测性或帧间预测性解码之后,视频编码器20可计算CU的TU的残差数据。PU可包括空间域(也称作像素域)中的像素数据,且TU可包括在将变换(例如,离散余弦变换(discrete cosine transform,DCT)、整数变换、小波变换或概念上类似的变换)应用于残差视频数据之后变换域中的系数。残差数据可对应于未经编码图像的像素与对应于PU的预测值之间的像素差。视频编码器20可形成包含CU的残差数据的TU,且接着变换TU以产生CU的变换系数。
在任何变换以产生变换系数之后,视频编码器20可执行变换系数的量化。量化示例性地指对系数进行量化以可能减少用以表示系数的数据的量从而提供进一步压缩的过程。量化过程可减少与系数中的一些或全部相关联的位深度。例如,可在量化期间将n位值降值舍位到m位值,其中n大于m。
在一些可行的实施方式中,视频编码器20可利用预定义扫描次序来扫描经量化变换系数以产生可经熵编码的串行化向量。在其它可行的实施方式中,视频编码器20可执行自适应性扫描。在扫描经量化变换系数以形成一维向量之后,视频编码器20可根据上下文自适应性可变长度解码(CAVLC)、上下文自适应性二进制算术解码(CABAC)、基于语法的上下文自适应性二进制算术解码(SBAC)、概率区间分割熵(PIPE)解码或其他熵解码方法来熵解码一维向量。视频编码器20也可熵编码与经编码视频数据相关联的语法元素以供视频解码器30用于解码视频数据。
目的地装置14的视频解码器30用于执行与本申请实施例的视频编码器20的技术方案中的任一者或全部类似或对应的技术方案。例如,使用同一推导技术,视频解码器30可在不接收指示运动矢量精度的语法元素的情况下确定使用什么运动矢量精度解码所述视频数据。
JVET致力于开发H.266标准。H.266标准化的过程基于称作H.266测试模型的视频解码装置的演进模型。H.266的算法描述可从http://phenix.int-evry.fr/jvet获得,其中最新的算法描述包含于JVET-F1001-v2中,该算法描述文档以全文引用的方式并入本文中。同时,可从https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/获得JEM测试模型的参考软件,同样以全文引用的方式并入本文中。
JEM模型对视频图像的编码结构进行了进一步的改进,具体的,被称为“四叉树结合二叉树”(QTBT)的块编码结构被引入进来。QTBT结构摒弃了HEVC中的CU,PU, TU等概念,支持更灵活的CU划分形状,一个CU可以正方形,也可以是长方形。一个 CTU首先进行四叉树划分,该四叉树的叶节点进一步进行二叉树划分。同时,在二叉树划分中存在两种划分模式,对称水平分割和对称竖直分割。二叉树的叶节点被称为CU, JEM的CU在预测和变换的过程中都不可以被进一步划分,也就是说JEM的CU,PU,TU 具有相同的块大小。在现阶段的JEM中,CTU的最大尺寸为256×256亮度像素。
本申请可将视频解码器当前正在解码的PU称作当前解码PU,也称为当前解码图像块(亦称为当前解码单元)。本申请可将视频解码器当前正在解码的CU称作当前解码 CU,也称为当前解码图像块(亦称为当前解码单元)。本申请可将视频编码器当前正在编码的PU称作当前编码PU,也称为当前编码图像块(亦称为当前编码单元)。本申请可将视频解码器当前正在编码的CU称作当前编码CU,也称为当前编码图像块(亦称为当前编码单元)。本申请可将视频解码器当前在解码的图像称作当前图像。应理解,本申请同时适用于PU和CU具有相同尺寸,或者PU即为CU的情况,统一使用图像块来表示。在一些特定应用中,本申请也可使用术语“图像块”来指包含解码节点以及PU及TU 的树块,例如,LCU或CU。
本申请实施例的下文将详细介绍视频编码过程或视频解码过程的各种方法实例来自适应地选择用于编码图像块的运动矢量精度及通过视频解码器确定视频编码器为所述图像块选择的运动矢量精度,以提高图像块的运动矢量预测精度,进而改善编解码性能。
图2为本申请实施例中视频编码器20的一种示意性框图。一并参阅图5,视频编码器20可执行自适应确定用于编码当前图像块的运动矢量分辨率(亦称为运动矢量精度或像素精度)的过程,尤其是视频编码器20中的预测模块40,例如帧间预测模块41可执行自适应确定用于编码当前图像块的运动矢量分辨率的过程。
针对视频帧中的图像块,视频编码器20可执行所述图像块(例如LCU、CU或PU)的帧内及帧间预测。帧内预测过程依赖于空间预测以减少或去除视频帧或图像内的视频数据的空间冗余。帧间预测过程依赖于时间预测以减少或去除视频序列的邻近帧或邻近图像内的视频数据的时间冗余。帧内模式(I模式)可指若干基于空间的压缩模式中的任一者;帧间模式,例如单向预测(P模式)或双向预测(B模式)可指若干基于时间的压缩模式中的任一者。
如图2所示,视频编码器20接收待编码视频帧内的当前图像块。在图2的实例中,视频编码器20可以包括:预测模块40、参考图像存储器64、求和器50、变换模块52、量化模块54和熵编码模块56。预测模块40可以包括帧间预测模块41和帧内预测模块46。帧间预测模块41可执行帧间预测过程,而帧内预测模块46可执行帧内预测过程。作为一种示例方式,帧间预测模块41可以包括运动估计模块42和运动补偿模块44。为了重构建图像块,视频编码器20还可以包括:反量化模块58、反变换模块60及求和器62(亦称为重建模块62)。在一种实现方式下,视频编码器20还可以包括解块滤波器(图2中未图示)以便对块边界进行滤波,从而从经重构建图像中去除块效应伪影。在需要时,解块滤波器通常对求和器62的输出进行滤波。除了解块滤波器之外,也可使用额外环路滤波器(环路内或环路后)。在另一种实现方式下,视频编码器20还可包括视频数据存储器(图 2中未图示),其中视频数据存储器可存储待由视频编码器20编码的视频数据。存储在视频数据存储器中的视频数据可例如从视频源18获得。参考图像存储器64(亦称为经解码图像缓冲器64)用于存储供视频编码器20编码视频数据的参考图像数据,例如用于存储供视频编码器20在帧内或帧间译码模式中需使用到的参考图像数据。视频数据存储器及参考图像存储器64可通过多种存储器装置中的任一者形成,例如,动态随机存储器 (DRAM),包含同步DRAM(SDRAM)、磁阻式RAM(MRAM)、电阻性RAM(RRAM)或其它类型的存储器装置。可由相同的存储器装置或单独的存储器装置提供视频数据存储器及参考图像存储器64。在不同实现方式下,视频数据存储器可以与视频编码器20的其它模块一样部署在芯片上,或者,相对于视频编码器20的其它模块,视频数据存储器可以设置在芯片之外。
如图2所示,在编码过程中,视频编码器20接收待编码的视频帧或条带(slice)。可将帧或条带划分成多个图像块(例如LCU、CU或PU),例如,可以根据LCU及CU的四叉树结构进行图像块的划分。
预测模块40可基于编码质量与代价计算结果(例如,码率-失真代价,RDcost)选择当前图像块的多个编码模式中的一者,例如多个帧内编码模式中的一者或多个帧间编码模式中的一者。预测模块40可将所得经帧内编码块或经帧间编码块提供给求和器50以产生残差块数据且将所得经帧内编码块或经帧间编码块提供给求和器62以重构建经编码图像块,从而用作参考图像。
帧间预测模块41内的运动估计模块42及运动补偿模块44可相对于一或多个参考图像中的一或多个图像块执行所接收的当前图像块的帧间预测编码以提供时间压缩。运动估计单元42用于根据视频序列的预定模式确定视频条带的帧间预测模式。预定模式可将视频序列中的视频条带指定为P条带、B条带或GPB条带。帧内预测模块46可相对于与待编码的图像块相同的帧或条带中的一或多个相邻块执行对所接收图像块的帧内预测编码,以提供空间压缩。
运动估计模块42和运动补偿模块44可集成在一起,但出于概念的目的也可以分别加以说明。运动估计单元42用于执行运动估计过程,以得到运动矢量。举例来说,运动矢量用于指示当前视频帧或当前图像内的当前正在编码的图像块(简称为当前编码块)相对于参考图像内的预测块的位移。其中,预测块是找到的与当前编码块紧密匹配的块,例如是根据块与块之间的差异值找到的与当前编码块紧密匹配的块,其中,两个块之间的差异值,可以看做是两个块内各个对应位置像素点差异值的累加。差异的计算方法一般基于 SAD(sumof absolute difference,绝对差总和)准则。或者其他准则,例如SATD(Sum of AbsoluteTransform Difference),MR-SAD(mean-removed sum of absolute difference), SSD(sum of squared differences,平方差总和)等进行计算。在一些可行的实施方式中,视频编码器20可计算存储于参考图像存储器64中的参考图像的分数(sub-integer)像素位置的值。例如,视频编码器20可内插参考图像的四分之一像素位置、八分之一像素位置或其它分数像素位置的值。其中,运动估计模块42可用于执行相对于整数像素位置及分数像素位置的运动搜索且输出具有整数像素精度的运动矢量或者具有分数像素精度的运动矢量。换言之,即帧间预测模块41(例如运动估计模块42)可对当前图像块(例如当前 CU或当前PU,某些情况下当前CU即为当前PU)执行整数运动估计(Integer Motion Estimation,IME)且接着执行分数运动估计(Fraction Motion Estimation,FME)。当帧间预测模块41(例如运动估计模块42)对当前图像块执行IME时,帧间预测模块41(例如运动估计模块42)可在一个或多个参考图像中搜索用于当前图像块的参考块。在找到用于当前图像块的参考块之后,帧间预测模块41(例如运动估计模块42)可产生用于指示参考块相对于当前图像块之间的位移的运动矢量,且所述运动矢量具有整数像素精度。当帧间预测模块41(例如运动估计模块42)对当前图像块执行FME时,帧间预测模块41(例如运动估计模块42)可改进通过对当前图像块执行IME而产生的运动矢量。通过对当前图像块执行FME而产生的运动矢量可具有分数像素精度(例如,1/2像素精度、1/4像素精度等)。在产生当前图像块的运动矢量之后,帧间预测模块41(例如运动补偿模块44)可使用当前图像块的运动矢量以产生当前图像块的预测块。
运动估计模块42用于通过比较当前编码图像块与参考图像存储器64中的参考图像的图像块而计算经帧间编码帧中的当前编码图像块的运动矢量。在参考图像存储器64中的参考图像包含分数像素位置的值时,由运动估计模块42计算的运动矢量可指向参考图像的分数像素位置。如果没有分数像素位置的值存储在参考图像存储器64中,那么运动估计模块42或运动补偿模块44还用于计算存储在参考图像存储器64中的参考图像的分数像素位置的值,例如内插参考图像(例如I帧或P帧)的分数像素。作为一实例,可从第一参考图像列表(列表0)或第二参考图像列表(列表1)选择参考图像,列表中的每一者 (例如参考图像索引)用于识别存储于参考图像存储器64中的一个或多个参考图像。运动估计模块42用于发送或提供运动矢量给运动补偿模块44。本发明实施例中,帧间预测模块41(例如运动估计模块42)还用于将当前编码图像块的运动矢量差值(MVD)信息发送给熵编码模块56,这里的运动矢量差值信息用于表示使用IME和/或FME针对当前图像块产生的运动矢量与运动矢量预测值(例如从候选运动矢量预测值列表中选择的候选运动矢量预测值,例如称为最佳候选预测运动矢量)之间的差。在一些可行实施方式中,帧间预测模块41(例如运动估计模块42)可输出用于指示候选预测运动矢量在候选预测运动矢量列表中的位置的候选预测运动矢量索引给熵编码模块56。下文将结合图5详细介绍,这里不再赘述。
帧间预测模块41(例如运动补偿模块44)用于执行运动补偿过程,其中运动补偿过程包括基于通过运动估计而确定的运动矢量来提取(fetch)或生成预测块,可能也包括执行分数像素精度的内插。在接收当前编码图像块的运动矢量后,运动补偿模块44可在参考图像列表中的一者中定位运动矢量所指向的预测块。视频编码器20通过从当前编码图像块的像素值减去预测块的像素值以得到残差图像块,从而形成像素差值。像素差值形成块的残差数据,且可包含亮度及色度差分量两者。求和器50表示执行此减法运算的一个或多个组件。帧间预测模块41(例如运动估计模块42和/或运动补偿模块44)可产生一些在不同层级的编码处理单元(例如序列级,图像级,条带级,区域partition级,CTU级或CU级)下的语法元素,例如与当前图像块及当前图像相关联的语法元素以供视频解码器30用于解码当前图像的当前图像块,又例如与当前图像块及视频条带相关联的语法元素以供视频解码器30用于解码视频条带的当前图像块。作为一种示例,视频编码器20的运动估计模块42可用于向熵编码模块56提供或发送运动矢量精度参数,以便于所述熵编码单元56将运动矢量精度参数熵编码入码流,所述运动矢量精度参数用于指示多种运动矢量精度的值,所述运动矢量精度参数可以携带在当前图像块的序列参数集、图像参数集 PPS或者条带头中的任意一种。一种具体示例下,所述运动矢量精度参数可以包括用于当前编码处理单元的运动矢量精度个数和与所述运动矢量精度个数对应的至少两种运动矢量精度的值,例如运动矢量精度个数为4,对应的4种运动矢量精度的值分别是整数像素精度、二分之一像素精度、四分之一像素精度和八分之一像素精度。作为另一种示例,视频编码器20的运动估计模块42还用于向熵编码模块56提供或发送用于指示某个重要运动矢量集合的运动矢量精度的指示信息。下文将结合图5对本申请实施例的视频编码过程进行详细的介绍,这里不再赘述。
在预测模块40经由帧间预测或帧内预测产生当前正在编码的原始图像块的预测块之后,视频编码器20通过从当前正在编码的原始图像块减去预测块而形成残差图像块。求和器50表示执行此减法运算的一或多个组件。变换模块52应用变换将残差图像块中的残差数据变换成残差变换系数,例如离散余弦变换(DCT)或概念上类似的变换(例如,离散正弦变换DST)。变换模块52可将残差数据从像素域转换到变换域(例如,频域)。
变换模块52可将所得残差变换系数提供或发送给量化模块54。量化模块54用于对残差变换系数进行量化以进一步减小码率。量化过程可减少与残差变换系数中的一些或全部相关联的比特深度。可通过调整量化参数来修改量化的程度。在一些可行的实施方式中,量化模块54可接着执行包含经量化变换系数的矩阵的扫描。替代地,熵编码模块56可执行扫描。
在量化之后,熵编码模块56可用于熵编码经量化的残差变换系数。例如,熵编码模块56可执行上下文自适应性可变长度编码(CAVLC)、上下文自适应性二进制算术编码(CABAC)、基于语法的上下文自适应性二进制算术编码(SBAC)、概率区间分割熵(PIPE)编码或其它熵编码技术。熵编码模块56也可用于熵编码正经编码的当前视频条带或当前图像块的一些语法元素。在通过熵编码模块56进行熵编码之后,可将经编码码流传输到视频解码器30或存档以供稍后传输或由视频解码器30检索。
本申请实施例中,熵编码模块56用于熵编码当前编码图像块的运动矢量差值信息入码流;可选的,熵编码模块56还用于将某个重要运动矢量集合的运动矢量精度的指示信息编码入码流,以指示重要运动矢量集合的运动矢量预测值的具体像素精度,比如是具有整数像素精度还是分数像素精度,例如四分之一像素精度或八分之一像素精度或其它分数像素精度。
本申请实施例中,视频编码器20,例如通过实施高级运动矢量预测(AMVP)模式或合并(merge)模式发信号通知运动矢量预测值。在AMVP模式中,视频编码器20(例如帧间预测模块41)基于从在先已编码图像块确定的运动矢量建立候选运动矢量预测值列表。下文将结合图6A和图6B详细介绍,这里不再赘述。视频编码器20发信号通知候选运动矢量预测值列表中的一个索引标识以识别对应的候选运动矢量预测值(MVP)且发信号通知运动矢量差(MVD)信息。在一种示例实现方式下,熵编码模块56用于将指示当前编码图像块的运动矢量预测值MVP的索引(即第三标识)和当前编码图像块的运动矢量差值信息熵编码入码流。相应地,在AMVP模式中,视频解码器30(例如帧间预测模块82)基于从在先已解码图像块确定的运动矢量建立候选运动矢量预测值列表。基于所述索引(即第三标识)从候选运动矢量预测值列表中确定候选运动矢量预测值;视频解码器30使用运动矢量执行帧间预测,以得到正在解码图像块的预测块,其中所述运动矢量是基于所述索引对应的候选运动矢量预测值(MVP)、运动矢量差值(MVD)信息和自适应确定的运动矢量精度得到的。
在合并模式中,视频编码器20(例如帧间预测模块41)基于在先已编码图像块建立候选者列表(merge candidates list);视频解码器30基于在先已解码图像块建立候选者列表。视频编码器20发信号通知候选者列表中的候选者中的一者的索引。在合并模式中,视频解码器30使用该索引对应的候选运动矢量和该候选运动矢量的参考图像索引执行帧间预测,以得到当前正在解码图像块的预测块。在AMVP模式及合并模式两者中,视频编码器20和视频解码器30利用同一列表建立技术,这样的话,视频编码器20在确定如何编码块时使用的列表与视频解码器30在确定如何解码所述块时使用的列表匹配。
反量化模块58及反变换模块60分别应用反量化及反变换,以在像素域中重构建残差块以供稍后用作参考图像的参考块。求和器62将经重构建残差块与通过运动补偿单元44所产生的经运动补偿的预测块相加以产生经重构图像块,所述经重构图像块作为参考块以供存储于参考图像存储器64中。所述经重构图像块可由运动估计单元42及运动补偿单元44用作参考块以帧间预测后续视频帧或图像中的块。
应当理解的是,视频编码器20的其它的结构变化可用于编码视频流。例如,对于某些图像块或者图像帧,视频编码器20可以直接地量化残差信号而不需要经变换模块52处理,相应地也不需要经反变换模块58处理;或者,对于某些图像块或者图像帧,视频编码器20没有产生残差数据,相应地不需要经变换模块52、量化模块54、反量化模块58 和反变换模块60处理;或者,视频编码器20可以将经重构图像块作为参考块直接地进行存储而不需要经滤波器单元处理;或者,视频编码器20中量化模块54和反量化模块58 可以合并在一起;或者,视频编码器20中变换模块52和反变换模块60可以合并在一起;或者,求和器50和求和器62可以合并在一起;或者,参考图像存储器64可以设置在视频编码器20之外;或者视频编码器20非混合编码器结构,无需重建图像块,相应地可以不包括反量化模块58和反变换模块60;或者,某些场景下,仅触发帧间编码模式对应的帧间预测模块41工作。应当理解的是,在上述实施例中没有详述的部分,可以参见其他实施例(例如图5所示的实施例)的相关描述。
图3为本申请实施例中视频解码器30的一种示意性框图。一并参阅图7,视频解码器30可执行自适应确定用于解码当前图像块的运动矢量分辨率(亦称为运动矢量精度或像素精度)的过程,尤其是视频解码器30中的帧间预测模块82可执行自适应确定用于解码当前图像块的运动矢量分辨率的过程。
如图3所示,视频解码器30可以包括熵解码模块80、预测模块81、反量化模块86、反变换模块88和重建模块90(例如求和器90)。在一种示例下,预测模块81可以包括帧间预测模块82和帧内预测模块84,本申请实施例对此不作限定。
在一种可行的实施方式中,视频解码器30还可以包括参考图像存储器92。应当理解的是,参考图像存储器92也可以设置在视频解码器30之外。在一些可行的实施方式中,视频解码器30可执行与关于来自图2的视频编码器20描述的编码流程的示例性地互逆的解码流程。
在解码过程期间,视频解码器30从视频编码器20接收表示经编码视频条带的图像块及相关联的语法元素的经编码视频码流(简称码流)。视频解码器30可在视频序列层级、视频条带层级、图像层级和/或图像块层级处接收语法元素。视频解码器30的熵解码模块80对码流进行熵解码。熵解码模块80将熵解码出的部分数据(例如一些语法元素)提供或发送给预测模块81。本申请实施例中,在一种示例下,这里的熵解码出的数据可以包括当前解码图像块的运动矢量差值(MVD)信息,需要说明的是,该MVD信息可以是当前解码图像块的运动矢量差值,或者也可以是经缩放的运动矢量差值,例如可以是基于某种运动矢量精度(例如某种运动矢量精度的索引值)对所述MVD进行缩放得到的,下文将结合图7详细说明,这里不再赘述。可选的,这里的熵解码出的数据还可以包括运动矢量精度参数,所述运动矢量精度参数用于指示多种运动矢量精度的值,所述运动矢量精度参数可以携带在所述图像块的序列参数集、图像参数集PPS或者条带头中的任意一种。一种具体示例下,所述运动矢量精度参数可以包括用于当前解码处理单元的运动矢量精度个数和与所述运动矢量精度个数对应的至少两种运动矢量精度的值,例如整数像素精度、二分之一像素精度、四分之一像素精度和/或八分之一像素精度。可选的,这里的熵解码出的数据还可以包括某个重要运动矢量集合的运动矢量精度的指示信息。可选的,这里的熵解码出的数据还可以包括用于指示当前解码图像块的候选运动矢量预测值(MVP)的索引 (即第三标识)。
预测模块81中的帧间预测模块82可以基于所述熵解码出的数据确定当前解码图像块的运动信息,所述运动信息包括运动矢量(MV)、运动矢量精度,可选的,所述运动信息还可以包括参考图像指示信息,例如在编解码端共同约定参考图像的情况下,运动信息可以不包括参考图像指示信息。其中参考图像指示信息用于指示当前图像块使用到了哪一个或哪些重建图像作为参考图像,运动矢量表示在所用参考图像中参考块位置相对于当前块位置的位置偏移,一般包含水平分量偏移和竖直分量偏移。例如使用(x,y)表示MV,x 表示水平方向的位置偏移,y表示竖直方向的位置偏移。使用当前块的位置加上MV偏移,便可以得到它的参考块在参考图像中的位置。其中参考图像指示信息可以包括参考图像列表号和与参考图像列表对应的参考图像索引。参考图像索引用于识别指定参考图像列表(RefPicList0或RefPicList1)中的运动矢量所指向的参考图像。本申请实施例中,帧间预测模块82用于获取当前解码图像块的运动矢量预测值(MVP);当所述运动矢量预测值被包括于与某一种运动矢量精度(本文中称为目标运动矢量精度)对应的某一个运动矢量集合(本文中称为目标运动矢量集合)时,基于所述运动矢量预测值、熵解码出的运动矢量差值信息以及所述目标运动矢量精度,得到所述当前解码图像块的运动矢量。例如,当所述运动矢量预测值被包括于目标运动矢量集合时,根据多个运动矢量集合与多种运动矢量精度的对应关系确定所述目标运动矢量集合所对应的目标运动矢量精度为所述运动矢量预测值具有的运动矢量精度,基于所述运动矢量预测值、熵解码出的运动矢量差值信息以及所述目标运动矢量精度,得到所述当前解码图像块的运动矢量。下文将结合图7详细说明,这里不再赘述。
本实施例中,预测模块81用于生成当前解码图像块的预测块;具体的,在视频条带经解码为经帧内解码(I)条带时,预测模块81的帧内预测模块84可基于用信号发送的帧内预测模式及来自当前帧或图像的先前经解码图像块的数据而产生当前视频条带的图像块的预测块。在视频图像经解码为经帧间解码(例如,B、P或GPB)条带时,预测模块81 的帧间预测模块82基于从熵解码模块80所接收的熵解码数据而产生当前视频图像的图像块的预测块,例如,帧间预测模块82使用确定的运动矢量来识别参考图像存储器92(亦称为经解码图像缓冲器92)中的参考图像中的预测块。
本申请实施例中,在AMVP模式中,视频解码器30(例如帧间预测模块82)基于从在先已解码图像块确定的运动矢量建立候选运动矢量预测值列表;根据熵解码出的索引从候选运动矢量预测值列表中确定候选运动矢量预测值。视频解码器30(例如帧间预测模块82)使用运动矢量执行帧间预测,以得到正在解码图像块的预测块,其中所述运动矢量为基于所述索引(即第三标识)对应的候选运动矢量预测值(MVP)、熵解码出的运动矢量差值(MVD)信息以及自适应确定的运动矢量精度而得到。应当理解的是,本申请实施例中,还有其他获取运动矢量预测值的方法,下文将结合图7、图8或图9进行介绍。
反量化模块86对熵解码模块80解码出的经量化变换系数逆量化,即去量化。逆量化过程可包括:使用由视频编码器20针对视频条带中的每个图像块计算的量化参数来确定应施加的量化程度以及同样地确定应施加的逆量化程度。反变换模块88将逆变换应用于变换系数,例如逆DCT、逆整数变换或概念上类似的逆变换过程,以便产生像素域中的残差块。
帧间预测模块82(亦可称为运动补偿模块82)产生经运动补偿块,还可能涉及基于内插滤波器执行内插(interpolation)。可选的,用于以分数像素精度进行运动估计的内插滤波器的识别符可包含在语法元素中。帧间预测模块82可使用由视频编码器20在图像块的编码期间使用的内插滤波器来计算参考块的分数像素的内插值。帧间预测模块82可根据所接收的语法信息确定视频编码器20所使用的内插滤波器且使用所述内插滤波器来产生预测块。例如,帧间预测模块82可使用双线性内插来内插参考块的十六分之一像素位置的值。
在帧间预测模块82产生用于当前图像块的预测块之后,视频解码器30通过将来自反变换模块88的残差块与由帧间预测模块82产生的对应预测块求和以得到重建的块,即经解码图像块。求和器90表示执行此求和操作的组件。在需要时,还可使用环路滤波器(在解码环路中或在解码环路之后)来使像素转变平滑或者以其它方式改进视频质量。滤波器单元(未示意)可以表示一或多个环路滤波器,例如去块滤波器、自适应环路滤波器(ALF) 以及样本自适应偏移(SAO)滤波器。并且,还可以将给定帧或图像中的经解码图像块存储在经解码图像缓冲器92中,经解码图像缓冲器92存储用于后续运动补偿的参考图像。参考图像存储器92可为存储器的一部分,其还可以存储经解码视频,以供稍后在显示装置(例如图1的显示装置32)上呈现,或可与此类存储器分开。
应当理解的是,视频解码器30的其它结构变化可用于解码经编码视频码流。例如,视频解码器30可以不经滤波器单元处理而生成输出视频流;或者,对于某些图像块或者图像帧,视频解码器30的熵解码模块80没有解码出经量化的系数,相应地不需要经反量化模块86和反变换模块88处理。例如,视频解码器30中反量化模块86和反变换模块 88可以合并在一起;或者,参考图像存储器92可以设置在视频解码器30之外;或者,某些场景下,仅触发帧间编码模式对应的帧间预测模块82工作。
应当理解的是,在上述实施例中没有详述的部分,可以参见其他实施例的相关描述。
图4A是本申请实施例的一种整像素位置和分数像素位置的示意图。图4A中示意了整数像素位置、二分之一像素位置和四分之一像素位置,应当理解的是,还可以有其它精度的像素位置。
图4B是本申请实施例的另一种整像素位置和分数像素位置的示意图。如图4B所示,图4B说明整数像素(pel)100的分数像素位置。整数像素100对应于二分之一像素位置102A到102C(二分之一pel 102)、四分之一像素位置104A到104L(四分之一pel 104),及八分之一像素位置106A到106AV(八分之一pel 106)。
如图4B所示,如果运动矢量具有八分之一像素精度,那么运动矢量可指向整数像素位置100、二分之一像素位置102、四分之一像素位置104或八分之一像素位置106中的任一者。然而,如果运动矢量具有四分之一像素精度,那么运动矢量可指向整数像素位置100、二分之一像素位置102、或四分之一像素位置104中的任一者,但将不指向八分之一像素位置106。应当理解的是,在其它实例中,还可使用其它精度,例如,十六分之一像素精度、三十二分之一像素精度或类似者。
整数像素位置100处的像素的值可包含在对应的参考图像中。也就是说,整数像素位置100处的像素的值一般对应于参考图像中的像素的实际值。在运动估计或者运动补偿过程中,如果当前运动矢量的运动矢量精度为分数像素精度(例如,二分之一像素精度,或者四分之一像素精度),则需要通过参考图像的整像素位置的像素值,采用插值滤波器进行插值,得到分数像素位置的像素值,作为当前块的预测块的值。具体插值操作过程与使用的插值滤波器有关,例如,可使用自适应内插滤波器或固定内插滤波器来内插二分之一像素位置102、四分之一像素位置104及八分之一像素位置106(统称为分数像素位置)的值。一般来说,可从一或多个相邻像素内插分数像素位置的值,这里的相邻像素可以是相邻整数像素位置或先前确定的分数像素位置的值。
本申请实施例的下文将详细介绍视频编解码器(例如视频编码器20、视频解码器30) 如何自适应地在例如整数像素精度或分数像素精度(例如八分之一像素精度及四分之一像素精度)之间选择运动矢量的精度。视频编码器20可针对每一运动矢量、每一CU、每一LCU、每一切片、每一帧、每一GOP或其它解码单元做出此选择。在视频编码器20选择运动矢量的四分之一像素精度时,所述运动矢量可指整数像素位置100、二分之一像素位置102或四分之一像素位置104中的任一者。在视频编码器20选择运动矢量的八分之一像素精度时,所述运动矢量可指整数像素位置100、二分之一像素位置102、四分之一像素位置104、或八分之一像素位置106中的任一者。
图5是本申请实施例的一种视频编码方法的示意性流程图。图5所示的过程500可以由视频编码装置、视频编码器(例如视频编码器20)以及其它具有视频编码功能的设备来执行。过程500描述为一系列的步骤或操作,应当理解的是,过程500可以以各种顺序执行和/或同时发生,不限于图5所示的执行顺序。假设具有多个视频帧的视频数据流正在使用视频编码器,执行包括如下步骤的过程500来编码当前视频帧的当前图像块;
图5所示的方法可以包括步骤501至步骤511,下面对步骤501至步骤511进行详细的介绍。
步骤501、对当前正在编码的图像块(简称为当前编码图像块或当前图像块)执行运动估计过程,以得到当前编码图像块的运动矢量,其中所述运动矢量用于指示当前编码图像块相对于参考图像内的预测块的位移;
在一种示例的实现方式下,步骤501可以由视频编码器20的帧间预测模块41,例如运动估计模块42来执行;其中,运动估计模块42比较使用四分之一像素精度运动矢量编码图像块及使用八分之一像素精度运动矢量编码图像块之间的误差差异。例如,运动估计模块42在第一编码回合中使用一或多个四分之一像素精度运动矢量编码图像块且在第二编码回合中使用一或多个八分之一像素精度运动矢量编码图像块。运动估计模块42可进一步在第三编码回合中使用块的一或多个四分之一像素精度运动矢量与一或多个八分之一像素精度运动矢量的多种组合。运动估计模块42可针对图像块的每一编码回合计算速率-失真值且计算速率-失真值之间的差异。例如,针对搜索起始点(比如当前解码图像块的空域邻近块和/或时域邻近块的可用运动矢量指向的搜索起始点)和像素精度的不同组合,运动估计模块42在参考图像中,进行对应的分数或整数像素步长的运动搜索,得到对应的预测块。计算所述每个预测块与当前编码图像块之间的匹配误差,选择匹配误差最小的预测块和其对应的运动矢量,作为最优的预测块和对应的最优运动矢量。其中,匹配误差可以选用SAD准则进行计算。
步骤503、获取所述当前编码图像块的运动矢量预测值;
在一种示例的实现方式下,步骤503可以由视频编码器20的帧间预测模块41,例如运动估计模块42来执行;应当理解的是,在某些实现方式下,步骤501与步骤503没有先后顺序之分,在得到当前编码图像块的运动矢量的时候,相应地,就能得到所述当前编码图像块的运动矢量预测值。
步骤503中,在当前编码图像块的帧间预测模式是AMVP模式的情况下,构建当前编码图像块的AMVP候选运动矢量预测值列表(即AMVP candidate MVP list);根据率失真代价准则从该候选运动矢量预测列表中选择用于当前编码图像块的候选运动矢量预测值(亦称为最佳候选MVP);例如,所述候选运动矢量预测值MVP编码所述当前编码图像块的码率失真代价最小。
一并参阅图6A,以AMVP模式为例,当前图像块的候选MV预测值列表可以包括空域和时域两种运动矢量预测值,A0-A1和B0-B2为当前图像块的空域邻近块位置(亦称为空域候选参考块位置),TTL、TC和TBR为当前图像块的可选的时域邻近块位置(亦称为时域候选参考块位置),本申请不限于此。一般从空域邻近块位置和时域邻近块位置中分别按照顺序获取这些空域、时域邻近块的MV作为若干候选运动矢量预测值构成候选MV 预测值列表。
作为一种示例实现方式,参阅图6A,AMVP的候选MV预测值列表生成过程,如下:
a)首先获取空域候选运动信息。当前图像块的左侧和上方分别产生一个候选MV预测值,左侧的候选MV预测值从A0、A1、缩放的A0和缩放的A1中得到,上方的候选MV预测值从B0、B1、B2、缩放的B0、缩放的B1和缩放的B2中得到;
b)接着获取时域候选运动信息。获取当前图像块在邻近已编码图像(亦称为参考图像)中对应位置并置块(即co-located block)的右下角空域邻近块TBR的运动信息或 co-located block的中间块TC的运动信息;
c)合并空域候选运动信息和时域候选运动信息,保留前两个候选运动信息,不足两个候选运动信息补上零运动信息(0,0),形成最终的候选MV预测值列表。
AMVP候选运动矢量预测值列表的一种示例表,如下:
| MV Idx | MV预测值(用位置表示) |
| 0 | MV<sub>A1</sub> |
| 1 | MV<sub>B1</sub> |
表-1
或者,参阅图6B,以AMVP模式为例,当前图像块的候选MV预测值列表可以包括空域和时域两种运动矢量预测值,A,L,AL,AR和BL为当前图像块的空域邻近块位置(亦称为空域候选参考块位置),T为当前图像块的可选的时域邻近块位置(亦称为时域候选参考块位置),本申请不限于此。一般从空域邻近块位置和时域邻近块位置中分别按照顺序获取这些空域、时域邻近块的MV作为若干候选运动矢量预测值构成候选MV预测值列表。AMVP候选运动矢量预测值列表的另一种示例表,如下:
| MV Idx | MV预测值(用位置表示) |
| 0 | MV<sub>BL</sub> |
| 1 | MV<sub>T</sub> |
表-2
其它建立候选运动矢量预测值列表的方法或其它获取运动矢量预测值的方法参见现有技术,这里不再赘述。
步骤505、当所述运动矢量预测值被包括于与目标运动矢量精度对应的目标运动矢量集合时(例如,当所述运动矢量预测值被包括于目标运动矢量集合时,根据多个运动矢量集合与多种运动矢量精度的对应关系确定所述目标运动矢量集合所对应的目标运动矢量精度为所述运动矢量预测值具有的/对应的运动矢量精度),基于所述当前编码图像块的运动矢量、所述运动矢量预测值以及所述目标运动矢量精度,得到所述当前编码图像块的运动矢量差值(MVD)信息;其中,所述当前编码图像块的运动矢量差值(MVD)具有目标运动矢量精度,所述目标运动矢量集合为多个运动矢量集合中的一个,所述目标运动矢量精度为包括第一运动矢量精度和第二运动矢量精度的多种运动矢量精度中的一种,所述多个运动矢量集合包括第一运动矢量集合和第二运动矢量集合,所述第一运动矢量集合和第二运动矢量集合中的至少一个运动矢量集合包括两个或以上的运动矢量预测值,且所述第一运动矢量集合所对应的第一运动矢量精度不同于所述第二运动矢量集合所对应的第二运动矢量精度;较优地,所述当前编码图像块的运动矢量和所述运动矢量预测值具有相同的运动矢量精度,即目标运动矢量精度;
在一种示例的实现方式下,步骤505可以由视频编码器20的帧间预测模块41,例如运动估计模块42来执行;
在一些可行的实施方式中,步骤505可以包括:
确定所述运动矢量预测值被包括于所述目标运动矢量集合,根据多个运动矢量集合与多种运动矢量精度的对应关系确定所述目标矢量集合对应的目标运动矢量精度为所述运动矢量预测值具有的/对应的运动矢量精度;
基于所述当前编码图像块的运动矢量、所述运动矢量预测值以及目标运动矢量精度,得到当前编码图像块的运动矢量差值(MVD)信息;其中,作为一种示例实现方式,计算所述当前编码图像块的运动矢量与所述运动矢量预测值之差值MVD,所述当前编码图像块的运动矢量、所述运动矢量预测值和所述MVD具有同一运动矢量精度(即均具有目标运动矢量精度)。作为另一种示例实现方式,计算所述当前编码图像块的运动矢量与所述运动矢量预测值之差值MVD,所述当前编码图像块的运动矢量和所述运动矢量预测值具有同一运动矢量精度(即均具有目标运动矢量精度);以及,基于所述目标运动矢量精度(例如所述目标运动矢量精度的索引)对所述计算得到的MVD进行缩放(例如缩小) 处理,以得到经缩放(例如缩小)处理的运动矢量差值MVD。例如,Scaled MVD= MVD>>mvrIdx,其中>>表示右移,Scaled MVD表示经缩放处理的运动矢量差值MVD, mvrIdx表示目标运动矢量精度的索引值,举例说明,假设MVD=16,目标运动矢量精度的索引值=2,Scaled MVD=16>>2=4。应当理解的是,如果mvrIdx=0(例如右移0位),经缩小处理的MVD就是原始MVD。作为一种替代的实现方式,如果mvrIdx=0(例如右移0位),则可无需对所述计算得到的MVD进行缩小(即scale)处理;如果mvrIdx不等于0(例如mvrIdx=2),则基于所述目标运动矢量精度的索引对所述计算得到的MVD 进行缩放(例如缩小)处理(例如右移2位),以得到经缩放(例如缩小)处理的运动矢量差值MVD,经缩小处理的MVD占用比特数小于原始MVD占用比特数。
本申请实施例中,所述多个运动矢量集合中,所述第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前图像块的第一距离不同于所述第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前图像块的第二距离,所述第一邻近块和第二邻近块被包括于所述当前图像块的空域邻近块和/或时域邻近块中。需要说明的是,这里的第一距离,例如是,第一邻近块的左上角像素位置相对于当前图像块的左上角像素位置的距离,或者第一邻近块的中心点像素位置相对于当前图像块的中心点像素位置的距离;这里的第二距离例如是,第二邻近块的左上角像素位置相对于当前图像块的左上角像素位置的距离,或者第二邻近块的中心点像素位置相对于当前图像块的中心点像素位置的距离,但本申请并不限于此。
在一些可行的实施方式中,在第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前图像块的第一距离小于第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前图像块的第二距离的情况下,所述第一运动矢量集合对应的第一运动矢量精度小于所述第二运动矢量集合对应的第二运动矢量精度;或者,
在所述第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前图像块的第一距离大于所述第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前图像块的第二距离的情况下,所述第一运动矢量集合对应的第一运动矢量精度大于所述第二运动矢量集合对应的第二运动矢量精度。
应当理解的是,这里的多个运动矢量集合与多种运动矢量精度的对应关系,可以是预先设置的,也可以是视频编码器本地确定的,针对后者,在一种示例下,所述多个运动矢量集合与多种运动矢量精度的对应关系是根据运动矢量精度赋值规则而确定的;其中,所述运动矢量精度赋值规则用于表征所述运动矢量集合中包括的运动矢量预测值所对应的邻近块与当前图像块之间的距离与运动矢量精度的取值大小之间的关系。例如,可以是按照一组预设固定值的运动矢量精度和运动矢量精度赋值规则“距离越近运动矢量精度越高,距离越远运动矢量精度越低”而设置的对应关系。
表-3或表-4示意了多个运动矢量集合与多种运动矢量精度的一一对应关系,应当理解的是,多个运动矢量集合与多种运动矢量精度也可以是M:N的对应关系,M不等于N,例如,多个运动矢量集合与多种运动矢量精度也可以是一对多或多对一的对应关系,下文将详细介绍。
如表-3或表-4所示,本申请实施例中,可以根据候选运动矢量预测值所在位置(即候选运动矢量预测值所在的邻近块)与当前图像块的距离,将用于构建候选运动矢量预测列表的多个候选运动矢量预测值分成多个运动矢量集合,每个运动矢量集合包括用于构建候选运动矢量预测列表的一个或多个候选运动矢量预测值,且至少一个运动矢量集合包括多个候选运动矢量预测值;编码端与解码端预先约定一组运动矢量精度,例如{1/4,1/2,1,2, 4,8等},编码端例如根据概率统计结果选择各运动矢量集合的最优运动矢量精度;也可以是编码端与解码端预先约定各运动矢量集合(各位置MV预测值)对应的运动矢量精度。
| 运动矢量集合 | 运动矢量预测值(用位置表示) | 运动矢量精度 |
| 0 | MV<sub>A1</sub>,MV<sub>B1</sub> | 1/4 |
| 1 | MV<sub>A0</sub>,MV<sub>B0</sub> | 1/2 |
| 2 | MV<sub>B2</sub> | 1 |
| 3 | MV<sub>T</sub> | 2 |
| 4 | 以其它方式获取的MVP | 4 |
表-3
| 运动矢量集合 | 运动矢量预测值(用位置表示) | 运动矢量精度 |
| 0 | MV<sub>A</sub>,MV<sub>L</sub> | 1/4 |
| 1 | MV<sub>AL</sub> | 1/2 |
| 2 | MV<sub>AR</sub>,MV<sub>BL</sub> | 1 |
| 3 | MV<sub>T</sub> | 2 |
| 4 | 以其它方式获取的MVP | 4 |
表-4
步骤507、将所述当前编码图像块的运动矢量差值(MVD)信息熵编码入码流。
在一种示例的实现方式下,步骤507可以由视频编码器20的熵编码模块56来执行;
步骤507中,可以是将当前编码图像块的MVD信息和第三标识熵编码入码流,所述第三标识用于指示当前编码图像块的运动矢量预测值MVP,例如第三标识为候选MVP列表中选择的候选MVP(例如最优候选MVP)的索引号。需要说明的是,这里的当前编码图像块的MVD信息可以是当前编码图像块的MVD,也可以是经缩放过的MVD(例如经缩小过的MVD)。
可选的,在一些可行的实施方式中,所述过程500还可以包括:将运动矢量精度参数熵编码入码流,所述运动矢量精度参数用于指示所述多种运动矢量精度的值,所述运动矢量精度参数携带在所述图像块的序列参数集SPS、图像参数集PPS、条带头或者其它位置中的任意一种。作为一种具体的示例,所述运动矢量精度参数可以包括用于当前编码处理单元的运动矢量精度个数和与所述运动矢量精度个数对应的至少两种运动矢量精度值,其中所述当前编码处理单元包括视频序列、图像、条带、区域(Partition)、CTU和CU中的一种或多种。
参阅图6C,编码端(例如视频编码器20)采用率失真优化算法(即RDO)在不同的编码处理单元(例如,序列级,图像级,条带级,区域级,CTU级或CU级)下选择最优的一组运动矢量精度值,并写入码流传递到解码端(例如视频解码器30)。以在图像级为例,如果编码端根据RDO计算得到当前图像最优的一组运动矢量精度为{1/4,1/2,1, 2},则将该组运动矢量精度写入PPS头信息中,具体语法结构Picture parameter set RBSP syntax如图6C所示,其中pps_amvr_number表示在当前图像中可用的运动矢量精度的个数,其取值范围为大于或等于1的正整数;pps_amvr_number的值可根据用于构建候选运动矢量预测值列表的候选运动矢量预测值的个数和位置确定。 pps_amvr_set[pps_amvr_number]表示在当前图像中可用的运动矢量精度的值。
应当理解的是,编码端(例如视频编码器20)也可以不需要将运动矢量精度参数编码入码流,相应地,解码端(例如视频解码器30)可采用与编码端预先约定的一组运动矢量精度,甚至可采用与编码端预先约定的各运动矢量集合(各位置MV预测值)对应的运动矢量精度。
可选的,在一些可行的实施方式中,所述过程500还可以包括:
将第一标识熵编码入码流,所述第一标识用于指示第三运动矢量集合对应的第三运动矢量精度;换言之,编解码端之间可以预先约定好传输的第三运动矢量精度对应的是哪一个运动矢量集合(或者哪些位置的运动矢量预测值);
需要说明的是,这里的第三运动矢量集合表示重要运动矢量预测值集合,即成为最佳运动矢量预测值的概率最大或较大的一个或多个运动矢量预测值所构成的运动矢量集合。第三运动矢量精度为第三运动矢量集合使用的运动矢量精度。其中,所述第三运动矢量集合可以为默认的某个运动矢量集合,比如所述多个运动矢量集合中的第一运动矢量集合 (如表-5中的运动矢量集合0);当然,第三运动矢量精度集合也可以是第二运动矢量集合,或者也可以是不同于第一或第二运动矢量集合的其它运动矢量集合;此外,所述第三运动矢量精度可以为所述多种运动矢量精度中的第一运动矢量精度,或者第二运动矢量精度,或者其它运动矢量精度,本申请对此不作限定。
表-5
| 运动矢量精度索引 | 运动矢量精度 | 二进制码 |
| 0 | 1/8 | 00 |
| 1 | 1/4 | 01 |
| 2 | 1/2 | 10 |
| 3 | 1 | 11 |
表-6
此标识信息(例如第一标识)可用于序列级,图像级,条带级,区域级,图像块级(例如CTU级,CU级)等不同编解码处理单元。相应地,该标识信息可携带在所述图像块的序列参数集SPS、图像参数集PPS或者条带头中,例如SPS头信息、PPS头信息中。
当该运动矢量精度为图像级时,将其标识信息(例如第一标识,具体是如表6所示的运动矢量精度索引)写入图像参数集PPS头信息中,具体语法结构“Picture parameterset RBSP syntax”参见图6D,其中pps_amvr_accuracy为0表示当前图像中无论是哪一个图像块的编解码过程中,默认的某个运动矢量集合(例如运动矢量集合0)的运动矢量精度为1/8,pps_amvr_accuracy为1时表示当前图像中无论是哪一个图像块的编解码过程中,默认的某个运动矢量集合(例如运动矢量集合0)的运动矢量精度为1/4,pps_amvr_accuracy 为2时表示当前图像中无论是哪一个图像块的编解码过程中,默认的某个运动矢量集合 (例如运动矢量集合0)的运动矢量精度为1/2,pps_amvr_accuracy为3时表示当前图像中无论是哪一个图像块的编解码过程中,默认的某个运动矢量集合(例如运动矢量集合0) 的运动矢量精度为1。
可选的,作为一种替代实现方式,所述过程500还可以包括:
将第一标识和第二标识熵编码入码流,所述第一标识用于指示第三运动矢量精度,所述第二标识用于指示第三运动矢量集合;换言之,可以在码流中传输第三运动矢量精度对应的是哪一个运动矢量集合;
此标识信息(例如第一标识和第二标识)可用于序列级,图像级,条带级,区域级,CTU级,CU级等不同编解码单元。相应地,该标识信息可携带在所述图像块的序列参数集、图像参数集或者条带头中。
当该运动矢量精度为图像级时,将其标识信息(例如第一标识(具体是运动矢量精度索引)和第二标识(具体是运动矢量集合的索引))写入图像参数集PPS头信息中,具体语法结构“Picture parameter set RBSP syntax”参见图6E,其中pps_amvr set_idx表示运动矢量集合的索引,其取值范围为正整数,即表示存在至少一个运动矢量集合;pps_amvrset_accuracy[pps_amvr set_idx]表示运动矢量集合pps_amvr set_idx对应的运动矢量精度的值。其中,pps_amvr set_accuracy[pps_amvr set_idx]为0表示当前图像中无论是哪一个图像块的编解码过程中,pps_amvr set_idx所指定的运动矢量集合的运动矢量精度为1/8; pps_amvr set_accuracy[pps_amvr set_idx]为1时表示当前图像中的无论是哪一个图像块的编解码过程中,pps_amvr set_idx所指定的运动矢量集合的运动矢量精度为1/4,pps_amvr set_accuracy[pps_amvr set_idx]为2时表示当前图像中的无论是哪一个图像块的编解码过程中,pps_amvr set_idx所指定的运动矢量集合的运动矢量精度为1/2,pps_amvr set_accuracy[pps_amvr set_idx]为3时表示当前图像中的无论是哪一个图像块的解码过程中,pps_amvr set_idx所指定的运动矢量集合的运动矢量精度为1。
进一步的,为了重构建图像块,本发明实施例的过程500还可以包括:
步骤509、基于所述当前编码图像块的运动矢量,得到当前编码图像块的预测块,所述运动矢量具有目标运动矢量精度;
在一种示例的实现方式下,步骤509可以由视频编码器20的帧间预测模块41,例如运动补偿模块44来执行;
由运动补偿模块44执行的运动补偿可涉及基于运动矢量提取或产生预测块,例如,运动补偿模块44可在参考图像列表中的一者中定位运动矢量所指向的预测块。运动补偿模块44还可能涉及执行分数像素精度的内插。一并参阅图4B,整数像素位置100处的像素的值一般对应于参考图像中的像素的实际值。如果目标运动矢量精度为分数像素精度 (例如,二分之一像素精度,或者四分之一像素精度,或者八分之一像素精度),则需要对参考图像的整像素位置的像素值,采用插值滤波器进行插值,得到分数像素位置的像素值,从而得到当前块的预测块的值。
步骤511、基于所述预测块对所述当前编码图像块进行重建。
在一种示例的实现方式下,步骤511可以由视频编码器20的重建模块62,例如求和器62来执行。
应当理解的是,对于某些图像块或者图像帧,视频编码器20没有产生残差数据,相应地,基于所述预测块对所述当前编码图像块进行重建;对于某些图像块或者图像帧,视频编码器20产生残差数据(亦称为残差块),相应地,基于所述预测块和所述残差块对所述当前编码图像块进行重建。
可见,本申请实施例的方法中,一方面,在视频编码器获取当前编码图像块的运动矢量预测值之后,通过该运动矢量预测值所属的目标运动矢量集合所对应的目标运动矢量精度的方式,能自适应确定用于当前编码图像块的适当的运动矢量精度,如果运动矢量集合的数目为N,则视频编码器可支持M种运动矢量MV精度,其中M小于或等于N,M和 N均为正整数,例如M、N大于或等于3,提高了运动矢量预测精度,具体地,由于本发明实施例能自适应地选择运动矢量精度,针对某些视频内容对应的一个或多个图像块,使用具有较高像素精度(例如1/8像素精度)的运动矢量相对于使用较低像素精度的运动矢量,提高了视频编解码质量,而且带来的益处优于内插开销代价,比如,基于具有高像素精度(例如1/8像素精度)的运动矢量得到的预测块更接近于当前编码图像块的原始块,即使内插分数像素位置导致了一些内插开销;而针对某些视频内容对应的一个或多个图像块,使用较低像素精度的运动矢量(例如整数像素精度)相对于使用较高像素精度的运动矢量,既没有降低视频编解码质量,还避免了内插开销代价,因此,本申请实施例的视频编码方法整体上提高了编解码性能;
另一方面,视频编码器能自适应选择目标运动矢量精度来编码所述MVD信息,比如,经缩放(例如缩小)处理的MVD相对于原始MVD占用较少的比特数或者占用一样的比特数,针对前者还能降低了比特传输开销,从而进一步提高了编解码性能;
再一方面,本发明实施例的视频编码器或者不发信号通知任何与运动矢量精度相关的信息或者仅发信号通知重要运动矢量集合的运动矢量精度,在提高编码效率的同时也能进一步节省比特开销,进而进一步提高编解码性能。
图7是本申请实施例的一种视频解码方法的示意性流程图。图7所示的过程700可以由视频解码装置、视频解码器(例如视频解码器30)以及其它具有视频解码功能的设备来执行。过程700描述为一系列的步骤或操作,应当理解的是,过程700可以以各种顺序执行和/或同时发生,不限于图7所示的执行顺序。假设具有多个视频帧的视频数据流正在使用视频解码器,执行包括如下步骤的过程700来解码当前视频帧的当前图像块;
图7所示的方法包括步骤701至步骤709,下面对步骤701至步骤709进行详细的介绍。
步骤701、接收码流,所述码流携带有当前正在解码的图像块(简称为当前解码图像块或当前图像块)的运动矢量差值(Motion Vector Difference,MVD)信息,并从所述码流中解析出所述MVD信息;
例如,步骤701可由视频解码器30的熵解码模块80来执行;
在一种实现方式下,步骤701可包括:接收码流,所述码流包含当前解码图像块的运动矢量差值(MVD)信息和用于指示当前解码图像块的候选运动矢量预测值(MVP)的第三标识(例如索引号),从所述码流中解析出所述MVD信息和所述第三标识;
其中,所述当前解码图像块的MVD信息可以是当前解码图像块的MVD,或者,可以是当前解码图像块的经缩放处理的MVD。
步骤703、获取所述当前解码图像块的运动矢量预测值MVP;
例如,步骤703可以由视频解码器30的预测模块81,例如预测模块81中的帧间预测模块82(亦可称为运动补偿模块82)来执行;
在一种实现方式下,步骤703可包括:基于所述第三标识(例如索引号)从候选运动矢量预测列表中确定所述当前解码图像块的候选运动矢量预测值;作为一种示例,在当前解码图像块的帧间预测模式是AMVP模式的情况下,构建当前解码图像块的AMVP候选运动矢量预测值列表(AMVP candidate MVP list);基于所述第三标识(例如索引号)从 AMVP候选运动矢量预测值列表中确定所述当前解码图像块的候选运动矢量预测值(亦称为最佳候选MVP);一并参阅图6A或图6B,视频解码器30可以采用类似于视频编码器 20的做法构建当前解码图像块的AMVP候选运动矢量预测值列表,如表-1所示,例如:当索引号idx=1时,表示最佳候选MVP为MVB1。
在另一种实现方式下,一并参阅图8,可采用解码端运动矢量导出(Decoder-sidemotion vector derivation,DMVD)技术,尤其是模板匹配(Template matching,TM)方法,获取所述当前解码图像块的运动矢量预测值(MVP)。其中,TM方法是指,确定当前图像块空间相邻的一部分区域作为模板TMc(例如相邻左边一部分区域和/或相邻上边一部分区域),为此模板在参考图像中寻找最匹配的模板(与模板具有同样的尺寸和形状),称为 TMr。根据两个模板的位置确定当前图像块的运动矢量的预测值。其中,两个模板之间的间隔可以是整像素值,也可以是非整像素值,例如包括但不限于二分之一像素、四分之一像素或八分之一像素。详细细节,参见现有技术,在此不再赘述。
在再一种实现方式下,一并参阅图9,采用解码端运动矢量导出(Decoder-sidemotion vector derivation,DMVD)技术,尤其是双向匹配(Bilateral matching)方法,获取所述当前解码图像块的运动矢量预测值(MVP)。其中,双向匹配的方法的原理是假设物体是直线匀速运动,则可以沿着当前块的运动轨迹,在两个不同的参考帧当中寻找最匹配的块。例如,给定一个前向MV0,首先确定其对应的后向MV1,MV0与MV1为镜像关系。具体的,从MV的幅度上,MV0以及MV1与当前图像和两个参考图像之间的时域间隔(TD0, TD1)成正比。从MV的方向上,MV0以及MV1的指向相反。根据MV0以及MV1在两个参考帧当中分别确定了两个匹配块,这两个匹配块相对于当前块的相对位置,便为当前块的MV的预测值。具有最小SAD的MV对可被选择为最接近当前块的运动矢量的运动矢量预测值。详细细节,参见现有技术,在此不再赘述。
其它建立候选运动矢量预测值列表的方法或其它获取运动矢量预测值的方法参见现有技术,这里不再赘述。
步骤705、当所述运动矢量预测值被包括于与目标运动矢量精度对应的目标运动矢量集合时(例如,当所述运动矢量预测值被包括于目标运动矢量集合时,根据多个运动矢量集合与多种运动矢量精度的对应关系确定所述目标运动矢量集合所对应的目标运动矢量精度为所述运动矢量预测值具有的运动矢量精度),基于所述运动矢量预测值、所述运动矢量差值信息以及所述目标运动矢量精度,得到所述当前解码图像块的运动矢量,其中,所述当前解码图像块的运动矢量具有所述目标运动矢量精度,所述目标运动矢量集合为多个运动矢量集合中的一个,所述目标运动矢量精度为包括第一运动矢量精度和第二运动矢量精度的多种运动矢量精度中的一种,所述多个运动矢量集合包括第一运动矢量集合和第二运动矢量集合,所述第一运动矢量集合和第二运动矢量集合中的至少一个运动矢量集合包括两个或以上的运动矢量预测值,且所述第一运动矢量集合所对应的第一运动矢量精度不同于所述第二运动矢量集合所对应的第二运动矢量精度;
例如,步骤705可以由视频解码器30的预测模块81,例如预测模块81中的帧间预测模块82来执行;
在一些可行的实施方式中,参阅图10,步骤705可以包括:步骤7051和步骤7052,下面将对步骤7051和步骤7052进行详细的介绍。
步骤7051、确定所述运动矢量预测值被包括于所述目标运动矢量集合,根据多个运动矢量集合与多种运动矢量精度的对应关系确定与所述目标矢量集合对应的目标运动矢量精度为所述运动矢量预测值具有的/对应的运动矢量精度;
需要说明的是,这里的多个运动矢量集合与多种运动矢量精度的对应关系可以是一一对应关系,也可以是M:N的对应关系,M不等于N,例如,多个运动矢量集合与多种运动矢量精度也可以是一对多或多对一的对应关系,本申请实施例对此不作限定。
所述多个运动矢量集合中,所述第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前图像块的第一距离不同于所述第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前图像块的第二距离,所述第一邻近块和第二邻近块被包括于所述当前图像块的空域邻近块和/或时域邻近块中。
需要说明的是,这里的第一距离,例如是第一邻近块的左上角像素位置相对于当前图像块的左上角像素位置的距离,或者第一邻近块的中心点像素位置相对于当前图像块的中心点像素位置的距离;这里的第二距离例如是第二邻近块的左上角像素位置相对于当前图像块的左上角像素位置的距离,或者第二邻近块的中心点像素位置相对于当前图像块的中心点像素位置的距离,但本申请并不限于此。应当理解的是,这里的第一、第二的说法仅为区分便于描述而已。
需要说明的是,这里的空域邻近块可以包括当前图像块所在图像中的、与所述当前图像块邻近的一个或多个空域邻近块。如图6A所示,所述当前图像块的空域邻近块包括:位于所述当前图像块左下侧的空域邻近块A0,位于所述当前图像块左侧的空域邻近块A1,位于所述当前图像块右上侧的空域邻近块B0,位于所述当前图像块上侧的空域邻近块B1,和/或位于所述当前图像块左上侧的空域邻近块B2。
需要说明的是,这里的时域邻近块可以包括参考图像中、与并置块(co-located块) 邻近的一个或多个空域邻近块,和/或,所述并置块中的一个或多个子块,其中,所述并置块为参考图像中与所述当前图像块具有相同的大小、形状和坐标的图像块。这里的参考图像指的是已重建的图像,具体的,这里的参考图像指的是一个或多个参考图像列表中的参考图像,例如可以是指定参考图像列表中的指定参考图像索引对应的参考图像,也可以是默认的参考图像列表中的处于首位置的参考图像,本申请对此不作限定。需要说明的是,无论是哪一种邻近块,都是指已确定运动矢量图像块(亦指已编码图像块或已解码图像块)。如图6A所示,所述当前图像块的时域邻近块可包括:所述当前图像块的并置块 (co-located块)的右下空域邻近块TBR,所述并置块的中间块Tc,和/或所述并置块的左上块TTL块。
在一些可行的实施方式中,在第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前图像块的第一距离小于第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前图像块的第二距离的情况下,所述第一运动矢量集合对应的第一运动矢量精度高于所述第二运动矢量集合对应的第二运动矢量精度;或者,
在所述第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前图像块的第一距离大于所述第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前图像块的第二距离的情况下,所述第一运动矢量集合对应的第一运动矢量精度低于所述第二运动矢量集合对应的第二运动矢量精度。
本申请实施例中,步骤7051中的多个运动矢量集合与多种运动矢量精度的对应关系至少有四种方式来得到:
第一种方式:多个运动矢量集合与多种运动矢量精度的对应关系,可以是解码端(例如视频解码器30)预先设置的,例如按照预设的规则或预设的方式设置的,例如,可以是按照一组预设固定值的运动矢量精度和预设的运动矢量精度赋值规则“距离越近运动矢量精度越高,距离越远运动矢量精度越低”而设置的对应关系。
参阅图6A和表-7A,或者参阅图6B和表-8A,本申请实施例中,可以根据候选运动矢量预测值所在位置(即候选运动矢量预测值所在的邻近块)与当前图像块的距离,确定多个运动矢量集合,例如将用于构建候选运动矢量预测列表的多个候选运动矢量预测值分成多个运动矢量集合,每个运动矢量集合包括用于构建候选运动矢量预测列表的一个或多个候选运动矢量预测值,且至少一个运动矢量集合包括多个候选运动矢量预测值;编码端与解码端预先约定一组运动矢量精度,例如{1/4,1/2,1,2,4,8等},解码端按照预设的运动矢量精度赋值规则“距离越近运动矢量精度越高,距离越远运动矢量精度越低”设置各运动矢量集合的运动矢量精度。
| 运动矢量集合 | 运动矢量预测值(用位置表示) | 运动矢量精度 |
| 0 | MV<sub>A1</sub>,MV<sub>B1</sub> | 1/4 |
| 1 | MV<sub>A0</sub>,MV<sub>B0</sub> | 1/2 |
| 2 | MV<sub>B2</sub> | 1 |
| 3 | MV<sub>T</sub> | 2 |
表-7A
| 运动矢量集合 | 运动矢量预测值(用位置表示) | 运动矢量精度 |
| 0 | MV<sub>A</sub>,MV<sub>L</sub> | 1/4 |
| 1 | MV<sub>AL</sub> | 1/2 |
| 2 | MV<sub>AR</sub>,MV<sub>BL</sub> | 1 |
| 3 | MV<sub>T</sub> | 2 |
表-8A
第二种方式:多个运动矢量集合与多种运动矢量精度的对应关系,可以是解码端(例如视频解码器30)预先设置的,例如,编码端与解码端预先约定各运动矢量集合(预先设置属于各个运动矢量集合的各位置运动矢量预测值)和预设的运动矢量精度;如表-7B 和表-8B,针对其它方式获取MVP的情况,也可以预设对应的运动矢量精度。
| 运动矢量集合 | 运动矢量预测值(用位置表示) | 运动矢量精度 |
| 0 | MV<sub>A1</sub>,MV<sub>B1</sub> | 1/4 |
| 1 | MV<sub>A0</sub>,MV<sub>B0</sub> | 1/2 |
| 2 | MV<sub>B2</sub> | 1 |
| 3 | MV<sub>T</sub> | 2 |
| 4 | 以其它方式获取的MVP | 4 |
表-7B
| 运动矢量集合 | 运动矢量预测值(用位置表示) | 运动矢量精度 |
| 0 | MV<sub>A</sub>,MV<sub>L</sub> | 1/4 |
| 1 | MV<sub>AL</sub> | 1/2 |
| 2 | MV<sub>AR</sub>,MV<sub>BL</sub> | 1 |
| 3 | MV<sub>T</sub> | 2 |
| 4 | 以其它方式获取的MVP | 4 |
表-8B
第三种方式:多个运动矢量集合与多种运动矢量精度的对应关系,可以是解码端(例如视频解码器30)预先设置的,例如按照预设的规则或预设的方式设置的,编码端与解码端预先约定一组运动矢量精度,例如{1/4,1/2,1,2,4,8等},与第一种方式的区别在于:解码端例如根据概率统计结果确定各运动矢量集合的运动矢量精度,其中前述概率统计结果用于统计每个运动矢量集合使用哪种精度的概率最高;
第四种方式:多个运动矢量集合与多种运动矢量精度的对应关系,可以是解码端(例如视频解码器30)本地确定的,在一种示例下,所述多个运动矢量集合与多种运动矢量精度的对应关系是根据运动矢量精度赋值规则而确定的;具体地,所述多个运动矢量集合与多种运动矢量精度的对应关系是根据运动矢量精度赋值规则和从码流中解析出的运动矢量精度参数而确定的,所述运动矢量精度赋值规则用于表征所述运动矢量集合中包括的运动矢量预测值所对应的邻近块与当前图像块之间的距离与运动矢量精度的取值大小之间的关系,换言之,“距离越近运动矢量精度越高,距离越远运动矢量精度越低”。
相应地,步骤701中接收的码流进一步携带有运动矢量精度参数,所述运动矢量精度参数用于指示所述多种运动矢量精度的值,所述运动矢量精度参数携带在所述图像块的序列参数集SPS、图像参数集PPS、条带头或者其它位置中的任意一种。作为一种具体的示例,所述运动矢量精度参数可以包括用于当前解码处理单元的运动矢量精度个数和与所述运动矢量精度个数对应的至少两种运动矢量精度值,其中所述当前解码处理单元包括视频序列、图像、条带、区域partition、CTU和CU中的一种或多种。较优地,这里的多种运动矢量精度为大于或等于三种的运动矢量精度。
参阅图6C,一组运动矢量精度参数携带在图像参数集PPS头信息中,具体语法结构Picture parameter set RBSP syntax中,pps_amvr_number表示在当前图像中可用的运动矢量精度的个数,其取值范围为大于或等于1的正整数;pps_amvr_number的值可根据用于构建候选运动矢量预测值列表的候选运动矢量预测值的个数和位置确定。 pps_amvr_set[pps_amvr_number]表示在当前图像中可用的运动矢量精度的值。
以pps_amvr_number=4,pps_amvr_set[0]=1/4,pps_amvr_set[1]=1/2,pps_amvr_set[2]= 1,pps_amvr_set[3]=2为例,考虑候选运动矢量预测值的个数的基础上,根据候选运动矢量预测值所在邻近块位置与当前块的距离,距离越近运动矢量精度越高,距离越远运动矢量精度越低,因此各运动矢量集合的运动矢量精度可以设置如上表-8A所示。
以pps_amvr_number=3,pps_amvr_set[0]=1/4,pps_amvr_set[1]=1,pps_amvr_set[2]=4 为例,考虑候选运动矢量预测值的个数的基础上,根据候选运动矢量预测值所在邻近块位置与当前块的距离,距离越近运动矢量精度越高,距离越远运动矢量精度越低,因此各运动矢量集合的运动矢量精度可以设置如下表-8C所示。
| 运动矢量集合 | 运动矢量预测值(用位置表示) | 运动矢量精度 |
| 0 | MV<sub>A</sub>,MV<sub>L</sub> | 1/4 |
| 1 | MV<sub>AL</sub>,MV<sub>AR</sub>,MV<sub>BL</sub> | 1 |
| 2 | MV<sub>T</sub> | 4 |
表-8C
第五种方式:与前述第一至四种方式的区别在于:编码端通过信号指示某个重要运动矢量预测值集合的运动矢量精度;在前述任一种方式的基础上,解码端进一步解析码流得到某个重要运动矢量预测值集合的运动矢量精度,从而得到多个运动矢量集合与多种运动矢量精度的对应关系。
需要说明的是,这里的第三运动矢量集合表示重要运动矢量预测值集合,即成为最佳运动矢量预测值的概率最大或较大的一个或多个运动矢量预测值所构成的运动矢量集合。第三运动矢量精度为第三运动矢量集合使用的运动矢量精度。其中,所述第三运动矢量集合可以为默认的某个运动矢量集合,比如所述多个运动矢量集合中的第一运动矢量集合 (如上表中的运动矢量集合0);当然,第三运动矢量精度集合也可以是第二运动矢量集合,或者也可以是不同于第一或第二运动矢量集合的其它运动矢量集合;此外,所述第三运动矢量精度可以为所述多种运动矢量精度中的第一运动矢量精度,或者第二运动矢量精度,或者其它运动矢量精度,本申请对此不作限定。
相应地,在一种实现方式下,步骤701中接收的码流进一步携带有用于指示第三运动矢量集合对应的第三运动矢量精度的第一标识,换言之,编解码端之间可以预先约定好传输的第三运动矢量精度对应的是哪一个运动矢量集合(或者哪些位置的运动矢量预测值),从而仅需在码流中传输运动矢量精度的指示;
此标识信息(例如第一标识)可用于序列级,图像级,条带级,区域级,CTU级, CU级等不同解码处理单元。相应地,该标识信息可携带在序列参数集、图像参数集、条带头或其它位置中。
如图6D所示,此标识信息(例如第一标识,具体是表-6中的运动矢量精度索引)用于图像层级,相应地,此标识信息携带于图像参数集PPS头信息中,在语法结构“Pictureparameter set RBSP syntax”中,pps_amvr_accuracy为0表示当前图像中无论是哪一个图像块的解码过程中,默认的某个运动矢量集合(例如第三运动矢量集合)的运动矢量精度为1/8,pps_amvr_accuracy为1时表示当前图像中无论是哪一个图像块的解码过程中,默认的某个运动矢量集合(例如第三运动矢量集合)的运动矢量精度为1/4,pps_amvr_accuracy为2时表示当前图像中无论是哪一个图像块的解码过程中,默认的某个运动矢量集合(例如第三运动矢量集合)的运动矢量精度为1/2,pps_amvr_accuracy为3时表示当前图像中无论是哪一个图像块的解码过程中,默认的某个运动矢量集合(例如第三运动矢量集合) 的运动矢量精度为1。
作为一种替代实现方式,步骤701中接收的码流进一步携带有用于指示第三运动矢量精度的第一标识和用于指示第三运动矢量集合的第二标识,换言之,编解码端之间未预先约定好传输的第三运动矢量精度对应的是哪一个运动矢量集合(或者哪些位置的运动矢量预测值),从而还需在码流中传输第三运动矢量精度对应的是哪一个运动矢量集合;
此标识信息(例如第一标识和第二标识)可用于序列级,图像级,条带级,区域级,CTU级,CU级等不同解码处理单元。相应地,该标识信息可携带在序列参数集、图像参数集、条带头或其它位置中。
如图6E所示,此标识信息(例如第一标识(具体是表-6中的运动矢量精度索引)和第二标识(具体是运动矢量集合的索引))用于图像层级,相应地,此标识信息携带于图像参数集PPS头信息中,在语法结构“Picture parameter set RBSP syntax”中,pps_amvr set_idx表示运动矢量集合的索引,其取值范围为正整数,即表示存在至少一个运动矢量集合;pps_amvr set_accuracy[pps_amvr set_idx]表示运动矢量集合pps_amvr set_idx对应的运动矢量精度的值。其中,pps_amvr set_accuracy[pps_amvr set_idx]为0表示当前图像中无论是哪一个图像块的解码过程中,pps_amvr set_idx所指定的运动矢量集合的运动矢量精度为1/8;pps_amvr set_accuracy[pps_amvr set_idx]为1时表示当前图像中的无论是哪一个图像块的解码过程中,pps_amvr set_idx所指定的运动矢量集合的运动矢量精度为1/4, pps_amvr set_accuracy[pps_amvr set_idx]为2时表示当前图像中的无论是哪一个图像块的解码过程中,pps_amvr set_idx所指定的运动矢量集合的运动矢量精度为1/2,pps_amvr set_accuracy[pps_amvr set_idx]为3时表示当前图像中的无论是哪一个图像块的解码过程中,pps_amvr set_idx所指定的运动矢量集合的运动矢量精度为1。
一种示例下,解析码流后得到pps_amvr set_idx=0;pps_amvr set_accuracy[pps_amvr set_idx]=1/8,如表-9A和表-9B所示,则各运动矢量集合对应的运动矢量精度如下:
表-9A
| 运动矢量集合 | 运动矢量预测值(用位置表示) | 运动矢量精度 |
| 0 | MV<sub>A1</sub>,MV<sub>B1</sub> | 1/8 |
| 1 | MV<sub>A0</sub>,MV<sub>B0</sub> | 1/2 |
| 2 | MV<sub>B2</sub> | 1 |
| 3 | MV<sub>T</sub> | 2 |
表-9B
步骤7052、基于所述运动矢量预测值、所述运动矢量差值信息以及目标运动矢量精度,得到当前解码图像块的运动矢量;其中,作为一种示例实现方式,计算所述运动矢量预测值和运动矢量差值MVD信息之和,以得到所述当前解码图像块的运动矢量,所述当前解码图像块的运动矢量、所述运动矢量预测值和运动矢量差值MVD具有同一运动矢量精度(即均具有目标运动矢量精度)。作为另一种示例实现方式,基于所述目标运动矢量精度对所述运动矢量差值信息进行缩放(例如放大)处理,以得到经缩放(例如经放大的) 的运动矢量差值MVD;计算所述运动矢量预测值和所述经放大的运动矢量差值MVD之和,以得到所述当前解码图像块的运动矢量,所述当前解码图像块的运动矢量、所述运动矢量预测值和运动矢量差值MVD具有同一运动矢量精度(即均具有目标运动矢量精度))。其中一种计算方式示意为:MV=MVP+(MVD<<mvrIdx),其中MV表示所述当前解码图像块的运动矢量,MVP表示所述当前解码图像块的运动矢量预测值,MVD表示所述码流中的运动矢量差值MVD信息,mvrIdx表示目标运动矢量精度的索引值,<<表示左移,即表示放大处理。应当理解的是,如果mvrIdx=0,经放大处理的MVD(例如左移0位) 与放大前的MVD相同;如果mvrIdx不等于0(例如mvrIdx=2),则基于所述目标运动矢量精度的索引对所述计算得到的MVD进行放大处理(例如左移2位),以得到经放大处理的运动矢量差值MVD。
步骤707、基于所述当前解码图像块的具有目标运动矢量精度的运动矢量,得到当前解码图像块的预测块;
例如,步骤707可以由视频解码器30的帧间预测模块82(例如运动补偿模块82)来执行;
帧间预测模块82执行的运动补偿可涉及基于运动矢量提取或产生预测块,例如,帧间预测模块82可在参考图像列表中的一者中定位运动矢量所指向的预测块。帧间预测模块82还可能涉及执行分数像素精度的内插。一并参阅图4B,整数像素位置100处的像素的值一般对应于参考图像中的像素的实际值。如果目标运动矢量精度为分数像素精度(例如,二分之一像素精度,或者四分之一像素精度,或者八分之一像素精度),则需要通过参考图像的整像素位置的像素值,采用插值滤波器进行插值,得到分数像素位置的像素值,从而得到当前块的预测块的值。
步骤709、基于所述预测块对所述当前解码图像块进行重建,从而完成当前解码图像块的解码过程
例如,步骤709可以由视频解码器30的重建模块90,例如求和器90来执行。
可见,本申请实施例的视频解码方法中,一方面,在视频解码器获取当前解码图像块的运动矢量预测值之后,通过该运动矢量预测值所属的目标运动矢量集合所对应的目标运动矢量精度的方式,能实现自适应确定用于当前解码图像块的适当的运动矢量精度,如果运动矢量集合的数目为N,则视频解码器可支持M种运动矢量MV精度,其中M小于或等于N,M和N均为正整数,例如M、N大于或等于3,提高了运动矢量预测精度,具体地,由于本发明实施例能自适应地选择运动矢量精度,针对某些视频内容对应的一个或多个图像块,使用具有较高像素精度(例如1/8像素精度)的运动矢量相对于使用较低像素精度的运动矢量,提高了视频编解码质量,而且带来的益处优于内插开销代价,比如基于具有高像素精度(例如1/8像素精度)的运动矢量得到的预测块更接近于当前解码图像块的原始块,即使内插分数像素位置导致了一些内插开销;而针对某些视频内容对应的一个或多个图像块,使用较低像素精度的运动矢量(例如整数像素精度)相对于使用较高像素精度的运动矢量,既没有降低视频编解码质量,还避免了内插开销代价,因此,本申请实施例的视频解码方法整体上提高了编解码性能。
另一方面,视频解码器能自适应选择目标运动矢量精度来解码所述码流中的MVD信息,所述码流中的MVD信息相对于原始MVD占用较少的比特数或者占用一样的比特数,比如,根据目标运动矢量精度将所述MVD信息放大或恢复成原本的MVD,一定程度上节省比特传输开销,从而提高了编解码性能;
再一方面,在视频编码器或者不发信号通知任何与运动矢量精度相关的信息或者仅发信号通知重要运动矢量集合的运动矢量精度的情况下,本发明实施例解码方法能自适应确定用于当前解码图像块的运动矢量精度,在提高编码效率的同时能进一步节省比特开销,进而进一步提高编解码性能。
另外,本申请实施例的视频编码或解码方法可以在需要对视频图像进行编码和/或解码的任何电子设备或者装置内实施。
图11为本申请实施例的视频编码设备或视频解码设备(简称为译码设备1100)的一种实现方式的示意性框图。其中,译码设备1100可以包括处理器1110、存储器1130和总线系统1150。其中,处理器和存储器通过总线系统相连,该存储器用于存储指令,该处理器用于执行该存储器存储的指令。译码设备的存储器存储程序代码,且处理器可以调用存储器中存储的程序代码执行本申请描述的视频编码或解码过程的各种方法实例来自适应地选择用于编码或解码图像块的目标运动矢量精度(例如整像素精度或1/2像素精度或1/4像素精度或1/8像素精度或4像素精度等)。为避免重复,这里不再详细描述。
在本申请实施例中,该处理器1110可以是中央处理单元(Central ProcessingUnit,简称为“CPU”),该处理器1110还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器1130可以包括只读存储器(ROM)设备或者随机存取存储器(RAM)设备。任何其他适宜类型的存储设备也可以用作存储器1130。存储器1130可以包括由处理器1110使用总线1150访问的代码和数据1131。存储器1130可以进一步包括操作系统1133和应用程序1135,该应用程序1135包括允许处理器1110执行本申请描述的视频编码或解码方法的至少一个程序。例如,应用程序1135可以包括应用1至N,其进一步包括执行本申请描述的视频编码或解码方法的视频编码或解码应用(简称视频译码应用)。
该总线系统1150除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统1150。
可选的,译码设备1100还可以包括一个或多个输出设备,诸如显示器1170。在一个示例中,显示器1170可以是触感显示器或触摸显示屏,其将显示器与可操作地感测触摸输入的触感单元合并。显示器1170可以经由总线1150连接到处理器1110。
图12是本申请实施例的具有视频编解码功能的电子设备1200的示意性框图,该装置或者电子设备可以并入根据本发明的实施例的视频编码器或视频解码器。电子设备1200可以例如是无线通信系统的移动终端或者用户设备。应理解,可以在需要对视频图像进行编码和解码,或者编码,或者解码的任何电子设备或者装置内实施本申请的实施例。
装置1200可以包括用于并入和保护设备的壳。装置1200还可以包括形式为液晶显示器的显示器1232。在本发明的其它实施例中,显示器可以是适合于显示图像或者视频的任何适当的显示器技术。装置1200还可以包括用户输入/输出接口1234。在本发明的其它实施例中,可以运用任何适当的数据或者用户接口机制。例如,可以实施用户接口为虚拟键盘或者数据录入系统作为触敏显示器(例如触摸屏)的一部分。装置可以包括麦克风 1236或者任何适当的音频输入,该音频输入可以是数字或者模拟信号输入。装置1200还可以包括如下音频输出设备,该音频输出设备在本发明的实施例中可以是以下各项中的任何一项:耳机1238、扬声器或者模拟音频或者数字音频输出连接。装置1200也可以包括电池,在本发明的其它实施例中,设备可以由任何适当的移动能量设备,比如太阳能电池、燃料电池或者时钟机构生成器供电。装置还可以包括用于与其它设备的近程视线通信的红外线端口1242。在其它实施例中,装置1200还可以包括任何适当的近程通信解决方案,比如蓝牙无线连接或者USB有线连接。
装置1200可以包括用于控制装置1200的控制器56或者处理器。控制器56可以连接到存储器1258,该存储器在本发明的实施例中可以存储形式为图像的数据和音频的数据,和/或也可以存储用于在控制器1256上实施的指令。控制器1256还可以连接到适合于实现音频和/或视频数据的编码和解码或者由控制器1256实现的辅助编码和解码的编码解码器电路54。
装置1200还可以包括用于提供用户信息并且适合于提供用于在网络认证和授权用户的认证信息的读卡器1248和智能卡1246。
装置1200还可以包括无线电接口电路1252,该无线电接口电路连接到控制器并且适合于生成例如用于与蜂窝通信网络、无线通信系统或者无线局域网通信的无线通信信号。装置1200还可以包括天线1244,该天线连接到无线电接口电路1252用于向其它(多个)装置发送在无线电接口电路1252生成的射频信号并且用于从其它(多个)装置接收射频信号。
在本发明的一些实施例中,装置1200包括能够记录或者检测单帧的相机,编码解码器1254或者控制器接收到这些单帧并对它们进行处理。在本发明的一些实施例中,装置可以在传输和/或存储之前从另一设备接收待处理的视频图像数据。在本发明的一些实施例中,装置1200可以通过无线或者有线连接接收图像用于编码/解码。
本申请中出现的“第一”、“第二”和“第三”并无限定顺序的意思,仅是为了在某些描述上下文中区分两个主体,以方便理解,但是其所指示的主体并非在所有实施例中都必须是不同的主体。本申请中出现的“A和/或B”包括A、B以及A和B三种情况。
需要说明的是,对相同步骤或者相同术语的解释和限定同样适用于不同实施例间,为了简洁,本文适当省略重复的描述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
本领域技术人员能够领会,结合本文公开描述的各种说明性逻辑框、模块和算法步骤所描述的功能可以硬件、软件、固件或其任何组合来实施。如果以软件来实施,那么各种说明性逻辑框、模块、和步骤描述的功能可作为一或多个指令或代码在计算机可读媒体上存储或传输,且由基于硬件的处理单元执行。计算机可读媒体可包含计算机可读存储媒体,其对应于有形媒体,例如数据存储媒体,或包括任何促进将计算机程序从一处传送到另一处的媒体(例如,根据通信协议)的通信媒体。以此方式,计算机可读媒体大体上可对应于(1)非暂时性的有形计算机可读存储媒体,或(2)通信媒体,例如信号或载波。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索用于实施本申请中描述的技术的指令、代码和/或数据结构的任何可用媒体。计算机程序产品可包含计算机可读媒体。
作为实例而非限制,此类计算机可读存储媒体可包括RAM、ROM、EEPROM、CD-ROM 或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器或可用来存储指令或数据结构的形式的所要程序代码并且可由计算机存取的任何其它媒体。并且,任何连接被恰当地称作计算机可读媒体。举例来说,如果使用同轴缆线、光纤缆线、双绞线、数字订户线(DSL)或例如红外线、无线电和微波等无线技术从网站、服务器或其它远程源传输指令,那么同轴缆线、光纤缆线、双绞线、DSL或例如红外线、无线电和微波等无线技术包含在媒体的定义中。但是,应理解,所述计算机可读存储媒体和数据存储媒体并不包括连接、载波、信号或其它暂时媒体,而是实际上针对于非暂时性有形存储媒体。如本文中所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。以上各项的组合也应包含在计算机可读媒体的范围内。
可通过例如一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成或离散逻辑电路等一或多个处理器来执行相应的功能。因此,如本文中所使用的术语“处理器”可指前述结构或适合于实施本文中所描述的技术的任一其它结构中的任一者。另外,在一些方面中,本文中所描述的各种说明性逻辑框、模块、和步骤所描述的功能可以提供于经配置以用于编码和解码的专用硬件和 /或软件模块内,或者并入在组合编解码器中。而且,所述技术可完全实施于一或多个电路或逻辑元件中。在一种示例下,视频编码器20及视频解码器30中的各种说明性逻辑框、单元、模块可以理解为对应的电路器件或逻辑元件。
本申请的技术可在各种各样的装置或设备中实施,包含无线手持机、集成电路(IC)或一组IC(例如,芯片组)。本申请中描述各种组件、模块或单元是为了强调用于执行所揭示的技术的装置的功能方面,但未必需要由不同硬件单元实现。实际上,如上文所描述,各种单元可结合合适的软件和/或固件组合在编码解码器硬件单元中,或者通过互操作硬件单元(包含如上文所描述的一或多个处理器)来提供。
以上所述,仅为本申请示例性的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。
Claims (21)
1.一种视频解码方法,其特征在于,包括:
接收码流,所述码流携带有当前解码图像块的运动矢量差值MVD信息;
从所述码流中解析出所述运动矢量差值信息;
获取所述当前解码图像块的运动矢量预测值MVP;
当所述运动矢量预测值被包括于与目标运动矢量精度对应的目标运动矢量集合时,基于所述运动矢量预测值、所述运动矢量差值信息以及所述目标运动矢量精度,得到所述当前解码图像块的运动矢量,其中,所述当前解码图像块的运动矢量具有所述目标运动矢量精度,所述目标运动矢量集合为多个运动矢量集合中的一个,所述目标运动矢量精度为包括第一运动矢量精度和第二运动矢量精度的多种运动矢量精度中的一种,所述多个运动矢量集合包括第一运动矢量集合和第二运动矢量集合,所述第一运动矢量集合和第二运动矢量集合中的至少一个运动矢量集合包括两个或以上的运动矢量预测值,且所述第一运动矢量集合所对应的第一运动矢量精度不同于所述第二运动矢量集合所对应的第二运动矢量精度;
基于所述当前解码图像块的运动矢量,得到当前解码图像块的预测块;
基于所述预测块对所述当前解码图像块进行重建。
2.如权利要求1所述的方法,其特征在于,所述当所述运动矢量预测值被包括于与目标运动矢量精度对应的目标运动矢量集合时,基于所述运动矢量预测值、所述运动矢量差值信息以及目标运动矢量精度,得到所述当前解码图像块的运动矢量,包括:
确定所述运动矢量预测值被包括于所述目标运动矢量集合,根据多个运动矢量集合与多种运动矢量精度的对应关系确定所述目标矢量集合对应的目标运动矢量精度为所述运动矢量预测值具有的运动矢量精度;
计算所述运动矢量预测值和所述运动矢量差值信息之和,以得到所述当前解码图像块的运动矢量,其中所述当前解码图像块的运动矢量、所述运动矢量预测值MVP和所述运动矢量差值MVD具有所述目标运动矢量精度;或者,
基于所述目标运动矢量精度对所述运动矢量差值信息进行放大处理,以得到经放大的运动矢量差值MVD;计算所述运动矢量预测值和所述经放大的运动矢量差值MVD之和,以得到所述当前解码图像块的运动矢量,其中所述当前解码图像块的运动矢量、所述运动矢量预测值和经放大的运动矢量差值MVD具有所述目标运动矢量精度。
3.如权利要求1或2所述的方法,其特征在于,
所述第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前图像块的第一距离不同于所述第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前图像块的第二距离,所述第一邻近块和第二邻近块被包括于所述当前图像块的空域邻近块和/或时域邻近块中。
4.如权利要求1至3任一项所述的方法,其特征在于,
如果所述第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前解码图像块的第一距离小于所述第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前解码图像块的第二距离,则所述第一运动矢量集合对应的第一运动矢量精度高于所述第二运动矢量集合对应的第二运动矢量精度;或者,
如果所述第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前解码图像块的第一距离大于所述第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前解码图像块的第二距离,则所述第一运动矢量集合对应的第一运动矢量精度低于所述第二运动矢量集合对应的第二运动矢量精度。
5.如权利要求2所述的方法,其特征在于,所述多个运动矢量集合与所述多种运动矢量精度的对应关系是预先设置的。
6.如权利要求2或5所述的方法,其特征在于,所述多个运动矢量集合与所述多种运动矢量精度的对应关系是根据运动矢量精度赋值规则而确定的,其中,所述运动矢量精度赋值规则用于表征:所述运动矢量集合中包括的运动矢量预测值所对应的邻近块与当前解码图像块之间的距离越远,运动矢量精度越低;所述运动矢量集合中包括的运动矢量预测值所对应的邻近块与当前解码图像块之间的距离越近,运动矢量精度越高。
7.如权利要求1至6任一项所述的方法,其特征在于,所述码流进一步携带有运动矢量精度参数,所述运动矢量精度参数用于指示所述多种运动矢量精度的值,所述运动矢量精度参数携带在所述当前解码图像块的序列参数集SPS、图像参数集PPS或者条带头中的任一种。
8.如权利要求1至6任一项所述的方法,其特征在于,所述码流进一步携带有运动矢量精度参数,所述运动矢量精度参数用于指示用于当前解码处理单元的运动矢量精度个数和与所述运动矢量精度个数对应的至少两种运动矢量精度值,其中所述当前解码处理单元包括视频序列、图像、条带slice、区域partition、解码树单元CTU和解码单元CU中的一种或多种。
9.如权利要求1至8任一项所述的方法,其特征在于,
所述码流进一步携带有第一标识,所述第一标识用于指示第三运动矢量集合对应的第三运动矢量精度;或者,
所述码流进一步携带有第一标识和第二标识,所述第一标识用于指示第三运动矢量精度,所述第二标识用于指示第三运动矢量集合;
其中,所述第三运动矢量集合为所述多个运动矢量集合中的第一运动矢量集合,或者第二运动矢量集合,或者其它运动矢量集合,所述第三运动矢量精度为所述多种运动矢量精度中的第一运动矢量精度,或者第二运动矢量精度,或者其它运动矢量精度。
10.如权利要求1至9任一项所述的方法,其特征在于,所述码流还携带有第三标识,所述第三标识用于指示当前解码图像块的候选运动矢量预测值MVP;所述获取所述当前解码图像块的运动矢量预测值MVP,包括:基于所述第三标识从候选运动矢量预测值列表中确定所述当前解码图像块的候选运动矢量预测值MVP;
或者,
所述获取所述当前解码图像块的运动矢量预测值MVP,包括:采用双向匹配方法或者模板匹配方法,获取所述当前解码图像块的运动矢量预测值MVP。
11.一种视频解码器,其特征在于,包括:
熵解码模块,用于接收码流,所述码流携带有当前解码图像块的运动矢量差值MVD信息,并从所述码流中解析出所述当前解码图像块的运动矢量差值信息;
帧间预测模块,用于获取所述当前解码图像块的运动矢量预测值MVP;当所述运动矢量预测值被包括于与目标运动矢量精度对应的目标运动矢量集合时,基于所述运动矢量预测值、所述运动矢量差值信息以及所述目标运动矢量精度,得到所述当前解码图像块的运动矢量,其中,所述当前解码图像块的运动矢量具有所述目标运动矢量精度,所述目标运动矢量集合为多个运动矢量集合中的一个,所述目标运动矢量精度为包括第一运动矢量精度和第二运动矢量精度的多种运动矢量精度中的一种,所述多个运动矢量集合包括第一运动矢量集合和第二运动矢量集合,所述第一运动矢量集合和第二运动矢量集合中的至少一个运动矢量集合包括两个或以上的运动矢量预测值,且所述第一运动矢量集合所对应的第一运动矢量精度不同于所述第二运动矢量集合所对应的第二运动矢量精度;以及,基于所述当前解码图像块的运动矢量得到所述当前解码图像块的预测块;
重建模块,用于基于所述当前解码图像块的预测块对所述当前解码图像块进行重建。
12.如权利要求11所述的视频解码器,其特征在于,在所述当所述运动矢量预测值被包括于与目标运动矢量精度对应的目标运动矢量集合时,基于所述运动矢量预测值、所述MVD信息以及目标运动矢量精度,得到所述当前解码图像块的运动矢量的方面,所述帧间预测模块具体用于:
确定所述运动矢量预测值被包括于所述目标运动矢量集合,根据多个运动矢量集合与多种运动矢量精度的对应关系确定所述目标矢量集合对应的目标运动矢量精度为所述运动矢量预测值具有的运动矢量精度;计算所述运动矢量预测值和所述运动矢量差值信息之和,以得到所述当前解码图像块的运动矢量,其中所述当前解码图像块的运动矢量、所述运动矢量预测值MVP和所述运动矢量差值MVD具有所述目标运动矢量精度;或者,
基于所述目标运动矢量精度对所述运动矢量差值信息进行放大处理,以得到经放大的运动矢量差值MVD;计算所述运动矢量预测值和所述经放大的运动矢量差值MVD之和,以得到所述当前解码图像块的运动矢量,其中所述当前解码图像块的运动矢量、所述运动矢量预测值和经放大的运动矢量差值MVD具有所述目标运动矢量精度。
13.如权利要求11或12所述的视频解码器,其特征在于,
所述第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前图像块的第一距离不同于所述第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前图像块的第二距离,所述第一邻近块和第二邻近块被包括于所述当前图像块的空域邻近块和/或时域邻近块中。
14.如权利要求11至13任一项所述的视频解码器,其特征在于,
如果所述第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前解码图像块的第一距离小于所述第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前解码图像块的第二距离,则所述第一运动矢量集合对应的第一运动矢量精度高于所述第二运动矢量集合对应的第二运动矢量精度;或者,
如果所述第一运动矢量集合中的运动矢量预测值所对应的第一邻近块与当前解码图像块的第一距离大于所述第二运动矢量集合中的运动矢量预测值所对应的第二邻近块与当前解码图像块的第二距离,则所述第一运动矢量集合对应的第一运动矢量精度低于所述第二运动矢量集合对应的第二运动矢量精度。
15.如权利要求12所述的视频解码器,其特征在于,所述多个运动矢量集合与所述多种运动矢量精度的对应关系是预先设置的。
16.如权利要求12或15所述的视频解码器,其特征在于,所述多个运动矢量集合与所述多种运动矢量精度的对应关系是根据运动矢量精度赋值规则而确定的,其中,所述运动矢量精度赋值规则用于表征:所述运动矢量集合中包括的运动矢量预测值所对应的邻近块与当前解码图像块之间的距离越远,运动矢量精度越低;所述运动矢量集合中包括的运动矢量预测值所对应的邻近块与当前解码图像块之间的距离越近,运动矢量精度越高。
17.如权利要求11至16任一项所述的视频解码器,其特征在于,所述码流进一步携带有运动矢量精度参数,所述运动矢量精度参数用于指示所述多种运动矢量精度的值,所述运动矢量精度参数携带在所述解码图像块的序列参数集、图像参数集PPS或者条带头中的任一种中;
相应地,所述熵解码模块还用于从所述码流中解析出所述运动矢量精度参数。
18.如权利要求11至16任一项所述的视频解码器,其特征在于,所述码流进一步携带有运动矢量精度参数,所述运动矢量精度参数用于指示用于当前解码处理单元的运动矢量精度个数和与所述运动矢量精度个数对应的至少两种运动矢量精度值,其中所述当前解码处理单元包括视频序列、图像、条带slice、区域partition、解码树单元CTU和解码单元CU中的一种或多种;
相应地,所述熵解码模块还用于从所述码流中解析出所述运动矢量精度参数。
19.如权利要求11至18任一项所述的视频解码器,其特征在于,
所述码流进一步携带有第一标识,所述第一标识用于指示第三运动矢量集合对应的第三运动矢量精度;或者,
所述码流进一步携带有第一标识和第二标识,所述第一标识用于指示第三运动矢量精度,所述第二标识用于指示第三运动矢量集合;
相应地,所述熵解码模块还用于从所述码流中解析出所述第一标识,或者解码出所述第一标识和第二标识;
其中,所述第三运动矢量集合为所述多个运动矢量集合中的第一运动矢量集合,或者第二运动矢量集合,或者其它运动矢量集合;所述第三运动矢量精度为所述多种运动矢量精度中的第一运动矢量精度,或者第二运动矢量精度,或者其它运动矢量精度。
20.如权利要求11至19任一项所述的视频解码器,其特征在于,所述码流还携带有第三标识,所述第三标识用于指示当前解码图像块的候选运动矢量预测值MVP;
所述熵解码模块还用于从所述码流中解析出所述第三标识;
在获取所述当前解码图像块的运动矢量预测值MVP的方面,所述帧间预测模块具体用于:基于所述第三标识从候选运动矢量预测列表中确定所述当前解码图像块的候选运动矢量预测值MVP;
或者,
在获取所述当前解码图像块的运动矢量预测值MVP的方面,所述帧间预测模块具体用于:采用双向匹配方法或者模板匹配方法,获取所述当前解码图像块的运动矢量预测值MVP。
21.一种电子设备,包括如权利要求11至20任一项所述的视频解码器。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201810147223.9A CN110166778A (zh) | 2018-02-12 | 2018-02-12 | 视频解码方法、视频解码器以及电子设备 |
| PCT/CN2019/074822 WO2019154424A1 (zh) | 2018-02-12 | 2019-02-12 | 视频解码方法、视频解码器以及电子设备 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201810147223.9A CN110166778A (zh) | 2018-02-12 | 2018-02-12 | 视频解码方法、视频解码器以及电子设备 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN110166778A true CN110166778A (zh) | 2019-08-23 |
Family
ID=67548796
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201810147223.9A Pending CN110166778A (zh) | 2018-02-12 | 2018-02-12 | 视频解码方法、视频解码器以及电子设备 |
Country Status (2)
| Country | Link |
|---|---|
| CN (1) | CN110166778A (zh) |
| WO (1) | WO2019154424A1 (zh) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN110636290A (zh) * | 2019-08-30 | 2019-12-31 | 北京大学 | 视频图像的运动矢量编解码方法以及编/解码器 |
| CN111050182A (zh) * | 2019-12-27 | 2020-04-21 | 浙江大华技术股份有限公司 | 运动矢量的预测方法、视频编码方法及相关设备、装置 |
| CN111818342A (zh) * | 2020-08-28 | 2020-10-23 | 浙江大华技术股份有限公司 | 帧间预测方法及预测装置 |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN110572674B (zh) * | 2019-09-27 | 2024-03-15 | 腾讯科技(深圳)有限公司 | 视频编解码方法和装置、存储介质及电子装置 |
| CN110572672B (zh) * | 2019-09-27 | 2024-03-15 | 腾讯科技(深圳)有限公司 | 视频编解码方法和装置、存储介质及电子装置 |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20040114689A1 (en) * | 2002-12-13 | 2004-06-17 | Huipin Zhang | Wavelet based multiresolution video representation with spatially scalable motion vectors |
| US20040202250A1 (en) * | 2003-04-14 | 2004-10-14 | Hao-Song Kong | Transcoding compressed videos to reducing resolution videos |
| CN106165419A (zh) * | 2014-01-09 | 2016-11-23 | 高通股份有限公司 | 用于视频译码的自适应运动向量分辨率信令 |
| CN106331722A (zh) * | 2015-07-03 | 2017-01-11 | 华为技术有限公司 | 图像预测方法和相关设备 |
| CN106331703A (zh) * | 2015-07-03 | 2017-01-11 | 华为技术有限公司 | 视频编码和解码方法、视频编码和解码装置 |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI566586B (zh) * | 2009-10-20 | 2017-01-11 | 湯姆生特許公司 | 一序列形象的現時區塊之寫碼方法和重建方法 |
| US20130272409A1 (en) * | 2012-04-12 | 2013-10-17 | Qualcomm Incorporated | Bandwidth reduction in video coding through applying the same reference index |
| US9749642B2 (en) * | 2014-01-08 | 2017-08-29 | Microsoft Technology Licensing, Llc | Selection of motion vector precision |
-
2018
- 2018-02-12 CN CN201810147223.9A patent/CN110166778A/zh active Pending
-
2019
- 2019-02-12 WO PCT/CN2019/074822 patent/WO2019154424A1/zh not_active Ceased
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20040114689A1 (en) * | 2002-12-13 | 2004-06-17 | Huipin Zhang | Wavelet based multiresolution video representation with spatially scalable motion vectors |
| US20040202250A1 (en) * | 2003-04-14 | 2004-10-14 | Hao-Song Kong | Transcoding compressed videos to reducing resolution videos |
| CN106165419A (zh) * | 2014-01-09 | 2016-11-23 | 高通股份有限公司 | 用于视频译码的自适应运动向量分辨率信令 |
| CN106331722A (zh) * | 2015-07-03 | 2017-01-11 | 华为技术有限公司 | 图像预测方法和相关设备 |
| CN106331703A (zh) * | 2015-07-03 | 2017-01-11 | 华为技术有限公司 | 视频编码和解码方法、视频编码和解码装置 |
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN110636290A (zh) * | 2019-08-30 | 2019-12-31 | 北京大学 | 视频图像的运动矢量编解码方法以及编/解码器 |
| CN110636290B (zh) * | 2019-08-30 | 2021-12-03 | 北京大学 | 视频图像的运动矢量编解码方法以及编/解码器 |
| CN111050182A (zh) * | 2019-12-27 | 2020-04-21 | 浙江大华技术股份有限公司 | 运动矢量的预测方法、视频编码方法及相关设备、装置 |
| WO2021129626A1 (en) * | 2019-12-27 | 2021-07-01 | Zhejiang Dahua Technology Co., Ltd. | Method and apparatus for motion prediction and video coding |
| US12238330B2 (en) | 2019-12-27 | 2025-02-25 | Shejiang Dahua Technology Co., Ltd. | Radio frequency assembly and electronic device |
| CN111818342A (zh) * | 2020-08-28 | 2020-10-23 | 浙江大华技术股份有限公司 | 帧间预测方法及预测装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| WO2019154424A1 (zh) | 2019-08-15 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN111543059B (zh) | 图像预测方法、装置以及编解码器 | |
| CN111164973B (zh) | 译码用于视频译码的仿射预测运动信息 | |
| CN109792532B (zh) | 用于视频译码的适应性运动向量精准度 | |
| CN107710764B (zh) | 确定用于视频译码的照明补偿状态的系统及方法 | |
| US10462462B2 (en) | Motion vector difference coding technique for video coding | |
| CN107534766B (zh) | 于视频译码中针对子块推导运动信息方法、装置 | |
| CN106165419B (zh) | 用于视频译码的自适应运动向量分辨率信令 | |
| CN110089116B (zh) | 通过光照补偿和整数运动向量限制进行编码优化 | |
| US20190230376A1 (en) | Advanced motion vector prediction speedups for video coding | |
| WO2019120305A1 (zh) | 图像块的运动信息的预测方法、装置及编解码器 | |
| KR20130126688A (ko) | 모션 벡터 예측 | |
| CN112740679A (zh) | 用于视频译码中的条件性解码器侧运动矢量修正的装置和方法 | |
| KR102542196B1 (ko) | 비디오 코딩 방법 및 장치 | |
| CN110166778A (zh) | 视频解码方法、视频解码器以及电子设备 | |
| WO2020043111A1 (zh) | 基于历史候选列表的图像编码、解码方法以及编解码器 | |
| CN112740663A (zh) | 图像预测方法、装置以及相应的编码器和解码器 | |
| CN110677645B (zh) | 一种图像预测方法及装置 | |
| CN110546956B (zh) | 一种帧间预测的方法及装置 | |
| HK40002586A (zh) | 用於视频译码的适应性运动向量精准度 | |
| HK40002586B (zh) | 用於视频译码的适应性运动向量精准度 | |
| HK1240441A1 (zh) | 視頻譯碼中運動信息推導模式確定 | |
| HK1240440A1 (zh) | 視頻譯碼中運動向量推導 | |
| HK1190254B (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 | ||
| WD01 | Invention patent application deemed withdrawn after publication | ||
| WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190823 |