[go: up one dir, main page]

CN115004703A - 图像和视频压缩的帧内预测 - Google Patents

图像和视频压缩的帧内预测 Download PDF

Info

Publication number
CN115004703A
CN115004703A CN202080093804.4A CN202080093804A CN115004703A CN 115004703 A CN115004703 A CN 115004703A CN 202080093804 A CN202080093804 A CN 202080093804A CN 115004703 A CN115004703 A CN 115004703A
Authority
CN
China
Prior art keywords
intercept
pixel
block
prediction
peripheral
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202080093804.4A
Other languages
English (en)
Inventor
詹姆斯·班科斯基
德巴尔加·慕克吉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of CN115004703A publication Critical patent/CN115004703A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods 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/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods 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/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods 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/167Position within a video image, e.g. region of interest [ROI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods 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 pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques

Landscapes

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

Abstract

一种使用帧内预测模式对当前块进行代码化的方法包括:获取焦点,该焦点在坐标系中具有坐标(a,b);以及使用第一外围像素与第二外围像素来生成该当前块的预测块,其中该第一外围像素形成构成x轴的第一外围像素线,并且其中该第二外围像素形成构成y轴的第二外围像素线。生成该预测块包括:对于在该预测块的位置(i,j)处的该预测块的每个位置,确定x截距或y截距中的至少一个;以及使用该x截距或该y截距中的该至少一个来确定该预测块的每个位置的预测像素值。

Description

图像和视频压缩的帧内预测
相关申请的交叉引用
本申请要求2020年2月13日提交的美国临时专利申请62/976,001号的优先权和权益,其全部公开内容通过引用并入本文。
背景技术
数字视频流可以使用一系列帧或静止图像来表示视频。数字视频能够被用于各种应用,包括例如视频会议、高清视频娱乐、视频广告或用户生成视频的共享。数字视频流能够包含大量数据并且消耗计算设备的显著量的计算或通信资源用于视频数据的处理、传输或存储。已经提出了各种方法来减少视频流中的数据量,包括压缩和其他编码技术。
基于空间相似性的编码可以通过将帧或图像分解成基于相同帧或图像内的其他块预测的块来执行。块和预测块之间的差(即残差)在比特流中被压缩和编码。解码器使用差和参考帧来重构帧或图像。
发明内容
本文公开了用于使用帧内预测对块进行编码和解码的方面、特征、元素和实施方式。
第一方面是使用帧内预测模式对当前块进行代码化的方法。该方法包括获取焦点,该焦点在坐标系中具有坐标(a,b);使用第一外围像素和第二外围像素生成用于当前块的预测块,其中第一外围像素形成构成x轴的第一外围像素线,其中第二外围像素形成构成y轴的第二外围像素线,并且其中第一外围像素线和第二外围像素线形成具有原点的坐标系;并且对与当前块和预测块之间的差相对应的残差块进行代码化。生成预测块包括:对于在预测块的位置(i,j)处的预测块的每个位置,确定x截距或y截距中的至少一个,其中x截距是第一点,在该第一点由以预测块的每个位置为中心的点和焦点形成的线与第一外围像素线相交,并且其中y截距是第二点,在该第二点由以预测块的每个位置为中心的点和焦点形成的线与第二外围像素线相交;以及使用x截距或y截距中的至少一个来确定预测块的每个位置的预测像素值。
另一方面是用于解码当前块的装置。该装置包括存储器和处理器。处理器被配置为:执行存储在存储器中的指令以从压缩比特流中解码焦点;获取当前块的预测像素的预测块,其中每个预测像素位于预测块内的相应位置;以及使用预测块重构当前块。为获取预测块包括:对于预测块的每个位置,执行指令以获取指示相应预测角度的线,该线将焦点连接到每个位置;以及使用该线确定每个位置的像素值。
另一方面是一种用于编码当前块的方法。该方法包括:使用外围像素获取用于当前块的预测像素的预测块,其中每个预测像素位于预测块内的相应位置;以及在压缩比特流中编码焦点。获取预测块包括:获取焦点,该焦点在坐标系中具有坐标(a,b),该焦点在当前块外部,并且焦点不是任何外围像素;对于预测块的每个位置,执行包括获取指示相应预测角度的线的步骤,该线将焦点连接到每个位置;以及使用该线确定每个位置的像素值。
应当理解,能够以任何方便的形式实现方面。例如,可以通过适当的计算机程序来实现方面,该计算机程序可以承载在适当的可以是有形载体介质(例如盘)或无形载体介质(例如通信信号)的载体介质上。还可以使用合适的装置来实现方面,该装置可以采取运行被布置为实施所述方法的计算机程序的可编程计算机的形式。能够组合方面使得在一个方面的上下文中描述的特征可以在另一个方面实现。
附图说明
本文的描述参考了附图,其中遍及若干视图,相同的附图标记指示相同的部分。
图1是视频编码和解码系统的示意图。
图2是能够实现发送站或接收站的计算设备的示例的框图。
图3是将要被编码并且后续被解码的视频流的图。
图4是根据本公开的实施方式的编码器的框图。
图5是根据本公开的实施方式的解码器的框图。
图6是根据本公开的实施方式的帧的一部分的表示的框图。
图7是帧内预测模式的示例的图。
图8是包括铁轨的图像部分的示例。
图9是根据本公开的实施方式的用于确定沿外围像素线的位所以用于确定预测像素值的技术的流程图的示例。
图10是根据本公开的实施方式的通过图9的技术计算的位所的示例。
图11是从图10的示例计算的预测块的示例。
图12是根据本公开的实施方式的用于当前块的帧内预测的技术的流程图。
图13是根据本公开的实施方式的使用帧内预测为当前块生成预测块的技术的流程图。
图14是根据本公开的实施方式的用于使用帧内预测模式对当前块进行解码的技术的流程图。
图15是示出根据本公开的实施方式的焦点的示例1500。
图16是示出根据本公开的实施方式的x和y截距的示例。
图17示出了根据本公开的实施方式的焦点组的示例。
图18是根据本公开的实施方式的用于确定沿外围像素线的位所以确定预测像素值的技术的流程图的示例。
图19是根据本公开的实施方式的使用帧内预测为当前块生成预测块的技术的流程图。
图20A至20B是用于示出图19的技术的示例。
图21示出了当上方外围像素被用作主要外围像素时的图19的技术的示例。
具体实施方式
如上所述,与代码化视频流相关的压缩方案可以包括将图像分解成块并使用一个或多个技术来生成数字视频输出比特流(即,编码的比特流)以限制输出比特流中包括的信息。能够对接收的比特流进行解码,以从有限的信息重新创建块和源图像。对视频流或者诸如帧或块的视频流的一部分进行编码能够包括使用视频流中的空间相似性来提高代码化效率。例如,视频流的当前块可以基于识别先前代码化的像素值或先前代码化的像素值的组合与当前块中的像素值之间的差(残差)来编码。
使用空间相似性的编码能够被称为帧内预测。帧内预测尝试使用当前块外围的像素来预测视频流的帧(即图像、图片)或单个图像的当前块的像素值;也就是说,使用与当前块在相同帧中但在当前块外部的像素。帧内预测能够沿着本文称为预测角度的预测方向被执行,其中每个方向能够对应于帧内预测模式。帧内预测模式使用被预测的当前块外围的像素。当前块外围的像素是当前块外部的像素。帧内预测模式能够由编码器用信号通知给解码器。
能够支持许多不同的帧内预测模式。一些帧内预测模式对使用至少一个外围像素生成的预测块内的所有像素使用单个值。其他被称为方向帧内预测模式,所述方向帧内预测模式每个都具有对应的预测角度。帧内预测模式能够包括例如水平帧内预测模式、垂直帧内预测模式以及各种其他方向的帧内预测模式。例如,编码解码器能够具有与50至60个预测角度对应的可用预测模式。关于图7描述帧内预测模式的示例。
然而,诸如以上描述的和关于图7描述的那些的当前编码解码器的帧内预测模式可能不能对包含平行线的图像或场景块进行最优地代码化。众所周知,场景(例如,图像)的透视表示或其中图像包括平行线的以一定角度观看的场景能够具有一个或多个消失点。也就是说,平行线能够被感知(即,被看到)为汇聚到消失点(或者焦点)(或者从消失点(或者焦点)发散)。包括平行线或棋盘图案的图像的非限制性示例包括条纹衬衫、建筑物上的砖块、百叶窗、火车轨道、镶板木地板、太阳光线、树干等。虽然为了便于描述,本文使用平行线,但本公开不受此限制。例如,本文的公开能够与平行边缘(诸如图像中的铅笔的边缘,其中图像是从点的点获取的)一起使用。此外,本公开不限于直线。下面描述的参数能够被用于覆盖预测线中的曲线。
这样的图案能够通过视觉被容易地识别出来。然而,当从非90度角的透视角查看时,这样的图案能够明显更难以以编程方式分辨和编码。如已经提到的,平行线能够显现为去到远处的一个点上,诸如关于示出了汇聚的铁轨的图8描述的。
虽然一些帧内预测模式能够具有相关联的方向,但是该相同方向被用于生成预测块的每个预测像素。然而,关于汇聚线(诸如图8的铁轨),每个线能够具有不同的方向。因此,单一方向帧内预测模式可能不生成用于代码化当前块的最优预测块。通过最优预测块是指最小化预测块和被编码的当前块之间的残差误差的预测块。
根据本公开的实施方式使用能够被用于对包括汇聚线的块进行代码化的新颖帧内预测模式。如上所指示,帧内预测模式使用当前块外围的像素。在高层级上,根据本公开的实施方式使用帧内预测模式生成的预测块能够使得预测块的一行的一个像素能沿一个方向从一个或多个外围像素复制,而预测块的相同行的另一个像素能沿不同方向从一个或多个其他外围像素复制。另外,如下面进一步描述的,能够根据帧内预测模式的参数可选地应用扩缩(扩大或缩小)。
在一些实施例中,为了根据本公开的帧内预测模式生成预测块,通常用于帧内预测的外围像素的相同集合(即,上方和/或左侧外围像素)针对预测块的每个像素(即像素位置)被反复重新采样。外围像素被视为像素值的连续线,为了便于参考,本文将其称为外围像素线。为了生成预测块的预测像素,考虑外围像素线的不同位所。然而,如下面进一步描述的,每次考虑位所时,该位所根据帧内预测模式的参数从紧接在前的位所移位。需要注意的是,外围像素线的像素位置的仅整数位置的像素值是已知的:外围像素本身。像这样,使用例如插值或滤波操作从外围像素获取外围像素线的子像素(即,非整数像素)值。
在其他实施例中,能够使用方向预测模式来生成初始预测块。然后能够对初始预测块应用翘曲(例如,翘曲函数、翘曲参数集合等)以生成预测块。在示例中,翘曲能够是透视翘曲。在示例中,翘曲能够是仿射翘曲。
在又一个实施例中,根据本公开的帧内预测模式能够使用远离当前块一距离的焦点。焦点能够被认为是空间中的一个点,当前块的所有像素都从该点发散或者都汇聚到该点。对于预测块的每个预测像素位置,绘制连接像素位置和焦点的线。确定线与由左侧和上方外围像素形成的坐标系的x轴和y轴截断的x截距和y截距。x截距和y截距被用于确定(例如,识别、选择、计算等)用于计算预测像素值的外围像素。
总而言之,对于预测块的所有像素,诸如关于图7描述的那些的方向预测模式导致平行预测线。然而,根据本公开的实施方式的帧内预测模式导致非平行预测线。像这样,能够根据不同的预测角度计算至少两个预测像素。
与其中每个预测像素都是根据相同的预测角度计算的传统方向预测模式的设计和语义相比,虽然根据本公开的帧内预测模式可以导致通过使用平行预测线(即,相同的预测角度)得出(例如,被计算出)两个或更多预测像素,这仅是偶然的。例如,虽然依赖于焦点的位置,多于一个的预测像素能够具有相同的预测角度,但根据本公开的实施方式的帧内预测模式使得并非所有的预测像素都能够具有相同的预测角度。
在首先描述可以实现本文公开的用于图像和视频压缩的帧内预测的环境之后,本文描述细节。尽管关于视频编码器和视频解码器描述了根据本公开的帧内预测模式,但帧内预测模式也能够被用于图像编码解码器中。图像编码解码器能够是或能够共享本文描述的视频编码解码器的许多方面。
图1是视频编码和解码系统100的示意图。发送站102能够是例如具有诸如图2中描述的硬件内部配置的计算机。然而,发送站102的其他合适的实施方式是可能的。例如,发送站102的处理能够被分布在多个设备之间。
网络104能够连接发送站102和接收站106以对视频流进行编码和解码。特别地,视频流能够在发送站102中被编码,并且编码的视频流能够在接收站106中被解码。网络104能够例如是互联网。网络104还能够是将视频流从发送站102传输到本示例中的接收站106的局域网(LAN)、广域网(WAN)、虚拟专用网(VPN)、蜂窝电话网络或任何其他方式。
在一个示例中,接收站106能够是具有诸如图2中所描述的硬件的内部配置的计算机。然而,接收站106的其他合适的实施方式是可能的。例如,接收站106的处理能够被分布在多个设备之间。
视频编码和解码系统100的其他实施方式是可能的。例如,实施方式能够省略网络104。在另一个实施方式中,能够对视频流进行编码,然后将其存储用于之后发送到接收站106或任何其他具有存储器的设备。在一个实施方式中,接收站106接收(例如,经由网络104、计算机总线和/或一些通信路径)编码的视频流并且存储视频流用于之后解码。在示例实施方式中,实时传输协议(RTP)被用于在网络104上传输编码的视频。在另一个实施方式中,可以使用RTP之外的传输协议,例如,基于超文本传输协议(HTTP)的视频流协议。
当在视频会议系统中使用时,例如,发送站102和/或接收站106可以包括如下所述对视频流进行编码和解码两者的能力。例如,接收站106可以是视频会议参与者,所述视频会议参与者从视频会议服务器(例如,发送站102)接收编码的视频比特流以解码和查看和进一步编码其自己的视频比特流,并且将其自己的视频比特流发送到视频会议服务器用于由其他参与者解码和查看。
图2是能够实现发送站或接收站的计算设备200的示例的框图。例如,计算设备200能够实现图1的发送站102和接收站106中的一个或两者。计算设备200能够是包括多个计算设备的计算系统的形式,或者单个计算设备的形式,例如,移动电话、平板计算机、膝上型计算机、笔记本计算机、台式计算机等。
计算设备200中的CPU 202能够是中央处理单元。可替选地,CPU202能够是能够操纵或处理现在存在的或以后开发的信息的任何其他类型的设备或多个设备。尽管能够利用所示的单个处理器,例如CPU202,来实践所公开的实施方式,但是能够使用多于一个处理器来达成速度和效率上的优势。
在一个实施方式中,计算设备200中的存储器204能够是只读存储器(ROM)设备或随机存取存储器(RAM)设备。任何其他合适类型的存储设备都能够被用作存储器204。存储器204能够包括由CPU 202使用总线212访问的代码和数据206。存储器204能够进一步包括操作系统208和应用程序210,应用程序210包括允许CPU 202执行这里描述的方法的至少一个程序。例如,应用程序210能够包括应用1到N,应用1到N进一步包括执行这里描述的方法的视频代码化应用。计算设备200还能够包括次级存储器214,次级存储器214能够例如是与可移动的计算设备200一起使用的存储卡。因为视频通信会话可能包含显著数量的信息,所以它们能够全部地或部分地被存储在次级存储器214中,并且根据用于处理的需要来被加载到存储器204中。
计算设备200还能够包括一个或多个输出设备,诸如显示器218。在一个示例中,显示器218可以是将显示器与可操作以感测触摸输入的触敏元件相结合的触敏显示器。显示器218能够经由总线212被耦合到CPU 202。能够提供允许用户编程或以其他方式使用计算设备200的其他输出设备作为显示器218的附加或者替代。当输出设备是显示器或者包括显示器时,该显示器能够以各种方式实现,包括通过液晶显示器(LCD)、阴极射线管(CRT)显示器或发光二极管(LED)显示器,诸如有机LED(OLED)显示器。
计算设备200还能够包括图像感测设备220或者与其通信,所述图像感测设备220例如相机或现在存在或以后开发的能够感测诸如操作计算设备200的用户的图像这样的图像的任何其他图像感测设备220。图像感测设备220能够被放置使得其指向操作计算设备200的用户。在示例中,图像感测设备220的位所和光轴能够被配置使得视场包括与显示器218直接相邻并且从其中显示器218可见的区域。
计算设备200还能够包括声音感测设备222或者与其通信,所述声音感测设备222例如麦克,或现在存在或以后开发的能够感测计算设备200附近的声音的任何其他声音感测设备。声音感测设备222能够被放置使得其指向操作计算设备200的用户,并且能够被配置为接收用户在操作计算设备200时发出的声音,例如语音或其他话语。
虽然图2将计算设备200的CPU 202和存储器204描绘为集成到单个单元中,但能够使用其他配置。CPU 202的操作能够被分布在多个机器上(每个机器具有一个或多个处理器),所述多个机器能够被直接耦合或跨局域网或其他网络耦合。存储器204能够被分布在多个机器上,诸如基于网络的存储器或执行计算设备200的操作的多个机器中的存储器。虽然这里描绘为单个总线,但是计算设备200的总线212能够由多个总线组成。此外,次级存储器214能够被直接耦合到计算设备200的其他组件,或者能够经由网络访问,并且能够包括诸如存储卡单个集成单元,或诸如多个存储卡的多个单元。计算设备200因此能够以各种配置来实现。
图3是将要被编码和后续被解码的视频流300的示例的图。视频流300包括视频序列302。在下一层级,视频序列302包括许多相邻帧304。虽然三个帧被描绘为相邻帧304,但是视频序列302能够包括任何数量的相邻帧304。然后能够将相邻帧304进一步细分为单独的帧,例如帧306。在下一层级,能够将帧306划分为片段308的系列或平面。例如,片段308能够是允许并行处理的帧的子集。片段308也能够是能将视频数据分离成单独颜色的帧的子集。例如,彩色视频数据的帧306能够包括亮度平面和两个色度平面。能够以不同的分辨率对片段308进行采样。
无论帧306是否被划分为片段308,帧306可以进一步被细分为块310,块310能够包含与例如帧306中的16x16像素对应的数据。块310也能够被布置成包括来自像素数据的一个或多个片段308的数据。块310也能够具有任何其他合适的尺寸,诸如4x4像素、8x8像素、16x8像素、8x16像素、16x16像素或更大。
图4是根据本公开的实施方式的编码器400的框图。如上所述,编码器400能够在发送站102中实现,诸如通过提供存储在例如存储器204的存储器中的计算机软件程序。计算机软件程序能够包括机器指令,当机器指令由诸如CPU 202的处理器执行时,使得发送站102以本文描述的方式对视频数据进行编码。编码器400也能够被实现为被包括在例如发送站102中的专用硬件。编码器400具有以下级以执行正向通路中的各种功能(由实线连接线所示)以使用视频流300作为输入来产生编码的或压缩的比特流420:帧内/帧间预测级402、变换级404、量化级406和熵编码级408。编码器400还可以包括重构路径(由点连接线所示)来重构用于对未来的块进行编码的帧。在图4,编码器400具有以下级以在重构路径中执行各种功能:去量化级410、逆变换级412、重构级414和环路滤波级416。编码器400的其他结构变化能够被用于编码视频流300。
当呈现视频流300用于编码时,能够以块为单位处理帧306。在帧内/帧间预测级402,能够使用帧内预测(intra-frame prediction)(也称为帧内的预测(intra-prediction))或帧间预测(inter-frame prediction)(也称为帧间的预测(inter-prediction))或两者的组合对块进行编码。在任何情况下,都能够形成预测块。在帧内预测的情况下,预测块的全部或一部分可以由当前帧中先前已经被编码和重构的样本形成。在帧间预测的情况下,预测块的全部或部分可以由使用运动向量确定的一个或多个先前构造的参考帧中的样本形成。
接下来,仍参照图4,能够在帧内/帧间预测级402从当前块中减去预测块以产生残差块(也称为残差)。变换级404使用基于块的变换将残差变换成例如频域中的变换系数。这样的基于块的变换包括例如离散余弦变换(DCT)和非对称离散正弦变换(ADST)。其他基于块的变换是可能的。此外,可以将不同变换的组合应用于单个残差。在应用变换的一个示例中,DCT将残差块变换到变换系数值基于空间频率的频域。最低频率(DC)系数处于矩阵左上,和最高频率系数处于矩阵右下。值得注意的是,预测块的大小以及由此产生的残差块可能与变换块的大小不同。例如,可以将预测块分割成应用单独变换的更小块。
量化级406使用量化器值或量化层级将变换系数转换成离散的量子值,所述离散的量子值被称为量化的变换系数。例如,可以将变换系数除以量化器值并截取。然后由熵编码级408对量化的变换系数进行熵编码。可以使用包括令牌和二叉树的任何数量的技术来执行熵代码化。然后将熵编码系数与用于将块进行解码的其他信息一起输出到压缩比特流420,所述用于将块进行解码的其他信息可以包括例如所使用的预测类型、变换类型、运动向量和量化器值。将块进行解码的信息可以被熵代码化为压缩比特流420内的块、帧、切片和/或段头。压缩比特流420也能够被称为编码视频流或编码视频比特流,并且这些术语将在本文中被可交换地使用。
图4中的重构路径(由点连接线示出)能够被用于确保编码器400和解码器500(如下所述)两者使用相同的参考帧和块来解码压缩比特流420。重构路径执行功能,该功能类似于以下更详细讨论的解码过程期间发生的功能,包括在去量化级410对量化的变换系数进行去量化以及在逆变换级412对去量化的变换系数进行逆变换以产生导数残差块(也称为导数残差)。在重构级414,能够将在帧内/帧间预测级402预测的预测块添加到导数残差以创建重构块。环路滤波级416能够被应用于重构块以减少失真,诸如块伪影。
编码器400的其他变体能够被用于对压缩比特流420进行编码。例如,在没有对于某些块或帧的变换级404的情况下,基于非变换的编码器400能够直接量化残差信号。在另一个实施方式中,编码器400能够将量化级406和去量化级410组合成单个级。
图5是根据本公开的实施方式的解码器500的框图。解码器500能够在接收站106中实现,例如,通过提供存储在存储器204中的计算机软件程序。计算机软件程序能够包括机器指令,当机器指令由诸如CPU 202的处理器执行时,使得接收站106以本文所述的方式解码视频数据。解码器500也能够用被包括在例如发送站102或接收站106中的硬件来实现。类似于以上讨论的编码器400的重构路径,解码器500在一个示例中包括以下级以执行各种功能来从压缩比特流420产生输出视频流516:熵解码级502、去量化级504、逆变换级506、帧内/帧间预测级508、重构级510、环路滤波级512和去块滤波级514。解码器500的其他结构变化能够被用于解码压缩比特流420。
当压缩比特流420被呈现用于解码时,压缩比特流420内的数据元素能够被熵解码级502解码以产生量化变换系数的集合。去量化级504对量化的变换系数进行去量化(例如,通过将量化的变换系数乘以量化器值),以及逆变换级506使用选择的变换类型对去量化的变换系数进行逆变换以产生导数残差,所述导数残差能够与由编码器400中的逆变换级412创建的相同。使用从压缩比特流420解码的报头信息,解码器500能够使用帧内/帧间预测级508来创建与在编码器400中例如在帧内/帧间预测级402创建的相同的预测块。在重构级510,能够将预测块添加到导数残差以创建重构块。环路滤波级512能够被应用于重构块以减少块伪影。其他滤波能够被应用于重构块。在该例子中,去块滤波级514被应用于重构块以减少块失真,并且结果作为输出视频流516被输出。输出视频流516也能够被称为解码视频流,并且术语将在本文中被可交换地使用。
解码器500的其他变体能够被用于解码压缩比特流420。例如,解码器500能够在没有去块滤波级514的情况下产生输出视频流516。在解码器500的一些实施方式中,去块滤波级514在环路滤波级512之前被应用。另外地或可替选地,编码器400除了环路滤波级416之外还包括去块滤波级。
图6是表示根据本公开的实施方式的诸如图3的帧306的帧的一部分600的框图。如所示,帧的一部分600包括可以被称为超级块的矩阵或笛卡尔平面中的两行两列中的四个64×64块610。超级块能够具有更大或更小的尺寸。图6是关于大小为64×64的超级块来解释的,该描述很容易扩展到更大(例如,128×128)或更小的超级块大小。
在示例中,并且不失一般性,超级块能够是基本或最大代码化单元(CU)。每个超级块能够包括四个32×32块620。每个32×32块620能够包括四个16×16块630。每个16×16块630能够包括四个8×8块640。每个8×8块640能够包括四个4×4块650。每个4×4块650能够包括16个像素,像素能够在笛卡尔平面或矩阵中的每个相应块中以四行和四列表示。像素能够包括表示在帧中捕获的图像的信息,诸如亮度信息、颜色信息和位置信息。在示例中,诸如所示的16×16像素块的块能够包括:亮度块660,亮度块660能够包括亮度像素662;以及两个色度块670/680,诸如U或Cb色度块670,以及V或Cr色度块680。色度块670/680能够包括色度像素690。例如,亮度块660能够包括16×16个亮度像素662,并且每个色度块670/680能够包括8×8色度像素690,如所示。虽然块的一个布置被示出,但是能够使用任何布置。虽然图6示出了N×N块,但是在一些实施方式中,能够使用N×M块,其中N≠M。例如,能够使用32×64块、64×32块、16×32块、32×16块或任何其他大小的块。在一些实施方式中,能够使用N×2N块、2N×N块或其组合。
在一些实施方式中,视频代码化能够包括有序块级代码化。有序块级代码化能够包括以诸如光栅扫描顺序的顺序对帧的块进行代码化,其中,能够从帧或帧的一部分的左上角的块开始对块进行识别和处理,以及从左到右沿着行并且从顶部行到底行进行,依次识别每个块用于处理。例如,帧的顶部行和左侧列中的超级块能够是代码化的第一块,并且紧靠第一块右侧的超级块能够是代码化的第二块。距顶部的第二行能够是代码化的第二行,使得第二行左侧列中的超级块能够在第一行最右侧列中的超级块之后被代码化。
在示例中,对块进行代码化能够包括使用四叉树代码化,其能够包括按光栅扫描顺序用块代码化较小的块单元。例如,在图6所示帧部分的左下角中示出的64×64超级块能够使用四叉树代码化进行代码化,其中左上的32×32块能够被代码化,然后右上角的32×32块能够被代码化,然后左下的32×32块能够被代码化,并且然后右下的32×32块能够被代码化。每个32×32块能够使用四叉树代码化进行代码化,其中左上的16×16块能够被代码化,然后右上的16×16块能够被代码化,然后左下的16×16块能够被代码化,并且然后右下的16×16块能够被代码化。每个16×16块能够使用四叉树代码化进行代码化,其中左上的8×8块能够被代码化,然后右上的8×8块能够被代码化,然后左下的8×8块能够被代码化,并且然后右下的8×8块被代码化。每个8×8块能够使用四叉树代码化进行代码化,其中左上的4×4块能够被代码化,然后右上的4×4块能够被代码化,然后左下的4×4块能够被代码化,并且然后右下的4×4块能够被代码化。在一些实施方式中,对于16×16块能够省略8×8块,并且能够使用四叉树代码化对16×16块进行代码化,其中左上的4×4块能够被代码化,并且然后16×16块中的其他4×4块能够按光栅扫描顺序被代码化。
在示例中,视频代码化能够包括通过从对应的编码帧中省略原始帧中的一些信息来压缩原始帧或输入帧中包括的信息。例如,代码化能够包括减少光谱冗余、减少空间冗余、减少时间冗余或它们的组合。
在示例中,减少光谱冗余能够包括使用基于亮度分量(Y)和两个色度分量(U和V或者Cb和Cr)的颜色模型,该颜色模型能够被称为YUV或YCbCr颜色模型或颜色空间。使用YUV颜色模型能够包括使用相对大量的信息来表示帧的一部分的亮度分量,以及使用相对少量的信息来表示帧的一部分的每个对应色度分量。例如,帧的一部分能够由能包括16×16像素块的高分辨率亮度分量表示,也能够由两个较低分辨率的色度分量表示,每个色度分量将帧的一部分表示为8×8像素块。像素能够指示值(例如,从0到255范围内的值)并且能够使用例如八比特来被存储或发送。虽然参考YUV颜色模型对本公开进行了描述,但是任何颜色模型能够被使用。
减少空间冗余能够包括将块变换到如上所述的频域。例如,编码器的单元,诸如图4的熵编码级408,能够使用基于空间频率的变换系数值来执行DCT。
减少时间冗余能够包括使用帧之间的相似性来基于一个或多个参考帧使用相对少量的数据来编码帧,该一个或多个参考帧能够是视频流的先前编码、解码和重构的帧。例如,当前帧的块或像素能够类似于参考帧的空间对应块或像素。当前帧的块或像素能够类似于不同空间位置处的参考帧的块或像素。像这样,减少时间冗余能够包括生成指示空间差异的运动信息(例如,当前帧中块或像素的位置与参考帧中块或像素的对应位置之间的平移)。
减少时间冗余能够包括识别参考帧或参考帧的一部分中与当前帧的当前块或像素相对应的块或像素。例如,能够搜索能被存储在存储器中的参考帧或参考帧的一部分,以寻找最佳块或像素来用于对当前帧的当前块或像素进行编码。例如,该搜索可以识别参考帧中的块,对于所述块参考块和当前块之间的像素值差异被最小化,并且该搜索能够被称为运动搜索。能够限制被搜索的参考帧部分。例如,能被称为搜索区域的被搜索的参考帧部分能够包括参考帧的有限数量的行。在示例中,识别参考块能够包括计算搜索区域中的块的像素与当前块的像素之间的成本函数,诸如绝对差之和(SAD)。
如上所述,能够使用帧内预测来预测当前块。帧内预测模式使用被预测的当前块外围的像素。当前块外围的像素是当前块外部的像素。许多不同的帧内预测模式能够是可用的。图7是帧内预测模式的示例的图。
一些帧内预测模式对于使用至少一个外围像素生成的预测块内的所有像素使用单个值。例如,VP9编码解码器包括帧内预测模式,被称为真运动(TM_PRED)模式,其中预测块的所有值对于所有x和y都具有值预测像素(x,y)=(顶部相邻+左侧相邻–左上相邻)。另一个示例,DC帧内预测模式(DC_PRED)是使得预测块的每个像素被设置成值预测像素(x,y)=整个顶部行和左侧列的平均值。
可以被称为方向帧内预测模式的其他帧内预测模式使得每个能够具有对应的预测角度。
可以由编码器选择帧内预测模式作为率失真循环的一部分。简而言之,可以测试各种帧内预测模式以确定哪个类型的预测对于编码视频比特流中要发送的比特的给定速率或数量具有最低失真,所述要发送的比特包括比特流中包含的用于指示使用的预测类型的附加比特。
在示例编码解码器中,以下13个帧内预测模式能够是可用的:DC_PRED、V_PRED、H_PRED、D45_PRED、D135_PRED、D117_PRED、D153_PRED、D207_PRED、D63_PRED、SMOOTH_PRED、SMOOTH_V_PRED和SMOOTH_H_PRED以及PAETH_PRED。13个帧内预测模式中的一个能够被用于预测亮度块。
帧内预测模式710示出了V_PRED帧内预测模式,其通常被称为垂直帧内预测模式。在该模式中,第一列的预测块像素被设置为外围像素A的值;第二列的预测块像素被设置为像素B的值;第三列的预测块像素被设置为像素C的值;并且第四列中的预测块像素被设置为像素D的值。
帧内预测模式720示出了H_PRED帧内预测模式,其通常被称为水平帧内预测模式。在该模式下,第一行的预测块像素被设置为外围像素I的值;第二行的预测块像素被设置为像素J的值;第三行的预测块像素被设置为像素K的值;以及第四行的预测块像素被设置为像素L的值。
帧内预测模式730示出了D117_PRED帧内预测模式,这样称呼是因为形成对角线的外围像素将沿其传播以生成预测块的箭头的方向与水平成约117°角。也就是说,在D117_PRED中,预测角度为117°。帧内预测模式740示出了D63_PRED帧内预测模式,其对应于63°的预测角度。帧内预测模式750示出了D153_PRED帧内预测模式,其对应于153°的预测角度。帧内预测模式760示出了D135_PRED帧内预测模式,其对应于135°的预测角度。
预测模式D45_PRED和D207_PRED(未示出)分别对应于预测角度45°和207°。DC_PRED对应于其中所有预测块像素都被设置为单个值的预测模式,该单个值是外围像素A至M的组合。
在PAETH_PRED帧内预测模式中,像素的预测值如下被确定:1)计算基值作为一些外围像素的组合,以及2)使用一些外围像素中的最接近基值的一个作为预测像素。PAETH_PRED帧内预测模式使用例如像素712(在位置x=1,y=2)来被示出。在一些外围像素组合的示例中,基值能够被计算为base=B+K–M。即基值等于:与待预测像素在同一行的左侧外围像素的值+与该像素在同一列的上方外围像素的值–左上角的像素的值。
在SMOOTH_V帧内预测模式中,预测块的最底行的预测像素利用左侧列中最后一个像素的值(即,位置L处的像素的值)来估计。预测块的剩余像素通过垂直方向的二次插值计算。
在SMOOTH_H帧内预测模式中,预测块的最右侧列的预测像素利用顶部行中最后一个像素的值(即,位置D处的像素的值)来估计。预测块的剩余像素通过水平方向的二次插值计算。
在SMOOTH_PRED帧内预测模式中,预测块的最底行的预测像素利用左侧列中最后一个像素的值(即位置L处的像素的值)来估计,以及预测块最右侧列的预测像素利用顶部行中最后一个像素的值(即位置D处的像素值)来估计。预测块的剩余像素被计算为扩缩的加权和。例如,预测块的位置(i,j)处的预测像素的值能够被计算为像素Lj、R、Ti和B的值的扩缩的加权和。像素Lj是左侧列中并且与预测像素在同一行的像素。像素R是由SMOOTH_H提供的像素。像素Ti是上方行中的并且与预测像素在同一列的像素。像素B是由SMOOTH_V提供的像素。权重能够等效于水平和垂直方向的二次插值。
由编码器选择的帧内预测模式能够在比特流中发送到解码器。能够使用上下文模型对帧内预测模式进行熵代码化(由编码器编码和/或由解码器解码)。
一些编码解码器使用左侧和上方相邻块的帧内预测模式作为对当前块的帧内预测模式进行代码化的上下文。使用图7为例,左侧相邻块能够是包含像素I至L的块,并且上方相邻块能够是包含像素A至D的块。
图770示出了在VP9编码解码器中可用的帧内预测模式。VP9代码化支持一组10个帧内预测模式用于范围从4×4到32×32的块大小。这些帧内预测模式是DC_PRED、TM_PRED、H_PRED、V_PRED和6个倾斜方向预测模式:D45_PRED、D63_PRED、D117_PRED、D135_PRED、D153_PRED、D207_PRED,大约对应于角45、63、117、135、153和207度(相对于水平轴逆时针测量)。
图8是包括铁轨的图像部分800的示例。图像部分800包括第一铁轨802和第二铁轨804。在现实生活中,第一铁轨802和第二铁轨804是平行的。然而,在图像部分800中,第一铁轨802和第二铁轨804被示为在图像部分800外部的焦点803处汇聚。
为了说明和更清晰的可视化的目的,当前块806被叠加在图像部分800的一部分上。要注意的是,通常,当前块的每个位置(即,单体)对应于一个像素或表示一个像素。然而,为了说明和清楚的目的,当前块806的每个单体都清楚地包括显著多于一个像素。还要注意的是,尽管没有特别标记,但第一轨道802和第二轨道804中的每一个都包括内线和外线的对。每个线的对中的线也是平行的并且将在图像部分800中汇聚在另一个焦点处。
图像部分800还包括外围像素808。外围像素被示为在当前块806之上。然而,如上所述,外围像素能够是上方像素、左上像素、左侧像素或它们的组合。
单体810包括第一轨道802的一部分。该部分沿西南方向传播到当前块806中。然而,单体812中所示的第二轨道804的部分沿东南方向传播到当前块806中。
如上所述,单方向帧内预测模式不能从外围像素808充分预测当前块806。
图9是根据本公开实施方式的用于确定(例如,选择、计算、得出等)沿外围像素线(即,上方外围像素线)的位所以用于确定预测像素值的技术900的流程图的示例。用于得出位置的技术900仅是示例并且其他技术是可能的。对于大小为M×N的预测块(或等效地,当前块),技术900计算大小为M×N的块(例如,二维阵列)。二维阵列在以下被称为阵列POSITIONS。
技术900能够例如作为可以由诸如发送站102或接收站106的计算设备执行的软件程序来实现。该软件程序能够包括可以存储在诸如存储器204或次级存储器214的存储器的机器可读指令,并且当由诸如CPU 202的处理器执行时,可以使计算设备执行技术900。技术900能够全部或部分地在图4的编码器400的帧内/帧间预测级402中以及/或者在图5的解码器500的帧内/帧间预测级508中实现。技术900能够使用专门的硬件或固件来实现。可以使用多个处理器、存储器或两者。
给定当前块和上方外围像素(即,在整数外围像素位置处)的集合,技术900对于预测块的每个预测像素(即,或等效地,每个预测像素位置)确定沿上方外围像素线的从中得出预测像素的值的位置。如以下进一步描述,沿着上方外围像素线的位置能够是子像素位置。因此,外围像素线的该位置处的值能够从上方外围像素得出(例如使用插值)。
技术900能够被概括为,对于预测块的每一行,重新采样(例如,重复地查看、考虑等)上方外围像素的集合(例如,即外围像素的位所),而在每次重新采样时,根据帧内预测模式的一个或多个参数移位位所。
然后位置能够被用于生成(例如,计算等)当前块的预测块。当技术900由编码器实施时,预测块能够被用于确定残差块,所述残差块然后被编码在诸如图4的压缩比特流420的压缩比特流中。当技术900由解码器实现时,预测块能够通过例如将预测块添加到从诸如图5的压缩比特流420的压缩比特流解码的残差块来重构当前块。
外围像素线能够包括上方外围像素(例如,图7的像素A至D,或像素A至D和M)。图7的外围像素M能够被认为是上方像素的一部分,左侧像素的一部分,或者能够被单独引用。在示例中,上方外围像素能够包括附加像素(本文称为悬伸上方像素),诸如图7和图15的的外围像素E至H。注意的是,图7中没有示出悬伸左侧像素。
通过技术900计算的位所能够与包括外围像素的一维阵列相关。例如,假设可用于预测当前块的外围像素是图7的像素A至H。像素值A至H能够被存储在阵列periph_pixels中,诸如periph_pixels=[0,0,A,B,C,D,E,F,G,H]。以下提供对为什么periph_pixels阵列的前两个位所为0的解释。
在示例中,技术900可以计算与块外部的像素位置对应的负位所。负位所与块左侧的位置对应。在示例中,距离当前像素太远的像素值不被用作像素的预测算子(predictors);而更近的像素能够被用于预测。在负像素位置的情况下,如下文进一步描述,来自另一边界的像素(例如,左侧外围像素)可以被确定为更接近(例如,更好的预测算子)。
作为实施方式细节,periph_pixels能够通过在阵列periph_pixels中包括空位置来解释这样的情况。periph_pixels阵列显示为包括两(2)个空位置(empty_slots)。因此,如果技术900确定零(0)的位所(例如,calculated_position),则该位所与像素值A对应(例如periph_pixels[empty_slots+calculated_position]=periph_pixels[2+0]=A)。类似地,如果技术900计算出-2的位所,那么它与像素值periph_pixels[2+(-2)]=[0]=0对应。类似地,periph_pixels阵列能够包含训练空槽。
在示例中,技术900能够接收帧内预测模式的一个或多个参数作为输入,或者能够访问帧内预测模式的一个或多个参数。技术900能够接收当前块的大小和宽度(或等效地,预测块的大小和宽度)。技术900还能够接收参数中的一个或多个:水平偏移(h_off)、水平步长(h_st)、水平加速度(h_acc)、垂直偏移(v_off)、垂直步长(v_st)和垂直加速度(v_acc)。在示例中,没有接收参数能够等效于接收参数的零值。虽然参数在下面被描述为加法量,但在一些示例中,至少一些参数能够等效地是乘法值。
水平偏移(h_off)参数是用于每个单个垂直像素步长的偏移(即,位置偏移)。水平偏移(h_off)能够回答这个问题:对于预测块的新行(例如,row=k),沿着外围像素线,与前一行(例如,行=k-1)的第一像素的位所相比较(例如,相对于),从其中得出新行的第一像素的值的像素位所在哪里?水平偏移能够指示初始预测角度。通过初始预测角度是指对预测块的每一行的第一像素进行预测的角度。
水平步长(h_st)参数是能够被用于水平方向下一个像素的偏移。也就是说,对于预测块的行上的给定预测像素,水平步长(h_st)指示相对于相同行上的紧接在前的像素的位所沿外围像素线到下一个位所的距离。小于1(例如0.95、0.8等)的水平步长(h_st)能够在预测块中实现缩小。例如,使用小于1的水平步长(h_st),图8的铁轨将在预测块中彼此远离移动。类似地,使用大于1(例如,1.05、1.2等)的水平步长(h_st)能够在预测块中实现放大效果。
水平加速度(h_acc)参数是被添加到每个后续水平步长(h_st)的变化。水平加速度(h_acc)参数能够被用作移位来不断地将位所移动得越来越远,而不是沿着外围像素线以恒定的水平步长从一个位所步进到下一个位所。像这样,水平加速度能够实现类似于单应变换的变换。
垂直偏移(v_off)参数是将要被应用于每个后续行的水平偏移(h_off)的变化。也就是说,如果h_off被用于预测块的第一行,那么(h_off+v_off)被用于第二行,((h_off+v_off)+v_off)被用于第三行,以此类推。垂直步长(v_st)参数是将要被应用于预测块的每个后续行的水平步长(h_st)的变化。垂直加速度(v_acc)参数是将要被应用于预测块的每个后续行的水平加速度(h_acc)的变化。
注意的是,在至少一个方向上两者的加速度(即,水平加速度(h_acc)参数和/或垂直加速度(v_acc)参数)实现曲线预测。也就是说,加速度参数能够实现曲线预测。
在902处,技术900初始化变量。变量h_step_start能够被初始化为水平步长参数:h_step_start=h_st。变量h_offset和变量h_start的每个都能够被初始化为水平偏移:h_offset=h_off以及h_start=h_off。
在904处,技术900初始化外部循环变量i。技术900对预测块的每一行执行908至920。在906处,技术900确定是否存在预测块的更多行。如果存在更多行,则技术900进行到908;否则,技术900在922处结束。当技术900在922处结束时,预测位置的每个像素位置具有沿着外围像素线的相应位置,从该相应位置计算(例如,得出等)在POSITIONS二维阵列中每个像素位置的像素值。
在908处,技术900设置位所变量p为变量h_start(即p=h_start);以及设置变量h_step为变量h_step_start(即h_step=h_step_start)。
在910处,技术900初始化内部循环变量j。技术900对预测块的行i的每个像素执行914至918。在912处,技术900确定是否存在该行的更多像素位置(即,更多列)。如果存在更多列,则技术900进行到914;否则,技术900进行到920以重置(即,更新)用于预测块的下一行的变量,如果有的话。
在914处,技术900设置POSITIONS阵列的位置(i,j)为位所变量值p(即POSITIONS(i,j)=p)。在916处,技术900通过将h_step添加到位所变量p(即p=h_step+p)来将位所变量p前移到下一水平位所。在918处,在存在更多未处理的列的情况下,技术900为预测块的行i的下一列准备变量h_step。像这样,技术900将水平加速度(h_acc)添加到变量h_step(即h_step=h_acc+h_step)。技术900从918处返回到912处。
在920处,技术900准备(即,更新)技术900的变量以准备预测块的下一行,如果有的话。因此,对于下一行(即row=i+1),技术900更新h_start为h_start=h_offset+h_start;将垂直偏移(v_off)添加到h_offset(即h_offset=v_off+h_offset),将垂直步长(v_st)添加到h_step_start(即h_step_start=v_st+h_step_start),以及将垂直加速度(v_acc)添加到h_acc(即h_acc=v_acc+h_acc)。
图10是根据本公开的实施方式通过图9的技术计算的位所(即阵列POSITIONS)的示例1000。示例1000针对以下输入被生成:当前块大小8×8,水平偏移h_off=-0.2,水平步长h_st=1.05,水平加速度h_acc=0,垂直偏移v_off=0,垂直步长v_st=0.06,以及垂直加速度v_acc=0。示例1000示出了如上所述二维阵列POSITIONS的值。
示例1000对于预测块的每个位置(i,j)示出了外围像素线的应该从其得出位置(i,j)的预测值的位所,其中i=0,…,columns-1,j=0,…,rows–1。预测算子位置1002至1008示出了示例1000的位所值的示例。与预测块的位置(3,1)对应的预测算子位置1002是要从外围预测线的位所2.93得出它的预测值。与预测块的位置(6,4)对应的预测算子位置1004是要从外围预测线的位所6.74得出它的预测值。与预测块的位置(0,1)对应的预测算子位置1006是要从外围预测线的位所-0.4得出它的预测值。与预测块的位置(0,6)对应的预测算子位置1008是要从外围预测线的位所-1.4得出它的预测值。
图11是从图10的示例1000计算的预测块的示例1100。示例1100包括预测块1102,其被可视化为预测块1104。预测块1102(以及,等效地,预测块1104)是使用图10的示例1000和可以是顶部(即上方)的外围像素的外围预测像素1106的位所而被得出(例如,被生成、计算出等)。外围预测像素1106能够是例如图7的外围像素A至H。外围预测像素1108是外围预测像素1106的可视化。
在可视化中,像素值零(0)与黑色方块对应,而像素值(255)与白色方块对应。0到255之间的像素值与不同深浅的灰色方块对应。像这样,亮度块被示出为根据本公开的帧内预测模式的示例。然而,本公开不限于此。所公开的技术也适用于色度块或任何其他颜色分量块。通常,本文所公开的技术适用于将要被生成的任何预测块,其可以是任何大小M×N,其中M和N是正整数。
如上所述以及如图10的示例1000所示,通过图9的技术900计算的位所能够是外围像素线的非整数位所(即,子像素位所)。外围像素线在非整数位所的像素值将从诸如外围预测像素1106的可用的整数像素位所值(即,外围像素)而被得出(例如,计算出等)。
许多技术对于计算子像素位所(即,子像素位所处的像素值)能够是可用的。例如,能够使用多抽头(例如,4抽头、6抽头等)有限脉冲响应(FIR)滤波器。例如,能够使用周围像素的平均值。例如,能够使用双线性插值。例如,能够使用外围像素(例如,顶部行或左侧列)的4像素双三次插值。例如,能够使用卷积运算。卷积运算能够使用外围像素以外的像素。在示例中,可用使用大小为N×N的卷积核。因此,能够使用上方(左侧)相邻块的N行(列)。为了说明,能够使用具有权重(-0.1、0.6、0.6、-0.1)的4抽头滤波器或4×1卷积核。因此,在四个像素(pixel0、pixel1、pixel2、pixel3)的集合的pixel1和pixel2之间的位所处计算像素值能够被计算为clamp(-0.10*pixel0+0.6*pixel1+0.6*pixel2-0.10*pixel3,0,255),其中,clamp()运算将小于零的计算值设置为零并将大于255的计算值设置为255。
预测块1102示出了使用双线性插值。对于外围像素线的子像素位所,找到最接近的两个整数像素。预测算子值被计算为最接近的两个整数像素的加权和。根据子像素位所到两个整数像素位所的距离确定权重。
给定外围像素线的位所pos,pos处的像素值pix_val能够被计算为pix_val=left_weight×left_pixel+right_weight×right_pixel。left_pixel是位所pos的最接近的左侧相邻整数像素的像素值。right_pixel是位所pos的最接近的右侧相邻整数像素的像素值。
left_pixel的位所能够被计算为left_pos=floor(pos),其中floor()是将小于或等于pos的最大整数返回的函数。因此,floor(6.74)=6。位所6.74是用于图10的预测算子位置1004的位置。right_pixel的位所能够被计算为right_pos=ceiling(pos),其中ceiling()是将大于或等于pos的最小整数返回的函数。因此,ceiling(6.74)=7。
在示例中,right_weight能够被计算为right_weight=pos–left_pos并且left_weight能够被计算为left_weight=1–right_weight。因此,对于预测算子位置1004的位所6.74,right_weight=6.74–6=0.74,并且left_weight=1–0.74=0.26。预测块1102的像素值1112是从图10的预测算子位置1004得出的值。像这样,像素值1112被计算为((255×.26)+(0×0.74))=66。
类似地,预测算子值1110是从图10的预测算子位置1006(即-0.4)计算出的。因此left_pos和right_pos分别是-1和0。right_weight和left_weight分别是0.6和0.4。右侧相邻像素值是位置0处的外围预测像素1106的外围像素值。因此,右侧相邻像素值为具有0值的像素1114。左侧相邻像素不可用。因此,左侧相邻像素值是0。像这样,预测算子值1110被计算为((0×0.4)+(0×0.6))=0。
以上关于图10和11讨论了如何使用帧内预测模式的参数(即,参数值)。有任意数量的选择参数值的方法。
在示例中,编码器的模式选择过程能够测试所有可能的参数值以找到产生最小残差的参数值的最优组合。在示例中,最小残差能够是产生最佳率失真值的残差。在示例中,最小残差能够是产生最小残差误差的残差。最小残差误差能够是均方误差。最小残差误差能够是绝对差误差之和。能够使用任何其他合适的误差测量。除了帧内预测模式本身的指示之外,编码器还能够对编码比特流中的参数值的最优组合的参数值进行编码。解码器能够解码参数值的最优组合的参数值。在示例中,如本文所述,帧内预测模式本身的指示能够是指令解码器使用帧内预测参数来执行当前块的帧内预测的数字(例如,整数)。
测试每个参数的所有可能值可能是不切实际的解决方案。像这样,能够为每个参数选择有限数量的值并且测试有限数量的值的组合。
例如,水平偏移(h_off)参数能够从有限范围的值中选择。在示例中,值的有限范围能够是[-4,+4]。步长值能够被用于在有限范围内选择水平偏移(h_off)参数值进行测试。在示例中,步长能够是0.25(或一些其他值)。像这样,值-4、-3.75、-3.5、-3.25、…、3.75、4能够被测试。在示例中,能够与水平偏移参数类似地选择垂直偏移(v_off)参数。
关于水平步长(h_st)和垂直步长(v_st),能够选择相对接近1的值。任何其他值都能够导致预测块的缩放过快。因此,能够对于水平步长(h_st)和垂直步长(v_st)测试[0.9,1.1]范围内的值。然而,通常,水平步长(h_st)和垂直步长(v_st)每个都能够使用可以是0.25的步长值从[-4,4]的范围中被选择。选择的水平加速度(h_acc)和垂直加速度(v_acc)参数值能够接近0。在示例中,水平加速度(h_acc)和垂直加速度(v_acc)参数值每个都能够是0或1。更一般地,水平参数和对应的垂直参数能够具有值和/或值的范围。
在另一个示例中,编码器能够基于可能的最佳参数值集合来选择参数值。可能的最佳参数值集合在本文中也称为预测参数值。能够通过从其相邻像素预测外围像素来得出可能的最佳参数值集合。也就是说,在上方外围像素的情况下,外围像素构成先前重构块的最底行;并且在左侧外围像素的情况下,外围像素构成先前重构块的最右侧列。因此,外围像素的相邻行、列或两者(视情况而定)能够被用作外围像素的预测算子。由于外围像素的预测算子和外围像素本身是已知的,能够从它们得出参数值。在该情况下,编码器不需要对压缩比特流中可能的最佳参数值集合进行编码,因为解码器能够执行与编码器确切相似的过程来得出可能的最佳参数值集合。因此,编码器需要在比特流中编码的所有内容是帧内预测模式本身的指示。
在另一个示例中,微分参数值能够由编码器编码。例如,如上所述,编码器能够得出最优参数值,并且也如上所述,能够得出可能的最佳参数值集合(即,预测参数值)。然后,除了帧内预测模式的指示之外,编码器还对最佳参数值和可能的最佳参数值集合之间的相应差进行编码。也就是说,例如,关于水平偏移(h_off),编码器能够得出最佳水平偏移(opt_h_off)和可能的最佳水平偏移(predicated_h_offset)。编码器然后对差(opt_h_off–predicated_h_offset)进行编码。
图12是根据本公开的实施方式的用于当前块的帧内预测的技术1200的流程图。帧内预测模式使用当前块外围的像素。当前块外围的像素能够是与当前块相同的视频帧或图像中的先前预测的像素。当前块能够是亮度块、色度块或任何其他颜色分量块。当前块的大小可以是M×N,其中M和N是正整数。在示例中,M等于N。在示例中,M不等于N。例如,当前块的大小能够是4×4、4×8、8×4、8×8、16×16,或任何其他当前块大小。技术1200为当前块生成与当前块大小相同的预测块。技术1200能够在诸如图4的编码器400的编码器中实现。技术1200能够在诸如图5的解码器500的解码器中实现。
技术1200能够被实现为例如能由诸如发送站102或接收站106的计算设备执行的软件程序。软件程序能够包括能被存储在诸如存储器204或次级存储器214的存储器中的机器可读指令,并且机器可读指令能够由诸如CPU 202的处理器执行,以使计算设备执行技术1200。在至少一些实施方式中,技术1200能够全部或部分地通过图4的编码器400的帧内/帧间预测级402来执行。在其他实施方式中,技术1200能够全部或部分地通过图5的解码器500的帧内/帧间预测级508来执行。
技术1200能够使用专门的硬件或固件来实现。一些计算设备能够具有多个存储器、多个处理器或两者都有。技术1200的步骤或操作能够使用不同的处理器、存储器或两者来分布。以单数形式使用术语“处理器”或“存储器”包括具有一个处理器或一个存储器的计算设备以及能够被用于执行一些或所有所述步骤的具有多个处理器或多个存储器的设备。
在1202处,技术1200选择当前块的外围像素。外围像素被用于为当前块生成预测块。在示例中,外围像素能够是当前块上方的像素。在示例中,外围像素能够是当前块左侧的像素。在示例中,外围像素能够是当前块的上方和左侧像素的组合。当由解码器实现时,选择外围像素能够包括从压缩比特流中读取(例如,解码)指示了将要使用哪些外围像素的指示(例如,语法元素)。
对于预测块的每个位置(即,像素位置),技术1200执行1206至1208。因此,如果当前块的大小为M×N,则预测块能够包括M×N个像素位置。像这样,在1204处,技术1200确定是否还有预测块的更多像素位置尚未被执行1206至1208。如果存在更多像素位置,则技术1200进行到1206;否则,技术1200进行到1210。
在1206处,技术1200为预测块的像素位置选择外围像素的两个相应像素。在示例中,技术1200首先选择沿连续外围像素线的位所,沿该连续外围像素线外围像素是整数像素位置。在1208处,技术1200对于预测块的像素位置通过对两个相应像素进行插值来计算预测像素(即,像素值)。
在示例中,选择沿着连续外围像素线的位所能够如关于图9所描述的那样。因此,选择外围像素的两个相应像素能够包括选择外围像素的第一两个相应像素用于计算预测块的第一预测像素,以及选择外围像素的第二两个相应像素用于计算预测块的第二预测像素。第二预测像素能够是第一预测像素的水平相邻像素。能够根据帧内预测模式参数选择第一两个相应像素和第二两个相应像素。
如上所述,帧内预测模式参数能够包括水平偏移、水平步长或水平加速度中的至少两个。在示例中,帧内预测模式参数能够包括水平偏移、水平步长和水平加速度。如上所述,水平偏移能够指示初始预测角度;水平步长能够被用作相同行的后续的预测像素的后续的偏移;以及水平加速度能够指示被添加到每个后续的水平步长的水平偏移的变化。
在示例中,能够基于步长值从有限范围中选择水平偏移。在示例中,有限范围能够是-4到4。在示例中,步长值能够是0.25。在示例中,能够基于步长值从-4到4的范围中选择水平(垂直)步长。步长值能够是0.25或一些其他值。在示例中,水平(垂直)加速度能够是0。在另一个示例中,水平(垂直)加速度能够是1。
如上进一步所述,帧内预测模式参数还能够包括垂直偏移、垂直步长或垂直加速度中的至少两个。在示例中,帧内预测模式参数能够包括垂直偏移、垂直步长和垂直加速度。垂直偏移能够指示将要应用于预测块的每个后续行的水平偏移的第一变化。垂直步长能够指示将要应用于预测块的每个后续行的水平步长的第二变化。垂直加速度能够指示将要应用于预测块的每个后续行的水平加速度的第三变化。
在示例中,通过对两个相应像素进行插值来计算预测像素能够包括使用双线性插值来计算预测像素。
在1210处,技术1200对与当前块和预测块之间的差异对应的残差块进行代码化。当由编码器实现时,技术1200在压缩比特流中将残差块编码。当由解码器实现时,技术1200从压缩比特流中将残差块解码。能够将解码的残差块添加到预测块以重构当前块。
当由解码器实现时,技术1200还能够包括从压缩比特流对帧内预测模式参数进行解码。在另一个示例中,并且如上所述,帧内预测模式参数能够通过根据帧内预测模式参数从包括外围像素的先前重构的其他像素中预测外围像素来得出。
图13是根据本公开的实施方式的使用帧内预测为当前块生成预测块的技术1300的流程图。帧内预测模式使用当前块外围的像素,其能够如关于图12的技术1200所描述的。当前块能够如关于图12的技术1200所描述的。技术1300能够在诸如图4的编码器400的编码器中实现。技术1300能够在诸如图5的解码器500的解码器中实现。
技术1300能够例如作为能由诸如发送站102或接收站106的计算设备执行的软件程序来实现。软件程序能够包括能被存储在诸如存储器204或次级存储器214的存储器中的机器可读指令,并且机器可读指令能够由诸如CPU 202的处理器执行,以使计算设备执行技术1300。在至少一些实施方式中,技术1300能够全部或部分地通过图4的编码器400的帧内/帧间预测级402来执行。在其他实施方式中,技术1300能够全部或部分地通过图5的解码器500的帧内/帧间预测级508来执行。
技术1300能够使用专门的硬件或固件来实现。一些计算设备能够具有多个存储器、多个处理器或两者都有。技术1300的步骤或操作能够使用不同的处理器、存储器或两者来分布。以单数形式使用术语“处理器”或“存储器”包括具有一个处理器或一个存储器的计算设备,以及被用于执行一些或所有所述步骤的具有多个处理器或多个存储器的设备。
在1302处,技术1300确定用于生成当前块的预测块的外围像素。确定外围像素能够意味着选择使用哪个外围像素,诸如关于图12的1202所描述的。外围像素能够被认为是沿外围像素线(即外围像素的连续线)的整数像素位置。
在1304处,技术1300为预测块的每个像素确定外围像素线的相应子像素位置。确定相应的子像素位置能够如关于图9所描述的那样。如本文使用的外围像素线的子像素位置也包括整数像素位置。也就是说,例如,所确定的子像素位置能够是外围像素本身中的一个的位置。
在1306处,对于预测块的每个预测像素,技术1300将预测像素计算为与每个预测像素的相应子像素位置对应的外围像素的整数像素的插值。在示例中,插值能够是最接近的整数像素的插值,如上关于图11所描述的。在示例中,能够使用双线性插值。在另一个示例中,能够执行整数像素的滤波以获取预测块的预测像素。
在示例中,确定用于预测块的每个像素的外围像素的相应子像素位置能够包括,对于预测块的第一行的每个行像素,使用参数确定相应的子像素位置,所述参数包括水平偏移、水平步长或水平加速度中的至少两个。如上所述,水平偏移能够指示初始预测角度。如上所述,水平步长能够被用作相同行的后续预测像素的后续偏移。如上所述,水平加速度能够指示被添加到每个后续水平步长的水平偏移的变化。
在示例中,确定预测块的每个像素的外围像素的相应子像素位置能够包括确定预测块的第二行的每个像素的相应子像素位置,其中参数进一步包括垂直偏移、垂直步长或垂直加速度中的至少两个。如上所述,垂直偏移能够指示将要应用于预测块的每个后续行的水平偏移的第一变化。如上所述,垂直步长能够指示将要应用于预测块的每个后续行的水平步长的第二变化。如上所述,垂直加速度能够指示将要应用于预测块的每个后续行的水平加速度的第三变化。
在示例中,并且当由解码器实现时,技术1300能够包括从压缩比特流解码参数。在示例中,从压缩比特流中解码参数能够包括,如上所述,解码参数差;得出预测参数值;并且对于每个参数,将相应的参数差添加到相应的预测参数值。
如上所述,在实施例中,能够使用方向预测模式来生成初始预测块。然后能够对初始预测块应用翘曲(例如,翘曲函数、翘曲参数集合、参数等)以生成预测块。
在示例中,能够使用当前块和初始预测块来得出翘曲参数。能够使用任何数量的技术来得出翘曲参数。例如,随机抽样一致(RANSAC)方法能够被用于将模型(即翘曲模型、参数)拟合到当前块和初始预测块之间的匹配点。RANSAC是迭代算法,能够被用于估计两个块之间的翘曲参数(即参数)。在示例中,当前块和初始预测块之间的最佳匹配像素能够被用于得出翘曲参数。翘曲能够是单应翘曲、仿射翘曲、相似翘曲或一些其他翘曲。
单应翘曲能够使用八个参数来将当前块的一些像素投影到初始预测块的一些像素。单应翘曲不受两个空间坐标之间的线性变换的约束。像这样,定义单应翘曲的八个参数能够被用于将当前块的像素投影到初始预测块的四边形部分。因此,单应翘曲支持平移、旋转、扩缩、纵横比变化、剪切和其他非平行四边形翘曲。
仿射翘曲使用六个参数来将当前块的像素投影到初始预测块的一些像素。仿射翘曲是由六个参数定义的两个空间坐标之间的线性变换。像这样,定义仿射翘曲的六个参数能够被用于将当前块的像素投影到是初始预测块的一部分的平行四边形。因此,仿射翘曲支持平移、旋转、缩放、纵横比变化和剪切。
相似翘曲使用四个参数来将当前块的像素投影到初始预测块的像素。相似翘曲是由四个参数定义的两个空间的坐标之间的线性变换。例如,四个参数能够是沿x轴的平移、沿y轴的平移、旋转值和扩缩值。像这样,定义相似模型的四个参数能够被用于将当前块的像素投影到初始预测块的正方形。因此,相似翘曲支持利用旋转和缩放的正方形到正方形变换。
在示例中,除了方向帧内预测模式之外,还能够在压缩比特流中将翘曲的参数从编码器发送到解码器。解码器能够使用方向帧内预测模式来生成初始预测块。解码器然后能够使用所发送的参数的参数来解码当前块。
在另一个示例中,参数能够由解码器得出。例如,如上所述,解码器能够使用先前解码的像素来确定翘曲的参数。例如,如上所述,能够使用与外围像素相同块的像素来预测外围像素,从而确定翘曲参数。也就是说,由于外围像素是已知的,因此能够确定最佳翘曲参数以从外围像素的相邻像素来预测外围像素。
在另一个示例中,微分翘曲参数能够由编码器发送,如上所述。例如,预测的翘曲参数能够使用外围参数的相邻像素得出,并且如上所述得出最优翘曲参数。最优翘曲参数和预测翘曲参数之间的差异能够在压缩比特流中发送。
如上所述,至少关于图9至11是仅上方外围像素被使用的情况。例如,在其他外围像素(例如,左侧外围像素)不可用的情况下,仅上方外围像素能够被使用。例如,即使当左侧外围像素可用时,也是仅上方外围像素能够被使用。
使用左侧外围像素能够类似于使用上方外围像素。在示例中,在上方外围像素不可用的情况下,仅左侧外围像素能够被使用。在另一个示例中,即使当上方外围像素可用时,也是仅左侧外围像素能够被使用。
图18是根据本公开的实施方式的用于确定沿着左侧外围像素线的位所以确定预测像素值的技术1800的流程图的示例。对于大小为M×N的预测块(或等效地,当前块),技术1800计算大小为M×N的块(例如,二维阵列)。二维阵列在以下被称为阵列POSITIONS。
给定当前块和左侧外围像素集合(即,在整数外围像素位置处),技术1800对于预测块的每个预测像素(即,或等效地,每个预测像素位置)确定沿左侧外围像素线的从其得出预测像素的值的位置。如以下进一步描述,沿着左侧外围像素线的位置能够是子像素位置。因此,左侧外围像素线的该位置处的值能够从左侧外围像素得出(例如,使用插值)。
技术1800能够被概括为,对于预测块的每一列,重新采样(例如,重复地查看、考虑等)左侧外围像素的集合(例如,即,左侧外围像素的位所),而在每次重新采样时,根据帧内预测模式的一个或多个参数移位位所。然后能够使用位置来生成(例如,计算等)当前块的预测块。
技术1800的详细描述被省略,因为技术1800与技术900非常相似。在技术1800中,水平偏移(h_off)、水平步长(h_st)、水平加速度(h_acc)、垂直偏移(v_off)、垂直步长(v_st)和垂直加速度(v_acc)的作用(即,使用)与它们在技术900中的作用相反。也就是说,在过程900中无论在哪里使用的水平相关参数,在过程1800中都被替代地使用对应的垂直参数,反之亦然。因此,1802至1822能够分别类似于902至922。还应注意的是,虽然技术900的外部迭代(在906处)迭代预测块的行并且内部迭代(在912处)迭代预测块的列,但在技术1800中,外部迭代(在1906处)迭代预测块的列,内部迭代(在1812处)迭代预测块的行。
图19是根据本公开的实施方式的使用帧内预测为当前块生成预测块的技术1900的流程图。技术1900使用上方外围像素和左侧外围像素两者来生成预测块。当前块能够如关于图12的技术1200所描述的。技术1900能够在诸如图4的编码器400的编码器中实现。技术1900能够在诸如图5的解码器500的解码器中实现。
技术1900能够例如作为能由诸如发送站102或接收站106的计算设备执行的软件程序来实现。软件程序能够包括能存储在诸如存储器204或次级存储器214的存储器中的机器可读指令,并且机器可读指令能够由诸如CPU 202的处理器执行以使计算设备执行技术1900。在至少一些实施方式中,技术1900能够全部或部分地通过图4的编码器400的帧内/帧间预测级402来执行。在其他实施方式中,技术1900能够全部或部分通过图5的解码器500的帧内/帧间预测级508来执行。
技术1900能够使用专门的硬件或固件来实现。一些计算设备能够具有多个存储器、多个处理器或两者都有。技术1900的步骤或操作能够使用不同的处理器、存储器或两者来分布。以单数形式使用术语“处理器”或“存储器”包括具有一个处理器或一个存储器的计算设备,以及能够被用于执行一些或所有所述步骤的具有多个处理器或多个存储器的设备。
技术1900参考图20A和图20B来示出。图20A-20B利用以下输入来示出:8×8的当前块大小,水平偏移h_off=0.25,水平步长h_st=1,水平加速度h_acc=1,垂直偏移v_off=4,垂直步长v_st=1,以及垂直加速度v_acc=0。
在1902处,过程1900选择当前块的第一外围像素。第一外围像素沿着当前块的第一边缘。第一外围像素被选择为主要像素以产生预测块。在示例中,第一外围像素能够是上方外围像素。在示例中,第一外围像素能够是左侧外围像素。如以下进一步描述,主要像素是关于其沿着第一外围像素线的位所被计算的像素,如关于技术900(在第一外围像素是上方外围像素的情况下)或技术1800(在第一外围像素是左侧外围像素的情况下)所描述的。
当由编码器实施时,技术1900能够使用顶部外围像素作为第一外围像素执行一次,并且使用左侧外围像素作为第一外围像素执行第二次。编码器能够测试两者以确定哪个提供了对当前块的更好预测。在示例中,技术1900能够在诸如图4的压缩比特流420的压缩比特流中发送第一外围像素或第二外围像素中的哪一个用作用于生成预测块的主要像素的第一指示。也就是说,例如,当上方(左侧)外围像素被用作主要像素时,第一指示可以是比特值0(1)。第一指示的其他值是可能的。
因此,当由解码器实施时,技术1900能够通过从压缩比特流解码第一指示来选择第一外围像素。在另一个示例中,解码器能够通过根据本文描述的技术从其相邻的上方行(左侧列)预测上方行(左侧列)来得出第一外围像素是上方外围像素还是左侧外围像素。
对于预测块的每个位置(即,像素位置),技术1900执行1906至1910。因此,如果当前块的大小是M×N,则预测块能够包括M*N个像素位置。像这样,在1904处,技术1900确定是否存在预测块的尚未被执行1906至1910的更多像素位置。如果存在更多像素位置,则技术1900进行到1906;否则,技术1900进行到1910。
在1906处,技术1900确定沿第一连续线的第一截距,该第一连续线包括在相应整数位置处的第一外围像素。因此,在第一像素位所是上方外围像素的情况下,则第一截距是y轴截距;以及,在第一像素位所是左侧外围像素的情况下,则第一截距是x轴截距。
图20A示出了当上方外围像素用作第一外围像素主要像素时以上所述的二维阵列POSITIONS的值的位所2010。位所2010能够使用技术900来计算。因此,位所2010提供上方外围行内的位所。
示例图20B示出了当将左侧外围像素用作第一外围像素主要像素时二维阵列POSITIONS的值的位所2050。位所2050能够使用技术1800来计算。因此,位所2050提供左侧外围列内的位所。
在1908处,技术1900使用每个预测像素的位置和第一截距来确定沿着包括第二外围像素的第二连续线的第二截距。第二外围像素沿着垂直于第一边缘的当前块的第二边缘。
在第一预测像素是上方预测像素的情况下,则第二预测像素能够是左侧预测像素。在第一预测像素是左侧预测像素的情况下,则第二预测像素能够是上方预测像素。第一和第二预测像素的其他组合也是可能的。例如,右上方外围像素、右下方外围像素或左下方外围像素的组合是可能的。
在示例中,能够通过连接预测像素位置和第一截距之间的线并将该线向第二连续线延伸来计算第二截距。
以下进一步描述的图16现在被用作说明。如果当前预测像素是预测像素1604并且第一截距是y截距1648,则能够通过连接预测像素1604和y截距1648并将线向x轴延伸来获取第二截距。因此,第二截距是x截距1646。类似地,如果当前预测像素是预测像素1604,并且第一截距是x截距1646,则能够通过连接预测像素1604和x截距1646并将线向y轴延伸来获取第二截距。因此,第二截距是y截距1648。
图20A的块2012示出了当第一外围像素是上方外围像素时的x截距。图20B的块2052示出了当第一外围像素是左侧外围像素时的y截距。能够使用等式(1)的公式中的一个来计算截距。
为了说明,考虑在预测的位置(1,3)处的预测像素2010A。因此,考虑到顶部和左侧的预测像素,预测像素2010A位于具有原点的坐标系的位置(2,4),在该原点处顶部和左侧外围像素相交。第一截距(即y截距)在7.5处。因此,能够由两个点(2,4)和(0,7.5)来形成线。因此,如x截距值2012A所示,x截距能够被计算为(-7.5/((7.5–4)/(0–2)))=4.29。
作为另一个示例,在预测块的位置(1,1)处的预测像素2050A在包括顶部和左侧外围像素的坐标系的位所(2,2)处。第一截距(即x截距)在11处。因此,可以由两个点(2,2)和(11,0)形成线。因此,如y截距值2052A所示,y截距能够被计算为(-11*(0–2)/(11–2))=2.44。
在1910处,技术1900使用第一截距和第二截距中的至少一个来计算每个预测像素的值。
在示例中,能够将预测像素的值计算为第一截距和第二截距的加权和。更特别地,能够将预测像素的值计算为第一截距处的第一像素值和第二截距处的第二像素值的加权和。权重能够与从预测像素的位置到第一截距和第二截距中的每一个的距离成反比。像这样,预测像素的值能够作为第一像素值和第二像素值的双线性插值来获取。众所周知,两点(a,b)和(c,d)之间的距离可以计算为
Figure BDA0003754874620000401
在另一个示例中,能够基于最近距离来计算预测像素的值而不是加权和。也就是说,x截距和y截距中距离预测像素较近的(基于计算的距离)能够被用于计算预测像素的值。
图20A的距离2014和2016示出了在第一外围像素是左侧外围像素的情况下,从每个预测像素位置到它们相应的y截距和x截距的距离。例如,对于位置(2,4)处的预测像素(即,预测块的位置(1,3)处的预测像素2010A)具有7.5的y截距(即,点(0,7.5)),距离2014A是
Figure BDA0003754874620000411
并且到x截距(4.29,0)的距离2016A由
Figure BDA0003754874620000412
给出。类似地,图20B的距离2054和2056示出了在第一外围像素是左侧外围像素的情况下,从每个预测像素位置到它们相应的y截距和x截距的距离。
因此,对于位置(1,4)处的预测像素,在使用加权和的情况下,x截距和y截距的权重分别为(4.61/(4.61+4.03))=0.53,以及(1–0.53)=0.47。如上所述能够计算x截距和y截距中的每一个的像素值(例如,作为两个最接近的整数像素值的插值)。
在使用最近距离的情况下,能够仅使用y截距处的像素计算预测块位置(1,4)处的预测像素值,因为4.03(即距离2014A)小于4.61(即距离2016A)。
如以下关于图14所述,在一些情况下,x截距或y截距可能不会退出(例如,是负值)。也如关于图14所描述的,在这样的情况下,只能基于可用的截距值来计算预测值。
在编码器中,技术1900能够选择最近距离、加权和或一些其他函数中的一个来生成预测块。在示例中,技术1900能够为每个可能的函数生成相应的预测块并且选择产生最优预测的预测块中的一个。像这样,技术1900能够在压缩比特流中编码所选函数的第二指示,以组合第一外围像素和第二外围像素来获取预测块。如所述,该函数能够是加权和、最近距离或一些其他函数。
当由解码器实施时,技术1900在压缩比特流中接收用于组合第一外围像素和第二外围像素以获取预测块的函数的第二指示。解码器用于生成预测块。
图21示出了当上方外围像素用作主要外围像素时的图19的技术的示例2100。使用左侧外围块作为主要外围像素生成的示例预测块没有被示出。
示例2100示出了能够使用外围像素生成的不同预测块。示例2100的预测块是使用上方外围像素2104(使用上方像素2104可视化)、左侧外围像素2106(使用左侧像素2108可视化)或它们的组合生成的。如上所述,左上外围像素2110能够是坐标系的原点。
预测块2120(可视化为预测块2122)示出了仅使用主要外围像素(即,上方外围像素)。因此,即使左侧外围像素可用,预测块2120也如关于图10和图11所描述的那样生成。
预测块2130(可视化为预测块2132)示出了仅使用非主要外围像素(即,左侧外围像素)。因此,预测块2130能够通过使用主要外围像素(即,上方外围像素)来获取上方行内的位所来生成,如关于图20A的位所2010所描述的。获取x截距,如关于图20A的块2012所描述的;以及以与关于图11的预测块1102所描述的类似方式使用x截距来计算预测像素值。
预测块2140(可视化为预测块2142)示出了使用加权和生成的预测块,如上方关于图19所描述的。预测块2150(可视化为预测块2152)示出了使用最近距离生成的预测块,如上方关于图19所描述的。
如上所述,根据本公开的帧内预测模式能够关于焦点来定义。焦点能够定义为预测的所有点都从该点发散。也就是说,能够认为预测块的每个点都与焦点相连。类似地,焦点能够被认为是透视图像的平行线相交的距离中的一个点。
图14是根据本公开的实施方式的用于使用帧内预测模式对当前块进行代码化的技术1400的流程图。当前块使用焦点进行代码化。帧内预测模式使用当前块外围的像素。当前块能够如关于图12的技术1200所描述的。技术1400能够在诸如图4的编码器400的编码器中实现。技术1400能够在诸如图5的解码器500的解码器中实现。
技术1400能够例如作为能由诸如发送站102或接收站106的计算设备执行的软件程序来实现。软件程序能够包括能存储在诸如存储器204或次级存储器214的存储器中的机器可读指令,机器可读指令能够由诸如CPU 202的处理器执行,以使计算设备执行技术1400。在至少一些实施方式中,执行技术1400能够全部或部分地通过图4的编码器400的帧内/帧间预测级402来执行。在其他实施方式中,技术1400能够全部或部分地通过图5的解码器500的帧内/帧间预测级508来执行。
技术1400能够使用专门的硬件或固件来实现。一些计算设备能够具有多个存储器、多个处理器或两者都有。技术1400的步骤或操作能够使用不同的处理器、存储器或两者来分布。以单数形式使用术语“处理器”或“存储器”包括具有一个处理器或一个存储器的计算设备以及能够被用于执行一些或所有所述步骤的具有多个处理器或多个存储器的设备.
技术1400能够参考图15和图16来最好地理解。
图15是示出根据本公开的实施方式的焦点的示例1500。示例1500示出了将要被预测的当前块1502。也就是说,将为当前块1502生成预测块。当前块1502具有宽度1504和高度1506。像这样,当前块1502的大小为W×H。在示例1500中,当前块显示为8×4。然而,本公开不限于此。当前块能够具有任何大小。为了便于说明,像素位置在示例1500中显示为正方形。像素的具体值能够更正确地被认为是位于正方形中间(即中心)的值。
将使用外围像素来预测当前块1502。外围像素能够是上方外围像素1508或者能够包括上方外围像素1508。外围像素能够是左侧外围像素1512或者能够包括左侧外围像素1512。上方外围像素1508能够包括等于宽度1504(W)的若干像素。左侧外围像素1512能够包括等于高度1506(H)的若干像素。为了方便或参考,左上外围像素1509能够被认为是左侧外围像素1512的一部分、上方外围像素1508的一部分、或左侧外围像素1512和上方外围像素1508两者的一部分。
上方外围像素1508能够包括悬伸上方外围像素1510。悬伸上方外围像素1508的数量表示为W0。在示例1500中,W0显示为等于8个像素。然而,本公开不限于此,并且悬伸上方外围像素能够包括任何数量的像素。
左侧外围像素1512能够包括悬伸左侧外围像素1514。悬伸左侧外围像素1514的数量表示为H0。在示例1500中,H0显示为等于2个像素。然而,本公开不限于此,并且悬伸左侧外围像素1514能够包括任何数量的像素。
虽然左侧外围像素1512是离散像素,但左侧外围像素1512能够被认为是连续外围像素线的整数位置处的像素值。因此,左侧外围像素1512(例如,第一外围像素)形成构成x轴1530的第一外围像素线。虽然上方外围像素1508是离散像素,但上方外围像素1508能够被认为是连续外围像素线的整数位置处的像素值。因此,上方外围像素1508(例如,第二外围像素)形成构成y轴1532的第二外围像素线。
示出了当前块1502的三个说明性像素:位于当前块1502右上角的像素1518、位于当前块1502左下角的像素1522和像素1526。像素1518、1522、1526中的每一个能够被认为具具有坐标(i,j),其中中心能够位于当前块的左上角。因此,像素1518位于坐标(7,0),像素1522位于坐标(0,3),以及像素1526位于坐标(5,3)。
焦点1516被示为在外部并且与当前块相距一距离。焦点1516在以x轴1530和y轴1532之间的交叉点为中心的坐标系中的坐标(a,b)处。
如上所述,当前块1502的每个像素都从焦点1516发散。因此,线1520连接像素1518和焦点1516,线1524连接像素1522和焦点1516,以及线1528连接像素1526和焦点1516。
线1520的x截距x0(即线1520与x轴1530相交处)是点1534,以及线1520的y截距y0(即线1520与y轴1532相交处)是点1535。线1524的x截距x0(即线1524与x轴1530相交处)是点1536,以及线1524的y截距y0(即线1524与y轴1532相交处)是点1537。线1528的x截距x0(即线1528与x轴1530相交处)是点1538,线1528的y截距y0(即线1528与y轴1532相交处)是点1539。
点1534具有负值(即,是负x截距)。点1536和1538具有正值。点1535具有正值(即,是正y截距)。点1537和1539是负值。
众所周知,给定坐标为(a,b)和(i,j)的直线的两个点,能够使用等式(1)计算x和y截距
Figure BDA0003754874620000451
图16是示出根据本公开的实施方式的x截距和y截距的示例。图16的示例示出了在给定焦点的不同位所的情况下在当前块1612的位置(i,j)处的预测像素1604(或等效地,当前像素)的正的和负的x截距和y截距。
示例1600示出了焦点1602和穿过(例如,连接)预测像素1604到焦点1602的线1606。x截距1608是负值。y截距1610是正值。示例1620示出了焦点1622和穿过(例如,连接)预测像素1604到焦点1622的线1624。x截距1626是正值。y截距1628是负值。示例1640示出了焦点1642和穿过(例如,连接)预测像素1604到焦点1642的线1644。x截距1646是正值。y截距1648是正值。
再次回到图14。在1402处,技术1400获取焦点。如关于图15所描述的,焦点在坐标系中具有坐标(a,b)。
当由解码器实现时,获取焦点能够包括从压缩比特流解码帧内预测模式。压缩比特流能够是图5的压缩比特流420。帧内预测模式能够指示焦点。
在示例中,可用帧内预测模式的每个帧内预测模式能够与索引(例如,值)相关联。从压缩比特流中解码索引指令解码器根据帧内预测模式(即帧内预测模式的语义)来执行当前块的帧内预测。在示例中,帧内预测模式能够指示焦点的坐标。例如,帧内预测模式值45可以指示焦点位于坐标(-1000,-1000),帧内预测模式值46可以指示焦点位于坐标(-1000,-850)等。因此,例如,如果64个焦点是可能的,则64个帧内预测模式是可能的,每个帧内预测模式指示焦点的位置。在示例中,数百个焦点(以及等效地,帧内预测模式)可用。虽然本文以笛卡尔坐标给出焦点的位置,但焦点坐标能够以极坐标给出。极坐标的角度能够是关于x轴的,诸如图15的x轴1530。
在另一个示例中,获取焦点能够包括从压缩比特流中解码焦点的坐标。例如,压缩比特流能够包括指示使用后跟焦点坐标的焦点的帧内预测的帧内预测模式。
当由编码器实现时,获取焦点能够包括从多个候选焦点中选择焦点。也就是说,编码器选择用于编码当前块的最优焦点。最优焦点能够是产生当前块的最优编码的焦点。在示例中,能够将多个候选焦点划分为候选焦点组。每个候选焦点组能够被布置在相应圆的圆周上。在示例中,每个候选焦点组能够包括16个候选焦点。
图17示出了根据本公开的实施方式的焦点组的示例1700。如上所述,可能有数百个焦点候选,它们能够位于当前块外部的空间中的任何位置。焦点候选是当前块外部的空间中所有可能的焦点的子集。当前块外部的空间能够以诸如图15的左上外围像素1509的左上外围像素为中心(即,具有原点)。空间的中心能够是任何其他点。在示例中,中心能够是当前块的中心点。
为了限制搜索空间,仅所有可能焦点的子集能够被认为是候选焦点。能够有很多方法将搜索空间缩小为候选焦点。在示例中,候选焦点能够被分组为组。每个候选焦点组能够被布置在圆的圆周上。在示例中,能够考虑三个圆。这三个圆能够是框架1702、框架1704和框架1706。焦点被示出为每个框架上的黑色圆(诸如焦点1708至1712)。然而,任意数量的圆能够是可用的。每个圆(或框架)大致与将预测像素连接到圆的圆周上的焦点的线的斜率(例如,汇聚速率)对应。注意,示例1700仅是说明并且未按比例绘制。
框架1702能够与远处的焦点对应。像这样,给定框架1702上的焦点,从每个预测像素位置到焦点的线的斜率能够大致相同。框架1702能够具有在1000像素范围内的半径。焦点越远,使用远处焦点的帧内预测就越类似于(例如,近似于)方向帧内预测。
框架1706能够与附近的焦点对应。像这样,给定框架1702上的焦点,从焦点到每个预测像素位置的线能够看起来散开。因此,线的斜率能够是非常不同的。框架1706能够具有在数十个像素范围内的半径。例如,半径能够是20、30或一些其他这样数量的像素。
框架1704能够与具有中等尺寸半径的圆对应。框架1704的半径能够在数百个像素的范围内。
如上面没有提到的,虽然圆(框架)能够具有不切实际数量的焦点,但仅将焦点的采样用作候选焦点。每个组(即在每个框架上)的候选焦点能够相等间隔。例如,假设每个组中包括N个(例如,8、16等)个候选焦点,则N个焦点能够分开360/N(例如,45、22.5等)度。
在示例中,在编码器中在1402处获取焦点能够包括测试每个候选焦点以识别最佳焦点。在另一个示例中,能够通过使用最外面的框架的每个焦点执行帧内预测来识别最外面的框架(框架1702)的最外最优焦点。然后能够尝试与最外最优焦点对应(例如,在相同的角度)的焦点以确定它们中的任何一个是否产生更优的预测块。也能够使用其他启发式方法。例如,能够使用二进制搜索。
回到图14。在1404处,技术1400能够使用第一外围像素和第二外围像素生成预测块。第一外围像素能够是左侧外围像素,诸如左侧外围像素1512(包括左上外围像素1509)。第二外围像素能够是上方外围像素1508。
如上所述,第一外围像素形成构成x轴的第一外围像素线,诸如图15的x轴1530;第二外围像素形成构成y轴的第二外围像素线,例如图15的y轴1532;以及第一外围像素线与第二外围像素线形成具有原点的坐标系。生成预测块能够包括对预测块的每个位置(即,每个像素)执行1404_4至1404_6。预测块的每个像素位于位置(i,j)。如果块大小为M×N,则执行M*N次1404_4至1404_6。
在1404_2处,技术1400确定是否存在像素值尚未被确定(例如,计算)的任何更多预测块位置。如果存在更多像素位置,则技术1400进行到1404_4;否则,技术1400进行到1406。
在1404_4处,技术1400能够确定(例如,计算、识别等)在(i,j)处的预测像素的x截距或y截距中的至少一个。
x截距是第一点(例如,x截距1608、x截距1626、x截距1646),在该第一点处,由以预测块的每个位置为中心的点(例如,预测像素1604)和焦点(例如,焦点1602、焦点1622、焦点1642)形成的线(例如,线1606、线1624、线1644)交叉第一外围像素线(例如,x轴)。
y截距是第二点(例如,y截距1609、y截距1627、y截距1647),在该第二点处,由以预测块的每个位置为中心的点(例如,预测像素1604)和焦点(例如,焦点1602、焦点1622、焦点1642)形成的线(例如,线1606、线1624、线1644)交叉第二外围像素线(例如,y轴)。
能够使用等式(1)计算x和/或y截距。然而,在一些情况下,穿过预测像素和焦点的线可能不会截断轴中的一个。例如,几乎平行于x轴的线可能不被认为截断x轴;以及几乎平行于y轴的线可能不被认为截断y轴。当b=j+ε时,线可能不被认为截断x轴;以及当a=i+ε时,线可能不被认为截断y轴,其中ε是接近零的小阈值。像这样,x截距能够被识别为i,并且y截距能够被识别为j,而不必使用等式(1)。
在1404_6处,技术1400能够使用x截距或y截距中的至少一个来确定预测块的每个位置(即,(i,j))的预测像素值。从1404_6处,技术1400返回到1404_2。
在示例中,确定预测像素值能够包括,在x截距或y截距中的至少一个中的一个是负值的情况下,使用x截距或y截距中的至少一个中的另一个来确定每个位置的预测像素值。例如,关于图16的示例1600,由于x截距1608是负值,预测块的位置(i,j)的预测像素值仅使用是正值的y截距1610来计算。例如,关于图16的示例1620,由于y截距1628是负值,预测块的位置(i,j)的预测像素值仅使用是正值的x截距1626来计算。
在示例中,确定预测像素值能够包括,在x截距是正的且y截距是正的的情况下,将每个位置的预测像素值确定为x截距处的第一像素值和y截距处的第二像素值的加权组合。
在示例中,确定预测像素值能够包括,在i等于a(即i非常接近a)的情况下,将预测块的每个位置处的像素值设置为第一外围像素中位于第一外围像素线的位所i处的第一外围像素的值。也就是说,如果i≈a,则设置p(i,j)=L[i]。也就是说,如果线几乎平行于y轴,则将预测像素值p(i,j)设置为水平对应的左侧外围像素值L[i]。
类似地,在示例中,确定预测像素值能够包括,在j等于b(即j非常接近b)的情况下,将预测块的每个位置处的像素值设置为第二外围像素中位于第二外围像素线的位所j处的第二外围像素的值。也就是说,如果j≈b,则设置p(i,j)=T[i]。也就是说,如果线几乎平行于x轴,则将预测像素值p(i,j)设置为垂直对应的上方(即顶部)外围像素值T[j]。
在示例中,确定预测像素值能够包括,在x截距是零且y截距是零的情况下,将预测块的每个位置处的像素值设置为位于第一外围像素线与第二外围像素线的交点的像素值。也就是说,如果x截距和y截距是零,则能够将预测像素值设置为左上外围像素值。
表I的伪代码示出了使用(a,b)处的焦点在预测块的位置(i,j)处设置预测像素值p(i,j)的示例,其中i=0,...,width-1且j=0,…,height-1。
如上所述,对于给定像素(i,j),绘制连接(a,b)处的焦点和(i,j)的线。计算x截距和y截距。依赖于这些截距,预测像素值p(i,j)是通过从顶部或左侧的边界像素插值或外插截距值来获取的。
特别地,使L[k]表示正整数位置k的左侧边界像素(例如,图15的左侧外围像素1512加上左上外围像素1509)的阵列,其中k=0,1,…,H+H0;并且T[k]表示正整数位置k的顶部边界像素阵列(例如,上面的外围像素1508加上图15的左上外围像素1509),其中k=0,1,…,W+W0。注意T[0]=L[0]。还使fL(z)和fT(z)表示通过合适的插值(即插值函数)从边界像素L[k]、T[k]获取的高精度(实值)点z处的插值函数。注意的是,在整数位置,对于z=k=0,1,...,H+H0,fL(z)=L[k],并且对于z=k=0,1,...,W+W0,fT(z)=T[k]。
Figure BDA0003754874620000511
在表I的行1,如果焦点和(i,j)处的预测像素在相同水平线上,则在第2行,将预测像素p(i,j)设置为位于相同水平线上的左侧外围像素的值L[i]。更特别的是,焦点和预测像素可能不完全水平对齐。因此,(i==a)能够意味着连接焦点和预测像素的线穿过以L[i]为中心的正方形。
在第3行,如果焦点和预测像素在相同垂直线上,则在第4行,将预测像素p(i,j)设置为位于相同垂直线上的上方外围像素的值T[j]。更特别的是,焦点和预测像素可能不完全垂直对齐。因此,(j==b)能够意味着连接焦点和预测像素的线穿过以T[j]为中心的正方形。
在第6至7行,根据等式(1)计算x截距(x0)和y截距(y0)。在第8行,如果x截距(x0)和y截距(y0)在原点,则在第9行,预测像素p(i,j)被设置为左上外围像素L[0]。更特别的是,x截距(x0)和/或y截距(y0)可能不完全为零。因此,x0==0&&y0==0能够意味着x截距和y截距在以原点为中心的正方形(即像素)内。
在第10行,如果x截距(x0)是正的但y截距(y0)是负的,则在第11行,预测像素仅从x截距(x0)使用插值函数fL得出。在第12行,如果x截距(x0)是负的且y截距(y0)是正的,则在第13行,预测像素(pi,j)仅从y截距(y0)使用插值函数fT得出。
在第14行,如果x截距(x0)和y截距(y0)都是正值,则预测像素p(i,j)被计算为x截距(x0)的插值(即fL(x0))和y截距(y0)的插值(即fT(y0))的加权组合。哪个权重更大依赖于x截距(x0)和y截距(y0)中哪个距离预测像素p(i,j)更远。如果x截距(x0)更远(即第15行),则在第16行,y截距(y0)的权重更大。另一方面,如果y截距(y0)更远(即第17行),则在第18行,x截距(x0)权重更大。行20至21是出于完整性目的,并且旨在涵盖x截距(x0)和y截距(y0)两者是负数的情况,该情况是不可能发生的情况。
在一些情况下,顶部外围像素或左侧外围像素中的至少一些可能不可用。例如,当前块能够是位于图像顶部边缘或图像左侧边缘的块。在这样的情况下,不可用的外围像素能够被认为具有零值。
插值函数fL和fT能够是任何插值函数。插值函数能够是相同的插值函数或不同的插值函数。插值函数能够如以上关于图9所描述的那样。例如,插值函数能够是有限脉冲响应(FIR)滤波器。例如,如上所述,插值滤波器能够是双线性插值。也就是说,给定x截距(或y截距)值,能够确定最接近的整数像素,并且能够在双线性插值中使用最接近的整数像素的加权和。如本文所使用,插值包括插值和外插两者。
回到图14,在1406处,技术1400对与当前块和预测块之间的差对应的残差块进行代码化。当由编码器实施时,技术1400将残差块计算为当前块与预测块之间的差,并将残差块编码在压缩比特流中。当由解码器实现时,技术1400通过从压缩比特流中解码残差块来对残差块进行编码。然后解码器能够将残差块添加到预测块以重构当前块。
所公开的实施方式的另一方面是用于编码当前块的技术。该技术包括使用外围像素获取当前块的预测像素的预测块。每个预测像素位于预测块内的相应位置(i,j)。获取预测块能够包括获取焦点,该焦点在坐标系中具有坐标(a,b);以及,对于预测块的每个位置,获取指示相应预测角度的线,并且使用该线确定每个位置的像素值。如上所述,该线将焦点连接到每个位置。如关于图15至图17所描述的,焦点能够在当前块外面,并且焦点可能是但可能不是外围像素中的一个。如上所述,预测块的每个预测像素能够具有与预测角度的每个其他预测像素的预测角度不同的预测角度。虽然依赖于焦点的位置,多于一个的预测像素能够具有相同的预测角度,但是根据本公开的实施方式的帧内预测模式是使得并非所有的预测像素都能够具有相同的预测角度。
编码当前块能够包括在压缩比特流中编码指示焦点的帧内预测模式。如上所述,与帧内预测模式相关联的值能够指示焦点的位置。
如上所述,外围像素能够包括左侧外围像素和顶部外围像素。使用线确定每个位置的像素值能够包括:确定线的x截距;确定线的y截距;以及使用x截距和y截距确定像素值。x截距是第一点,在该第一点处,线与包括当前块的左侧外围像素的左侧轴相交。y截距是第二点,在该第二点处,线与包括当前块的顶部外围像素的顶部轴相交。
获取焦点,如上文所述和关于图17所述,能够包括从多个候选焦点中选择焦点。多个候选焦点能够被划分为候选焦点组。每个候选焦点组能够被布置在相应圆的圆周上。
所公开的实施方式的另一方面是用于解码当前块的技术。该技术包括:从压缩比特流中解码焦点;获取当前块的预测像素的预测块;以及使用预测块重构当前块。获取预测块包括:对于预测块的每个位置,获取表示相应预测角度的线,其中,该线将焦点连接到每个位置;以及使用该线确定每个位置的像素值。
使用该线确定每个位置的像素值能够包括:确定线的x截距;确定线的y截距;以及使用x截距和y截距确定像素值。x截距是第一点,在该第一点处,线与包括当前块的左侧外围像素的左侧轴相交。y截距是第二点,在该第二点处,线与包括当前块的顶部外围像素的顶部轴相交。
使用x截距和y截距确定像素值能够包括将像素值确定为x截距处的第一像素值和y截距处的第二像素值的加权组合。使用x截距和y截距确定像素值能够包括,在x截距或y截距中的一个是负值的情况下,使用x截距或y截距中的另一个来确定像素值。
从压缩比特流解码焦点能够包括从压缩比特流解码指示焦点的帧内预测模式。
为了解释的简单,技术900、1200、1300、1400、1800和1900中的每个都被描绘和描述为一系列块、步骤或操作。然而,根据本公开的块、步骤或操作能够以各种顺序和/或同时发生。此外,可以使用本文未呈现和描述的其他步骤或操作。此外,实现根据本公开主题的技术可能不需要所有所示的步骤或操作。
上述编码和解码的方面示出了一些编码和解码技术。然而,应当理解,编码和解码,如权利要求中使用的那些术语,可以表示压缩、解压缩、变换或任何其他数据处理或变化。
词语“示例”或“实施方式”在本文中用于表示充当示例、实例或说明。本文描述为“示例”或“实施方式”的任何方面或设计不一定被解释为优选或优先于其他方面或设计。而是,使用“示例”或“实施方式”这些词旨在以具体的方式呈现概念。如在本申请中使用的,术语“或”旨在表示包含性的“或”而不是排他性的“或”。也就是说,除非另有指定,或从上下文中清楚指明,否则“X包括A或B”旨在表示任何自然包含性排列。也就是说,如果X包括A;X包括B;或X包括A和B两者,则前述实例任何一个都满足“X包括A或B”。此外,除非另有指定或从上下文中清楚指明是指向单数形式,本申请和所附权利要求中使用的冠词“一”和“一个”通常应解释为表示“一个或多个”。此外,除非如此描述,否则通篇中术语“实施方式”或“一个实施方式”的使用并不表示相同的实施例或实施方式。
发送站102和/或接收站106(以及存储在其上和/或由其执行的算法、方法、指令等,包括由编码器400和解码器500执行的算法、方法、指令等)能够在硬件、软件、或它们的任何组合中实现。硬件能够包括例如计算机、知识产权(IP)内核、专用集成电路(ASIC)、可编程逻辑阵列、光学处理器、可编程逻辑控制器、微代码、微控制器、服务器、微处理器、数字信号处理器或任何其他合适的电路。在权利要求中,术语“处理器”应被理解为包括任何前述硬件,无论是单独地还是组合地。术语“信号”和“数据”能够可交换地使用。此外,发送站102和接收站106的部分不必以相同的方式来实现。
此外,在一个方面,例如,发送站102或接收站106能够使用具有计算机程序的计算机或处理器来实现,该计算机程序在被执行时施行本文描述的任何相应方法、算法和/或指令。此外,或可替选地,例如,能够使用能包含用于执行本文描述的任何方法、算法或指令的其他硬件的专用计算机/处理器。
发送站102和接收站106能够例如在视频会议系统中的计算机上实现。可替选地,发送站102能够在服务器上实现,并且接收站106能够在与服务器分离的设备上实现,诸如手持通信设备。在该实例中,发送站102能够使用编码器400将内容编码成编码的视频信号,并将编码的视频信号发送到通信设备。继而,通信设备然后能够使用解码器500对编码的视频信号进行解码。可替选地,通信设备能够对本地存储在通信设备上的内容进行解码,例如,不是由发送站102发送的内容。其他发送站102和接收站106实施方案是可用的。例如,接收站106能够是通常固定的个人计算机,而不是便携式通信设备和/或包括编码器400也可能包括解码器500的设备。
此外,本公开的全部或部分实施方式能够采取可从例如有形计算机可用或计算机可读介质访问的计算机程序产品的形式。计算机可用或计算机可读介质能够是例如能有形地包含、存储、通信或传送程序以供任何处理器使用或与任何处理器结合使用的任何设备。该介质能够是例如电子的、磁的、光学的、电磁的或半导体设备。其他合适的介质也是可用的。
已经描述了上述实施例、实施方式和方面以便于允许容易理解本公开并且不限制本公开。相反,本公开旨在涵盖被包括在所附权利要求范围内的各种修改和等效布置,该范围应被给予最广泛的解释以涵盖法律允许的所有这样的修改和等效结构。

Claims (20)

1.一种使用帧内预测模式对当前块进行代码化的方法,包括:
获取焦点,所述焦点在坐标系中具有坐标(a,b);
使用第一外围像素与第二外围像素生成所述当前块的预测块,
其中,所述第一外围像素形成构成x轴的第一外围像素线,
其中,所述第二外围像素形成构成y轴的第二外围像素线,
其中,所述第一外围像素线与所述第二外围像素线形成具有原点的所述坐标系,以及
其中,生成所述预测块包括:
对于在所述预测块的位置(i,j)处的所述预测块的每个位置,确定x截距或y截距中的至少一个,
其中,所述x截距是第一点,在所述第一点处由以所述预测块的所述每个位置为中心的点和所述焦点所形成的线与所述第一外围像素线相交,以及
其中,所述y截距是第二点,在所述第二点处由以所述预测块的所述每个位置为中心的所述点和所述焦点所形成的线与所述第二外围像素线相交;以及
使用所述x截距或所述y截距中的所述至少一个来确定所述预测块的每个位置的预测像素值;以及
对与所述当前块和所述预测块之间的差相对应的残差块进行代码化。
2.根据权利要求1所述的方法,其中,使用所述x截距或所述y截距中的所述至少一个来确定所述预测块的每个位置的所述预测像素值包括:
在所述x截距或所述y截距的所述至少一个中的一个为负值的条件下,使用所述x截距或所述y截距的所述至少一个中的另一个来确定每个位置的所述预测像素值。
3.根据权利要求2所述的方法,其中,使用所述x截距或所述y截距中的所述至少一个来确定所述预测块的每个位置的所述预测像素值进一步包括:
在所述x截距是正且所述y截距是正的条件下,将每个位置的所述预测像素值确定为所述x截距处的第一像素值和所述y截距处的第二像素值的加权组合。
4.根据权利要求1所述的方法,其中,使用所述x截距或所述y截距中的所述至少一个来确定所述预测块的每个位置的所述预测像素值包括:
在i等于a的条件下,将所述预测块的每个位置处的像素值设置为所述第一外围像素中位于所述第一外围像素线的位所i处的第一外围像素的值。
5.根据权利要求1所述的方法,其中,使用所述x截距或所述y截距中的所述至少一个来确定所述预测块的每个位置的所述预测像素值包括:
在j等于b的条件下,将所述预测块的每个位置处的像素值设置为所述第二外围像素中位于所述第二外围像素线的位所j处的第二外围像素的值。
6.根据权利要求1所述的方法,其中,使用所述x截距或所述y截距中的所述至少一个来确定所述预测块的每个位置的所述预测像素值包括:
在所述x截距是零且所述y截距是零的条件下,将所述预测块的每个位置处的像素值设置为所述第一外围像素线与所述第二外围像素线的交叉处的像素值。
7.根据权利要求1所述的方法,其中,获取所述焦点包括:
从压缩比特流解码所述帧内预测模式,其中,所述帧内预测模式指示所述焦点。
8.根据权利要求1所述的方法,其中,获取所述焦点包括:
从多个候选焦点中选择所述焦点。
9.根据权利要求8所述的方法,其中,所述多个候选焦点被划分成候选焦点组,其中,每个候选焦点组被布置在相应圆的圆周上。
10.根据权利要求9所述的方法,其中,每个所述候选焦点组包括16个候选焦点。
11.一种用于对当前块进行解码的装置,包括:
存储器;以及
处理器,所述处理器被配置为执行被存储在所述存储器中的指令以用于:
从压缩比特流中解码焦点;
获取所述当前块的预测像素的预测块,其中,每个预测像素位于所述预测块内的相应位置,其中,获取所述预测块包括:
对于所述预测块的每个位置,执行指令以:
获取指示相应预测角度的线,所述线将所述焦点连接到所述每个位置;以及
使用所述线来确定所述每个位置的像素值;以及
使用所述预测块来重构所述当前块。
12.根据权利要求11所述的装置,其中,使用所述线来确定所述每个位置的所述像素值包括:
确定所述线的x截距,其中,所述x截距是第一点,在所述第一点处所述线与包括所述当前块的左侧外围像素的左侧轴相交;
确定所述线的y截距,其中,所述y截距是第二点,在所述第二点处所述线与包括所述当前块的顶部外围像素的顶部轴相交;以及
使用所述x截距与所述y截距来确定所述像素值。
13.根据权利要求12所述的装置,其中,使用所述x截距与所述y截距来确定所述像素值包括:
将所述像素值确定为所述x截距处的第一像素值与所述y截距处的第二像素值的加权组合。
14.根据权利要求12所述的装置,其中,使用所述x截距与所述y截距来确定所述像素值包括:
在所述x截距或所述y截距中的一个是负值的条件下,使用所述x截距或所述y截距中的另一个来确定所述像素值。
15.根据权利要求11所述的装置,其中,从所述压缩比特流中解码所述焦点包括:
从所述压缩比特流中解码帧内预测模式,其中,所述帧内预测模式指示所述焦点。
16.一种用于编码当前块的方法,包括:
使用外围像素获取所述当前块的预测像素的预测块,其中,每个预测像素位于所述预测块内的相应位置,并且其中,获取所述预测块包括:
获取焦点,所述焦点在坐标系中具有坐标(a,b),所述焦点在所述当前块的外面,并且所述焦点不是所述外围像素中的任何一个;
对于所述预测块的每个位置,执行步骤,所述步骤包括:
获取指示相应预测角度的线,所述线将所述焦点连接到所述每个位置;以及
使用所述线确定所述每个位置的像素值;以及
在压缩比特流中编码所述焦点。
17.根据权利要求16所述的方法,其中,在所述压缩比特流中编码所述焦点包括:
在所述压缩比特流中编码指示所述焦点的帧内预测模式。
18.根据权利要求16所述的方法,其中,所述外围像素包括左侧外围像素与顶部外围像素,并且其中,使用所述线来确定所述每个位置的所述像素值包括:
确定所述线的x截距,其中,所述x截距是第一点,在所述第一点处所述线与包括所述当前块的所述左侧外围像素的左侧轴相交;
确定所述线的y截距,其中,所述y截距是第二点,在所述第二点处所述线与包括所述当前块的所述顶部外围像素的顶部轴相交;以及
使用所述x截距与所述y截距来确定所述像素值。
19.根据权利要求16所述的方法,其中,获取所述焦点包括:
从多个候选焦点中选择所述焦点。
20.根据权利要求19所述的方法,其中,将所述多个候选焦点划分成候选焦点组,其中,每个候选焦点组被布置在相应圆的圆周上。
CN202080093804.4A 2020-02-13 2020-05-14 图像和视频压缩的帧内预测 Pending CN115004703A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202062976001P 2020-02-13 2020-02-13
US62/976,001 2020-02-13
PCT/US2020/032862 WO2021162724A1 (en) 2020-02-13 2020-05-14 Intra prediction for image and video compression

Publications (1)

Publication Number Publication Date
CN115004703A true CN115004703A (zh) 2022-09-02

Family

ID=70861578

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080093804.4A Pending CN115004703A (zh) 2020-02-13 2020-05-14 图像和视频压缩的帧内预测

Country Status (5)

Country Link
US (2) US12075089B2 (zh)
EP (2) EP4074047A1 (zh)
JP (2) JP7480319B2 (zh)
CN (1) CN115004703A (zh)
WO (2) WO2021162723A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12058321B2 (en) * 2020-12-16 2024-08-06 Tencent America LLC Method and apparatus for video coding
US20230224465A1 (en) * 2022-01-13 2023-07-13 Tencent America LLC Cross-Channel Prediction based on Multiple Prediction Modes
US12137209B2 (en) 2022-07-13 2024-11-05 Tencent America LLC Model storage for warp extend and warp delta modes
US20240127855A1 (en) * 2022-10-17 2024-04-18 Adobe Inc. Speaker thumbnail selection and speaker visualization in diarized transcripts for text-based video

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140328404A1 (en) * 2012-01-19 2014-11-06 Samsung Electronics Co., Ltd. Method and device for encoding video to improve intra prediction processing speed, and method and device for decoding video
WO2018231087A1 (en) * 2017-06-14 2018-12-20 Huawei Technologies Co., Ltd. Intra-prediction for video coding using perspective information

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060098735A1 (en) * 2004-11-10 2006-05-11 Yu-Chung Chang Apparatus for motion estimation using a two-dimensional processing element array and method therefor
US7692682B2 (en) * 2005-04-28 2010-04-06 Apple Inc. Video encoding in a video conference
WO2011130051A1 (en) * 2010-04-12 2011-10-20 Sony Corporation Context adaptive directional intra prediction
US9215470B2 (en) * 2010-07-09 2015-12-15 Qualcomm Incorporated Signaling selected directional transform for video coding
CN102595120A (zh) 2011-01-14 2012-07-18 华为技术有限公司 一种空域预测编码方法、解码方法、装置和系统
CN105338351B (zh) * 2014-05-28 2019-11-12 华为技术有限公司 基于模板匹配的帧内预测编、解码、阵列扫描方法及装置
JPWO2016009587A1 (ja) * 2014-07-18 2017-05-25 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 画像符号化方法、画像復号方法、画像符号化装置、画像復号装置、及びコンテンツ配信方法
US10354364B2 (en) 2015-09-14 2019-07-16 Intel Corporation Automatic perspective control using vanishing points
US20170347094A1 (en) 2016-05-31 2017-11-30 Google Inc. Block size adaptive directional intra prediction
CN109792515B (zh) 2016-08-01 2023-10-24 韩国电子通信研究院 图像编码/解码方法和装置以及存储比特流的记录介质
EP3301931A1 (en) 2016-09-30 2018-04-04 Thomson Licensing Method and apparatus for omnidirectional video coding with adaptive intra prediction
US10225578B2 (en) 2017-05-09 2019-03-05 Google Llc Intra-prediction edge filtering
US10630978B2 (en) * 2017-05-12 2020-04-21 Blackberry Limited Methods and devices for intra-coding in video compression
EP3562158A1 (en) 2018-04-27 2019-10-30 InterDigital VC Holdings, Inc. Method and apparatus for combined intra prediction modes
US10645381B2 (en) * 2018-04-30 2020-05-05 Google Llc Intra-prediction for smooth blocks in image/video

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140328404A1 (en) * 2012-01-19 2014-11-06 Samsung Electronics Co., Ltd. Method and device for encoding video to improve intra prediction processing speed, and method and device for decoding video
WO2018231087A1 (en) * 2017-06-14 2018-12-20 Huawei Technologies Co., Ltd. Intra-prediction for video coding using perspective information

Also Published As

Publication number Publication date
WO2021162723A1 (en) 2021-08-19
EP4074046A1 (en) 2022-10-19
JP7480319B2 (ja) 2024-05-09
US20230050660A1 (en) 2023-02-16
US12120345B2 (en) 2024-10-15
US12075089B2 (en) 2024-08-27
WO2021162724A1 (en) 2021-08-19
EP4074047A1 (en) 2022-10-19
JP2024087036A (ja) 2024-06-28
JP2023514215A (ja) 2023-04-05
US20230058845A1 (en) 2023-02-23

Similar Documents

Publication Publication Date Title
Han et al. A technical overview of AV1
CN113491129B (zh) 图像/视频压缩中的自适应滤波器帧内预测模式
US11039131B2 (en) Intra-prediction for smooth blocks in image/video
US10848765B2 (en) Rate/distortion/RDcost modeling with machine learning
CN107027038B (zh) 动态参考运动矢量编码模式
CN115004703A (zh) 图像和视频压缩的帧内预测
US9438910B1 (en) Affine motion prediction in video coding
JP6605726B2 (ja) 直前のフレームの動きベクトルパーティショニング
WO2016050051A1 (zh) 图像预测方法及相关装置
US20240098298A1 (en) Segmentation-based parameterized motion models
CN107318015B (zh) 一种视频信号编码方法、解码方法和解码装置
US11115678B2 (en) Diversified motion using multiple global motion models
CN110622515A (zh) 定向帧内预测代码化
CN110741638B (zh) 使用残差块能量分布的运动矢量代码化
CN110169059B (zh) 视频代码化的复合预测
CN110741641A (zh) 用于视频压缩的翘曲参考运动矢量
US20240388690A1 (en) Warped Motion Compensation With Explicitly Signaled Extended Rotations
Afsana Efficient video and point cloud compression through common information exploitation
CN119096548A (zh) 视频编解码中的局部运动扩展
EP4091324A1 (en) Triangulation-based adaptive subsampling of dense motion vector fields

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