屏幕内容数据的视频编码的制作方法

文档序号:10541155阅读:170来源:国知局
屏幕内容数据的视频编码的制作方法
【专利摘要】编码器的输入端接收包括待编码的帧序列的移动图像数据,每个帧包括二个维度上的多个块,每个块包括那些二个维度上的多个像素。运动预测模块通过对于多个所述帧中的每一个的至少一部分相对于该序列的另一帧的相应的参考部分对每个块进行编码来执行编码,其中相应的参考部分从所述块偏移了相应的运动向量。根据本公开,该多个帧的移动图像数据包括屏幕捕获流,并且运动预测模块被配置为将屏幕捕获流的运动向量中的每个限制为在所述维度的至少一个维度上为整数个像素。
【专利说明】屏幕内容数据的视频编码
【背景技术】
[0001] 在现代通信系统中,视频信号可以经由诸如有线网和/或无线网的介质从一个终 端发送到另一终端,有线网和/或无线网经常是基于分组的网络,诸如因特网。例如,视频可 以是从执行于诸如台式计算机或膝上型计算机、平板设备或智能手机的用户终端上的VoIP (互联网协议语音)客户端应用进行的VoIP通话的部分。
[0002] 典型地,视频的帧通过发送终端处的编码器进行编码,以便于压缩它们以在网络 上传输。用于给定帧的编码可包括帧内编码,凭借帧内编码在同一帧中块相对于其它块进 行编码。在该情况下,根据该块与相邻块之间的差(残差)来对目标块进行编码。可替代地, 用于一些帧的编码可以包括帧间编码,凭借帧间编码目标帧中的块相对于前一帧中的对应 部分进行编码,典型地基于运动预测。在该情况下,根据用于标识块与要从其进行预测的对 应部分之间的偏移的运动向量、以及块与要从其进行预测的对应部分之间的差(残差)来对 目标块进行编码。接收机处的对应的解码器基于适当类型的预测对接收到的视频信号的帧 进行解码,从而将它们解压以便输出到解码器侧的屏幕。
[0003] 当对视频进行编码(压缩)时,运动向量用于生成当前帧的帧间预测。编码器首先 搜索在先前编码帧中最佳匹配当前块(目标块)的类似块(参考块),并且将所述参考块与目 标块之间的位移作为编码的位流的部分以信号发送到解码器。该位移典型地表示为水平X 坐标和垂直y坐标,并且被称为运动向量。
[0004] 参考"块"事实上不限于位于参考帧中的实际的块位置,即,不限制于与目标块相 同的网格,而是其是相对于目标块的位置偏移了运动向量的所述参考帧的对应尺寸的部 分。根据本标准,运动向量以分数像素分辨率来表示。例如,在Η. 264标准中,每个运动向量 以1/4像素分辨率来表示。因此,通过示例的方式,如果当前帧中的16x16的块要从先前帧中 的位于目标块的位置向左1个像素的另一 16x16的块来预测,则运动向量是(4,0)。或者,如 果目标块要从仅为目标块向左3/4个像素的参考块来预测,则运动向量是(3,0)。分数像素 位置处的参考块实际上本身不存在,而是通过参考帧的像素之间的插值而生成。亚像素运 动向量能够实现压缩效率方面的显著的性能。

【发明内容】

[0005] 然而,与以整数像素分辨率来估计运动的情况相比,使用分数像素分辨率招致更 多的位用于对运动向量进行编码,并且还招致更多的处理资源用于搜索最佳匹配参考。对 于视频编码,这是值得的,例如,因为更佳匹配的残差的减小的大小通常比对运动向量编码 所招致的位重要,或者所实现的质量可被认为证明了所述资源的适当性。然而,不是待编码 的全部移动图像都是视频(即,从照相机捕获的)。下面基于本文认识到的观察,当对从屏幕 而不是从照相机捕获的移动图像进行编码(压缩)时,编码的位流中的运动向量的大部分通 常将指向整数像素,而它们中很少趋于出现在分数像素位置。因此,虽然编码器正常地以1/ 4像素的单位表示位流中的运动向量,对于屏幕共享或记录应用,通过仅以1个像素的单位 编码运动向量,带宽实际上得到节约,而没有不当的质量损失。可替代地,即使运动向量仍 以分数像素的标度表示在编码位流中,也可以通过将运动向量搜索限制为整数像素偏移来 节约处理资源。
[0006] 因此,根据本文公开的一个方面,提供一种编码器,包括用于接收移动图像数据的 输入端,以及用于对移动图像数据进行编码的运动预测模块。移动图像数据包括待编码帧 的序列,并且每个帧被划分成二个维度上的多个块,每个块包括所述二个维度上的多个像 素。块可以例如是称为如Η. 264或Η. 265的Η. 26x标准中的块或宏块的划分。运动预测模块通 过相对于序列的另一帧的相应的参考部分(参考"±夬")将每个块(目标块)编码来实施帧间 编码,相应的参考从目标块偏移了相应的运动向量。此外,根据本公开,所述多个帧的移动 图像数据包括屏幕捕获流,并且运动预测模块被配置为将屏幕捕获流的运动向量中的每个 限制为在所述维度中的至少一个维度上的整数个像素。
[0007] 在实施例中,考虑到分数运动向量仍能够用于正常的视频(由照相机捕获的)或者 可能其它移动图像(例如,动画),运动向量可通过灵活的方式以信号发出:当视频源来自捕 获的屏幕时,运动向量可以1个像素的单位以信号方式发出,但是对于正常的视频和/或其 它移动图像,仍可使用分数像素单位。
[0008] 因此,在实施例中,编码器还可以包括控制器,该控制器能操作以将运动预测模块 在两种模式之间切换:第一模式和第二模式。在第一模式下,运动向量不限制为整数数量的 像素(在任一维度中),但是在第二模式中,运动向量限制为在至少一个维度(并且在实施例 中在两个维度)上的整数数量的像素。该控制器可被配置为取决于判定出当前正被编码的 移动图像数据包括屏幕捕获流而将运动预测模块切换到第二模式。
[0009] 例如,移动图像数据可包括屏幕捕获流和视频流(例如,这些可以是通过诸如因特 网的基于分组的网络进行的通话的实况流,或者可以是想要用来稍后回放的存储流)。可能 的是,移动图像数据中的一些帧是屏幕捕获流的帧,而移动图像数据的帧在其它时刻是视 频帧,或者可能的是每个帧内的不同区域分别包括屏幕捕获流和视频流(例如,不同的片)。 为适应这些情况,控制器可被配置为判定当前正被编码的移动图像数据是屏幕捕获流还是 视频流,并且对于屏幕捕获流将运动预测模块设定为第二模式,而对于视频流将运动预测 模块设定为第一模式。可替代地,作为另一示例,如果屏幕捕获流和视频流包含在相同的帧 中的一些的不同区域中,则控制器可被配置为如果帧完全包含任何屏幕捕获数据则选择第 二模式,否则仅在帧根本不包含任何屏幕捕获数据的情况下选择第一模式;或者相反地,该 控制器可被配置为如果帧仅包含屏幕捕获数据而没有视频则切换到第二模式,否则如果帧 完全包含任何视频则选择第一模式。
[0010]提供该
【发明内容】
以简化形式引入下文在【具体实施方式】中进一步描述的构思的选 择。该
【发明内容】
不意在标识出所要求保护的主题的关键特征或主要特征,也不意在用于限 制所要求保护的主题的范围。所要求保护的主题也不限于解决了本文提到的任意或全部缺 点的实现方式。
【附图说明】
[0011] 为了辅助理解本公开以及显示出如何将实施例投入实用,现在通过示例的方式参 考附图,在附图中:
[0012]图1是视频流的示意表示,
[0013]图2是通信系统的示意框图,
[0014]图3是编码的视频流的示意表示,
[0015] 图4是编码器的示意框图,
[0016] 图5是解码器的示意框图,
[0017]图6是帧间编码方案的示意表示,以及
[0018] 图7是另一帧间编码方案的示意表示。
【具体实施方式】
[0019] 图1给出了从照相机捕获的输入视频信号的示意图示,并且输入视频信号被划分 成空间分区以便由视频编码器编码从而生成编码的位流。信号包括按时间划分成多个帧 (F)的移动视频图像,每帧表示处于相应的不同时刻(…t-1,t,t+Ι…)的图像。在每帧内,帧 在空间上被划分成多个分区,每个分区代表多个像素。这些分区可称为块。在一些方案中, 帧被划分且细分成不同级别的块。例如,可以将每个帧划分成宏块(MB),并且可将每个宏块 划分成块(b),例如,每个块代表帧内的8x8像素的区域,并且每个宏块代表2x2块(16x16像 素)的区域。在一些方案中,还能够将每个帧划分成独立可解码的片(S),每个片包括多个宏 块。片S通常可呈现为任意形状,例如,每个片是一行或多行的宏块,或者是宏块的不规则或 任意定义的选择(例如,对应于图像中的兴趣区域,R0I)。
[0020] 关于术语"像素",在下面,该术语用来指代图片阵列的采样网格中的样本和采样 位置(有时在文献中,术语"像素"而是用来指代对应于一个单空间位置的全部的三个颜色 分量,并且有时用来指代单个阵列中的单个位置或单个整数样本值)。采样网格的分辨率经 常在亮度采样阵列和色度采样阵列之间不同。在实施例中,下面可应用于4:4:4表示,但是 还可以潜在地应用于例如4:2:2和4:2: 0。
[0021] 还应注意,虽然任何给定的标准可以给出术语块或宏块的特定含义,但是术语块 也经常在本领域更一般地用于指代在其上执行比如帧内预测或帧间预测的编码和解码操 作的以一级别对帧的划分,并且除非做出具体陈述,否则在本文中使用该更一般的含义。例 如,本文提到的块实际上可以是在H.26x标准中称为的块或宏块的分区,并且各种编码和解 码级可以按照适合于编码模式、应用和/或所讨论的标准的任何这样的分区的级别来操作。
[0022] 所捕获的输入信号中的块通常在空间域中来表示,其中将每个颜色空间通道表示 为块内的空间位置的函数。例如,在YUV颜色空间中,亮度(Y)和色度(U,V)通道中的每一个 可表示为笛卡尔坐标X和y的函数,Y(x,y)、U(x,y)和V(x,y);或者在RGB颜色空间中,红色 (1〇、绿色(6)和蓝色(8)通道中的每一个可表示为笛卡尔坐标的函数以^5〇、6(1,5〇、8(^ y)。在该表示中,每个块或部分由不同空间坐标处例如X坐标和y坐标处的一组像素值来表 示,以使得颜色空间的每个通道按照像素位置的离散集合中的每一个像素位置处该通道的 相应的量值来表示。
[0023] 然而,在量化之前,可以将块变换成变换域表示,作为编码过程的一部分,典型地 是空间频域表示(有时仅称为频域)。在频域中,块中的每个颜色空间通道表示为两个维度 中的每个维度中的空间频率(1 /长度的尺度)的函数。例如,这可以分别通过水平方向和垂 直方向上的波数kx和ky来指示,以使得通道可被表示为YUV空间中的Y(k x,ky)、U(kx,ky_V (kx,ky);或者RGB空间中的R(kx,ky)、G(k x,ky)、B(kx,ky)。因此,不是按照像素位置的离散集 合中的每一个处的量值来表示颜色空间通道,而是变换按照与构成块的空间频率分量的离 散集合中的每一个相关联的系数来表示每个颜色空间通道,该系数即为与在块上的空间变 化的不同频率相对应的空间频率项的离散集合中的每一个的振幅。这些变换的可能性包括 傅立叶变换、离散余弦变换(DCT)、卡洛变换(KLT)或其它变换。
[0024] 图2的框图给出了可采用本公开的技术的通信系统的示例。通信系统包括第一发 送终端12以及第二接收终端22。例如,每个终端12、22可包括移动电话或智能手机、平板设 备、膝上型计算机、台式计算机或其它如电视机、机顶盒、立体声系统等家用电器中的一种。 第一终端12和第二终端22各自与通信网络32可操作地耦合,并且从而将第一发送终端12布 置成发送信号,该信号将由第二接收终端22接收。当然,发送终端12还能够从接收终端22接 收信号,且反之亦然,但是为了论述的目的,在本文中从第一终端12的角度描述发送,从第 二终端22的角度描述接收。通信网络32可以包括例如诸如广域互联网和/或局域网的基于 分组的网络,和/或移动蜂窝网络。
[0025] 第一终端12包括计算机可读存储介质14,诸如闪速存储器或其它电子存储器、磁 存储设备、和/或光存储设备。第一终端12还包括具有一个或多个执行单元的处理器或者 CPU形式的处理装置16、诸如具有发射机18的有线或无线调制解调器的收发机、视频照相机 15和屏幕17(即,显示器或监控器)。照相机15和屏幕17中的每一个可以或者可以不容纳在 与终端12的其余部分相同的外壳内(并且甚至发射机18可以在内部或外部,例如在后者情 况下包括软件保护器或无线路由器)。存储介质14、视频照相机15、屏幕17和发射机18各自 与处理装置16可操作地耦合,并且发射机18经由有线或无线链路与网络32可操作地耦合。 类似地,第二终端22包括计算机可读存储介质24,诸如电子、磁和/或光存储设备;以及采用 具有一个或多个执行单元的CHJ形式的处理装置26。第二终端包括收发机,诸如具有至少接 收机28的有线或无线调制解调器,以及屏幕25,其可以或者可以不容纳在与终端22的其余 部分相同的外壳内。第二终端的存储介质24、屏幕25和接收机28各自与相应的处理装置26 可操作地耦合,并且接收机28经由有线或无线链路与网络32可操作地耦合。
[0026] 在第一终端12上的存储设备14存储至少用于对移动图像数据进行编码的编码器, 该编码器被布置为在相应的处理装置16上执行。当执行时,编码器接收来自视频照相机15 的"原始"(未编码)输入视频流,其可操作以对视频流进行编码从而将其压缩成较低位率 流,并且输出编码后的视频流以便经由发射机18和通信网络32发送到第二终端22的接收机 28。第二终端22上的存储设备24存储至少视频解码器,该视频解码器被布置成在其自身的 处理装置26上执行。当执行时,解码器接收来自接收机28的编码后的视频流且将其解码以 便输出到屏幕25。
[0027] 编码器和解码器还能够操作以便对其它类型的移动图像数据进行编码和解码,包 括屏幕共享流。屏幕共享流是从编码器侧的屏幕17捕获的图像数据,使得一个或多个其它 的远程用户能够看到在编码器侧的用户在屏幕上正在看的内容,或者因此该屏幕的用户能 够记录屏幕上正发生的内容,以便稍后回放给一个或多个其它的用户。在发送终端12与接 收终端22之间进行的通话的情况下,在发送终端12处的屏幕17的移动内容将被编码且实况 (实时)发送以被解码和显示在接收终端22的屏幕25上。例如,编码器侧的用户希望与另一 用户共享他或她正在他或她的操作系统或者某应用的桌面上如何工作。
[0028] 注意,在谈到屏幕共享流从屏幕捕获等等的情况下,这不限于用于这样做的任何 特定的机制。例如,数据可从屏幕17的屏幕缓冲器读取,或者可通过接收从操作系统或应用 输出以供显示在屏幕17上的相同的图形数据的实例而捕获数据。
[0029]图3给出了可从运行于发送终端12上的编码器发送到运行于接收终端22上的解码 器的编码的位流33的示意表示。位流33包括针对每个帧或片的编码的图像数据34,该编码 的图像数据包括针对该帧或片中的块的编码的样本以及任何关联的运动向量。在一个应用 中,位流可以作为诸如VoIP通话的实况(实时)通话的一部分而在发送终端12与接收终端22 之间发送(VoIP通话还可以包括视频与屏幕共享)。位流33还包括与每个帧或片相关联的报 头信息36。在实施例中,报头36被布置成包括采用至少一个标记37的形式的至少一个附加 元素,指示运动向量的分辨率,这将在下文进行更详细论述。
[0030] 图4是示出了诸如可以实现在发送终端12上的编码器的框图。编码器包括主编码 模块40,包括:离散余弦变换(DCT)模块51、量化器53、逆变换模块61、逆量化器63、帧内预测 模块41、帧间预测模块43、开关47、减级(-)49以及无损解码级65。编码器进一步包括与帧间 预测模块43耦合的控制模块50。这些模块或级中的每一个可被实现为存储在发送终端的存 储介质14上的代码的部分且被布置为在其处理装置16上执行,但是不排除这些中的一些或 全部完全地或者部分地以专用硬件电路来实现的可能性。
[0031] 减级49被布置为接收包括在多个帧(F)上的多个块的输入信号的实例。输入流从 照相机15接收或者从屏幕17上正显示的内容捕获。帧内或帧间预测41、43基于根据另一已 经编码的块或者对应大小的参考部分的预测来生成待编码的当前(目标)块的预测版本。将 预测版本供给到减级49的输入,其中在空间域中将其从输入信号(即,实际信号)中减去以 产生代表块的预测版本与实际输入信号中的对应块之差的残差信号。
[0032]在帧内预测模式中,帧内预测41模炔基于根据同一帧中的另一已经编码的块(典 型地是相邻块)的预测而生成待编码的当前(目标)块的预测版本。当执行帧内编码时,思想 是仅对帧内的图像数据的一部分如何不同于该同一帧内的另一部分的度量进行编码和发 送。然后能够在解码器处预测(给定某绝对数据为起始)该部分,并且因此仅需要发送预测 数据与实际数据之差,而不是实际数据本身。差信号典型地量值较小,因此占用较少的位来 编码(由于无损压缩级65的操作一见下文)。
[0033]在帧间预测模式中,帧间预测模块43基于根据与当前块不同的帧中的另一已经编 码的参考部分的预测而生成待编码的当前(目标)块的预测版本,参考部分具有块的大小, 但是在空间域中相对于目标块偏移了一运动向量,这是由帧间预测模块43预测的(帧间预 测还可以称为运动预测或运动估计)。通过在空间域中在除了目标帧以外的一个或多个帧 中搜索偏移了多个相应的可能运动向量的多个候选参考部分,以及根据适当的度量标准选 择使得相对于目标块的残差最小化的候选,帧间预测模块43选择对于给定的目标块的最佳 参考。帧间预测模块43由开关47切换到反馈路径中,取代帧内预测级41,并且因此在一个帧 的块和另一帧的块之间产生了反馈环,从而相对于另一帧的那些块进行帧间编码。即,残差 现在代表了帧间预测块与实际输入块之差。这典型地采用比帧内编码甚至更少的位进行编 码。
[0034]残差信号的样本(包括在从输入信号中减去预测后的残差块)从减级49输出,通过 变换(DCT)模块51 (或其他适当的变换),在DCT模块51中将它们的残差值转换到频域,然后 到量化器53,在量化器53中变换后的值被转换成基本上离散的量化指标。由变换模块51和 量化模块53生成的残差的量化后的变换后的指标,以及在预测模块41、43中使用的预测的 指示和通过帧间预测模块43生成的任何运动向量全部被输出以便包含在编码的视频流33 中(参见图3的要素34);经由另一无损编码级65,诸如Golomb编码器或熵编码器,其中运动 向量以及变换后的量化后的指标进一步利用本领域已知的无损编码技术来压缩。
[0035]量化后的变换后的信号的实例也通过逆量化器63和逆变换模块61被反馈以生成 块的预测版本(将在解码器处看到),以供所选择的预测模块41或43使用来预测后续的待编 码块,按照与基于先前编码的块的逆量化后和逆变换后的版本来预测正被编码的当前目标 块相同的方式。开关47被布置成将逆量化器63的输出传递到帧内预测模块41或帧间预测模 块43的输入,视用于当前所编码的帧或块的编码而定。
[0036]图5是示出了诸如可以实现在接收终端22上的解码器的框图。解码器包括无损编 码的逆95、逆量化级83、逆DCT变换级81、开关70和帧内预测级71以及运动补偿级73。这些模 块或级中的每一个可实现为存储于接收终端的存储介质24上的代码的部分并且布置成用 于在其处理装置26上执行,但是不排除这些中的一些或全部完全地或者部分地用专门硬件 电路实现的可能性。
[0037]逆量化器81被布置成经由接收机28和逆无损编码级95从编码器接收编码后的信 号33。逆量化器81将编码的信号中的量化指标转换成残差信号(包括残差块)的去量化样本 并且将去量化样本传递到逆DCT模块81,在逆DCT模块81中将它们从频域变换回空间域。开 关70然后将去量化的、空间域残差样本传递到帧内或帧间预测模块71或73,视用于所解码 的当前帧或块的预测模式而定,并且帧内或帧间预测模块71、73分别使用帧内预测或帧间 预测来对块进行解码。使用哪种模式是利用随着编码的位流33中的编码的样本34-起接收 到的预测和/或任何运动向量的指示来确定的。从该级继续,解码后的块被输出以便通过接 收终端22处的屏幕25来播出。
[0038]如所提到的,根据常规的标准的编解码器以四分之一像素的分辨率执行运动预 测,表示运动向量还以四分之一像素步阶来表达。四分之一像素分辨率运动估计的示例显 示在图6中。在该示例中,目标块的左上角的像素 p是根据像素 a、b、c和d之间的插值来预测 的,并且目标块的其他像素也将根据一个帧中的目标块与另一帧中的参考部分(这些块在 图6中以粗体虚线来显示)之间的偏移、基于参考帧中的相应像素组之间的类似插值来预 测。然而,以该粒度级来执行运动估计具有如下所述的后果。
[0039]参考无损编码器65以及解码器95,无损编码是一种压缩形式,其不是通过抛弃信 息(比如量子化)起作用,而是通过使用码字的不同长度来表示待由无损编码级65编码的数 据中的不同的值,取决于那些值出现的可能性有多大,或者它们出现的频率有多大。例如, 在遇到1之前码字中的前面出现的0的数量可以指示码字的长度,因此1是最短的码字,接着 010和011是次短,接着00100……,等等。因此,最短的码字比使用均匀的码字长度的情况所 要求的要短得多,但是最长的比使用均匀的码字长度的情况所要求的要长。但是,通过将最 频繁的或者最可能的值分配给最短的码字并且仅仅将最不可能或者最不频繁出现的值分 配给较长的码字,与使用均匀码字长度的情况相比,所得到的位流33平均上对于每个编码 的值招致较少的位,并且因此实现了不丢弃任何进一步信息的压缩。
[0040]在无损编码级65之前的编码器40的大部分被设计成试图在传递通过无损编码级 65之前使得尽可能多的值尽可能小。由于它们随后出现得更频繁,所以较小的值与较大的 值相比,随后将招致编码的位流33中更低的位率。这是对照绝对样本对残差编码的原因。这 也是变换51的理论依据,因为很多样本趋于变换成变换域中的零或小系数。
[0041] 类似的考虑能够应用于对运动向量的编码。
[0042] 例如,在H.264/MPEG-4Part 10和H.265/HEVC中,运动向量是利用指数Golomb编码 来编码的。下面的表格显示出运动向量值和编码的位。 值码字 所招致的位数 0 1 1 1 010 3 2 01.1 3
[0043] 3 00100 5 4 00111 5 5 0001(300 7
[0044] 根据上表能够看出,值越大,使用的位越多。这意味着,运动向量的分辨率越高,招 致越多的位。例如,因此,使用四分之一像素分辨率,1像素的偏移必须由值4来表示,招致编 码的位流中的5个位。
[0045] 在编码视频(从照相机捕获的)中,运动向量中的该分辨率的成本是值得的,因为 更细化的分辨率可在搜索较低成本的残差参考中提供更多的机会。然而,在本文中观察到, 对于从屏幕捕获的移动图像,大多数空间位移趋于为全像素位移,它们中的极少数趋向于 位于分数像素位置,因此运动向量的大多数趋向于指向整数像素值,且极少数趋向于指向 分数像素值。
[0046] 在这一基础上,期望的是对于以1像素的分辨率对从屏幕捕获的图像数据的运动 向量进行编码。考虑对于这样的内容来说无需在运动向量的分数部分上花费任何位的事 实,这意味着在编码该内容时所招致的位率会降低。
[0047]例如,虽然编码器在正常情况下以1/4像素偏移为单位解释位流中的运动向量,但 是编码器实际上经常能够通过丢弃该分辨率而是以整数像素偏移为单位对针对屏幕编码 应用的运动向量进行编码来节约位率。虽然这将运动向量的精度降低了因数4,但是该精度 通常对于屏幕共享或记录应用不太有价值,并且这还减少了对向量编码所需的位数。为了 根据目标块向左1像素的参考块预测当前(目标)块,运动向量将为(1,〇),而不是(4,0)。使 用上述的Golomb编码,这意味着编码运动向量所招致的位从(00111,1)变成(010,1),并且 因此在该情况下节约了两个位。
[0048] 此外,在实施例中,降低分辨率的运动向量还可以通过将运动向量搜索限制为整 数值来减小在编码器处执行的运动估计的复杂度,从而减少搜索所招致的处理资源。可替 代地,执行正常搜索以及将得到的运动向量舍入为整数值将是可能的。
[0049] 图7示出了约束到仅整数像素的分辨率的运动预测的示例,运动向量被约束到仅 整像素步阶。与图6相比,像素 p仅根据单一的整数像素 a来预测,而没有插值。可替代地,可 根据像素 b、c、d或另一像素来预测,取决于一个帧中的目标块于另一帧中的参考部分之间 的偏移(也是以粗体虚线显示),但是由于约束,不能根据像素之间的插值来预测。注意:对 于任何给定的块通过图6中的示例示例说明的四分之一像素预测可能恰好生成整数像素偏 移而没有插值,这是在其给出最低的残差的情况下。然而,不会约束到这样做,并且在尺寸 可变的图像上,其对于所有块发生这种情况是非常不可能的。
[0050] 考虑分数运动向量值仍将对于照相机捕获的内容非常有用,在实施例中,编码器 40被提供有与运动预测模块43耦合的控制器50,该控制器50被配置为以灵活的方式选择运 动向量分辨率:当源数据来自捕获的屏幕17且不存在分数像素运动时,运动向量以仅整数 像素为单位进行编码和发送;但是,对于照相机内容的视频,运动向量仍以分数像素精度进 行编码和发送。
[0051] 为了这样做,控制器50可被配置为测量用于指示所捕获的内容的类型是屏幕内容 的事实的性能启发式规则。作为响应,控制器然后禁用针对屏幕内容编码的分数像素运动 补偿。可替代地,控制器50可以从应用或操作系统接收关于它正在向编码器供应用于编码 的何种类型的数据的指示,并且控制器50可在该基础上在模式之间进行选择。作为另一可 选项,可以基于历史数据来做出选择。该选择可在每帧上做出,或者可对于帧内的不同区域 单独地选择模式,例如,在每片上。
[0052] 因此,在对帧或片编码之前,编码器能够基于诸如历史统计数据、其应用类型的知 识、多通分析或某其他这类技术的因素来决定运动向量分辨率。如果编码器决定仅使用全 像素运动估计,则分数像素搜索被跳过。如果标定的运动向量预测具有分数部分,则预测被 舍入成整数值。
[0053]在进一步的实施例中,可以可选地将控制单独地应用于向量的垂直或水平分量。 这可用于对水平地或垂直地标定的屏幕视频进行编码。
[0054]为了以整数像素为单位或步阶在减小分辨率的标度上表示运动向量,并且因此实 现相对于常规编解码器的关联的位率节约,用于用信号发送运动向量的协议将不得不更新 以便用于未来的编解码标准。在实施例中,这可以实现为对H.265(HEVC,高效视频编码)标 准的更新。为了对捕获的屏幕内容进行编码,编码的数据34的格式将被给予针对每个运动 向量的减小尺寸的运动向量场。对于在整数像素模式中进行编码的编码后的屏幕捕获流, 相关数据34将因此在位流33中包括整数运动向量并且在实施例中在位流33中仅包括整数 运动向量。
[0055]在实施例中,这将是可选的,标记37还包含在报头36中以指示分数像素(例如,1/4 像素)或整数像素分辨率是否正用于相关的帧或片的编码(再参考图3)。如果水平和垂直分 辨率能够单独地选择,则每个帧或片将需要两个标记37。
[0056]可替代地,在实施例中,不必更新现有标准的协议来实现整数像素运动向量。而 是,运动向量可限制为整数偏移,但是这些整数运动向量仍在常规的分数(例如,1/4像素) 标度上表示在编码后的位流33中。因此,在1/4像素分辨率情况下,一个整像素的偏移仍将 以常规的方式由值4(例如,码字00111)来表示,但是由于在编码器处施加的约束,不具有为 比如由值3(码字00100)表示的像素的3/4的可能性。在该情况下,整数运动向量的位率节约 将不能实现,但是通过将运动向量搜索的复杂度限制为整数偏移仍然可以节约处理资源。 [0057]下面公开了基于对H. 265标准的更新的示例性的实施例。该变型例使得运动向量 在编码的位流33中以减小的、整数像素标度来表示,并且将每个片的两个标记37添加到压 缩流的报头信息36中,以便于用信号发送它们的水平分量和垂直分量中的运动向量的分辨 率。
[0058] 该变型例无需改变句法或解析过程,但是通过将运动向量差解释为整数且将标定 的MV预测器舍入为整数值来修改解码过程。发现该变型例将编码效率提高了多达7 %,且对 于测试的屏幕内容序列平均上提高了约2%,并且其还能够减小编码和解码过程的复杂度。
[0059] 高级指示器被添加(到SPS,PPS和/或片报头级)以指示用于运动向量的解释的分 辨率。
[0060] 在解码过程中,如果运动向量被指示为处于全像素分辨率且标定的运动向量预测 具有分数部分,则预测被舍入成整数值。运动向量差被简单地解释为整数偏移而不是1/4样 本的偏移。其他所有的解码过程保持相同。解析过程(报头级以下)也不变。当运动向量以全 样本精度编码且输入图像数据使用4:2:2或4:2:0采样时,能够以通常的方式得到色度运动 向量,这将产生1/2样本的色度运动位移。可替代地,色度运动向量也可以舍入成整数值。
[0061] 上述的标定是发生于HEVC(H.265)中的某事物。思想是,如果运动向量用于将某其 他帧编码,则能够计算出在(i)当前图片与(ii)其参考图片之间的相对位置位移方面等同 的运动向量将是什么。这基于由另一图片中的共定位部分中的运动向量所指示的位移的相 对定位,以及基于(iii)该图片与(iv)其参考作为其参考图片的图片之间的相对位置位移。 注意的是,编码数据的时间帧速率不总是恒定不变,而且在位流中对图片编码的顺序与它 们被捕获和显示的顺序之间也存在差别,因此这些时间关系可被计算,然后用于标定运动 向量,以使得其基本上表示相同方向上的相同速度的运动。这称为时间运动向量预测。 [0062]另一可能性可以是,每当仅使用整数运动时,禁用时间运动向量预测。在HEVC中已 经存在使得编码器禁止该特征的使用的句法。这是一种避免需要解码器具有根据差值被编 码为整数还是分数值而不同地操作的特殊过程的可能的方式。从时间运动向量预测获得的 增益可以在这些使用情况下很小(或为零),因此禁用它不必是不期望的。
[0063] 关于句法变化:将在PPS扩展中包括新的两位指示器,其可以称为motion_vector_ resolution_control_idc,以指示运动向量分辨率控制模式。定义了三种模式。当模式为0 时,以1/4像素精度对运动向量进行编码,并且全部的解码过程保持不变。当模式为1时,片 中参考PPS的全部的运动向量在全像素精度编码。并且当模式为2时,通过片报头中的标记 逐片地控制运动向量分辨率。当111〇1:;[011_^(31:01'_代801111:;[011_(30111:1'01_丨(1(3不存在时,其值 被推断为0。
[0064] 当motion_vector_resolution_control_idc等于2时,在片报头中用信号发送称 为81;[06_1]1〇1:;[011_^(31:01'_代801111:;[011_;1^138的附加标记。当标记为0时,该片的运动向量以 1/4像素精度编码,而当标记为1时,运动向量以全像素精度编码。当标记不存在时,其值被 推断为等于 motion_vector_resolution_control_idc 的值。
[0065] 修改后的PPS句法说明如下:
[0066]
[0067]
[0068] 修改后的片报头句法图示说明如下:
[0069]
[0070]
[0071] 将意识到,上述实施例仅通过示例的方式进行了描述。
[0072] 例如,虽然上文按照块进行了描述,这不一定限于任何特定标准中的称为块的分 区。例如,本文提到的块可以是Η. 26x标准中的称为块或宏块的分区。
[0073] 本公开的范围不限于任何特定的编解码或标准,并且通常本文所公开的技术能够 实现于现有标准的上下文中或者现有标准的更新的上下文,无论是如H264还是H. 265的 H.26x标准还是任何其他标准,或者可以实现为定制的编解码器。此外,本公开的范围不特 别地限制为视频样本的任何特定的表示,无论是按照RGB、YUV还是其他。范围既不限于任何 特定的量化,也不限于DCT变换。例如,诸如卡洛变换(KLT)的替选变换可被使用,或者可以 不使用任何变换。此外,公开不限于VoIP通信或者经由任何特定类型的网络的通信,但是可 用于任何能够传送数据的网络或媒介。
[0074] 在提到运动向量偏移被限制或者不限制为整数像素等的情况下,这可以指的是颜 色空间通道的任何一个或两个中的运动估计,或者全部三个颜色通道中的运动估计。
[0075] 此外,所要求保护的实施例不限于其中编码的视频和/或屏幕捕获流经由网络发 送的应用,也不限于其中流是实况流的应用。例如,在另一应用中,流可以存储在诸如光盘、 硬盘驱动器或其他磁存储设备、或"闪速"记忆棒或其他电子存储器的存储设备上。因此,注 意的是,屏幕共享流不一定必然表示实况共享(但是这肯定是一个可选项)。可替代地或者 另外地,该屏幕共享流可被存储以便之后与一个或多个其他用户共享,或者可不共享所捕 获的图像数据,而是仅为此时正使用屏幕的用户进行记录。一般地,屏幕捕获可以是任何由 通过任何适当的手段捕获(不一定是从屏幕缓冲器读,但是这是一个可选项)捕获的编码器 侧屏幕内容构成的任何移动图像数据,以便与一个或多个其他用户共享(实况地或非实况 地),或者为了捕获用户的益处或者仅为了归档(可能最终结果是实际上永远不再观看)而 简单地记录。
[0076] 还要注意的是,编解码器不一定限于仅对屏幕捕获数据和视频进行编码。在实施 例中,其还可以能够对其他类型的移动图像数据进行编码,例如动画。其他此类移动图像数 据可在分数像素模式或整数像素模式下编码。在其他实施例中,专门的编解码器可被实现, 其专用于仅对屏幕捕获流进行编码,并且具有固定的整数像素分辨率。
[0077] 此外,注意的是,帧间编码不一定总是必须相对于前一帧编码,而是更一般地一些 编解码器可允许相对于除了目标帧之外的不同的帧进行编码,或者是目标帧前一帧或之前 的帧(假设适当的输出缓冲器)。
[0078] 此外,注意的是,经常可以对运动向量本身进行差分编码。在该情况下,在提到运 动向量被限制为整数个像素的情况或类似情况下,这意味着运动向量的差分编码的形式是 如此限制的。
[0079] 此外,解码器不一定必须实现于终端用户终端处,也不必输出移动图像数据而立 刻在接收终端处进行消费。在可替代的实现方式中,接收终端可以是瞬时式终端,诸如运行 解码器软件的服务器,用于将移动图像数据以解码或代码变换形式输出到另一终端,或者 存储解码后的数据以便稍后消费。类似地,编码器不一定实现在终端用户终端处,也不一定 对源自发送终端的移动图像数据进行编码。在其他实施例中,发送终端可以例如是瞬时式 终端,诸如运行编码器软件的服务器,用于从另一终端接收未编码或替选方式编码的形式 的移动图像数据,以及对该数据进行编码或代码变换以便存储在服务器处或者转送到接收 终端。
[0080] -般地,本文所述的任何功能可以利用软件、固件、硬件(例如,固定逻辑电路)、或 者这些实现方式的组合来实现。本文所使用的术语"模块"、"功能"、"组件"和"逻辑" 一般代 表了软件、固件、硬件或它们的组合。在软件实现的情况下,模块、功能或逻辑表示当在处理 器(例如,一个或多个CPU)上执行时实施规定任务的程序代码。程序代码能够存储在一个或 多个计算机可读存储设备中。下面描述的技术的特征是平台独立的,意味着该技术可实现 在具有各种处理器的各种商业计算平台上。
[0081] 例如,终端可以包括使得用户终端的硬件执行操作的实体(例如软件),例如处理 器功能块等等。例如,终端可以包括计算机可读介质,该计算机可读介质可被配置为保持使 得用户终端以及更特别地使得用户终端的操作系统和关联硬件执行操作的指令。因此,指 令的功能是配置操作系统和关联的硬件来执行操作并且以这种方式实现了操作系统和关 联的硬件的变换而实施功能。该指令可通过计算机可读介质经由各种不同的配置提供给终 端。
[0082] 计算机可读介质的一个这样的配置是信号承载介质,并且因此被配置为将指令 (例如,作为载波)发送到计算设备,诸如经由网络。计算机可读介质还可配置为计算机可读 存储介质,并且因此不是信号承载介质。计算机可读存储介质的示例包括随机存取存储器 (RAM)、只读存储器(R0M)、光盘、闪速存储器、硬盘存储器以及可使用磁、光和其他技术来存 储指令和其他数据的其他存储器设备。
[0083]虽然已经通过专用于结构特征和/或方法行为的语言描述了主题,但是应当理解, 在随附的权利要求中限定的主题不一定限于上述的特定的特征或行为。而是,上述的特定 特征和行为被公开作为实现权利要求的示例形式。
【主权项】
1. 一种编码器,包括: 用于接收包括待编码的帧的序列的移动图像数据的输入端,每个帧包括二个维度上的 多个块,其中,每个块包括所述二个维度上的多个像素;以及 运动预测模块,其用于对所述移动图像数据进行编码,这通过对于多个所述帧中的每 一个的至少一部分相对于所述序列的另一帧的相应的参考部分将每个块编码,其中,所述 相应的参考部分从所述块偏移了相应的运动向量; 其中,所述多个帧中的所述移动图像数据包括屏幕捕获流,并且所述运动预测模块被 配置为将所述屏幕捕获流的所述运动向量中的每个限制为在所述维度的至少一个维度上 为整数个像素。2. 如权利要求1所述的编码器,其中,所述编码器包括控制器,所述控制器能够操作以 将所述运动预测模块在第一模式与第二模式之间切换,在所述第一模式中所述运动向量不 被限制为整数个像素,在所述第二模式中,所述运动向量被限制为在所述维度的至少一个 维度上为整数个像素,所述控制器被配置为根据判定出当前正被编码的所述移动图像数据 包括屏幕捕获流而将所述运动预测模块切换到所述第二模式。3. 如权利要求2所述的编码器,其中,所述移动图像数据包括所述屏幕捕获流和视频 流;以及 所述控制器被配置为判定当前正被编码的所述移动图像数据是所述屏幕捕获流还是 所述视频流,以及如果是所述屏幕捕获流则将所述运动预测模块设定为所述第二模式,而 如果是所述视频流则将所述运动预测模块设定为所述第一模式。4. 如权利要求2或3所述的编码器,其中,所述多个帧中的每一个帧被划分成多个区域, 每个区域包括多个所述块;并且所述控制器被配置为针对所述区域中的每个单独的区域在 所述第一模式与所述第二模式之间进行选择,如果所述区域包括屏幕捕获数据则切换到所 述第二模式,而如果所述区域包括另一类型的移动图像数据则切换到所述第一模式。5. 如权利要求2、3或4所述的编码器,其中,在所述第二模式中,所述运动向量被限制为 在所述维度的每个维度上为整数个像素。6. 如权利要求2、3或4所述的编码器,其中,所述控制器被配置为选择是否将所述第二 模式单独地应用于所述维度中的每个维度上。7. 如任一前述权利要求所述的编码器,进一步包括无损编码模块,所述无损编码模块 被配置为在所述运动预测模块进行编码之后根据无损编码技术来对所述移动图像数据进 行进一步编码。8. 如任一前述权利要求所述的编码器,其中,所述块是H.26x视频编码标准中的块或宏 块。9. 如从属于权利要求4的任意权利要求中的权利要求4所述的编码器,其中,所述区域 是Η. 26x视频编码标准中的片,并且所述控制器被配置为逐片地在所述第一模式与所述第 二模式之间进行选择。10. -种用于对移动图像数据进行编码的计算机程序产品,所述计算机程序产品被实 施在计算机可读介质上且被配置以使得当执行时实施如下操作: 接收包括待编码的帧的序列的移动图像数据,每个帧包括二个维度上的多个块,其中, 每个块包括所述二个维度上的多个像素;以及 对于多个所述帧中的每一个的至少一部分,相对于所述序列的另一帧的相应的参考部 分将每个块编码,其中,所述相应的参考部分从所述块偏移了相应的运动向量; 其中,所述多个帧中的所述移动图像数据包括屏幕捕获流,并且所述计算机程序产品 被配置为将所述屏幕捕获流的所述运动向量中的每个限制为在所述维度的至少一个维度 上为整数个像素。11. 如权利要求10所述的计算机程序产品,能够操作以将所述运动预测模块在第一模 式与第二模式之间切换,在所述第一模式中所述运动向量不被限制为整数个像素,在所述 第二模式中,所述运动向量被限制为在所述维度的至少一个维度上为整数个像素,所述计 算机程序产品被配置为根据判定出当前正被编码的所述移动图像数据包括屏幕捕获流而 将所述运动预测模块切换到所述第二模式。12. 如权利要求11所述的计算机程序产品,其中,所述移动图像数据包括所述屏幕捕获 流和视频流;以及 所述计算机程序产品被配置为判定当前正被编码的所述移动图像数据是所述屏幕捕 获流还是所述视频流,并且如果是所述屏幕捕获流则将所述运动预测模块设定为所述第二 模式,而如果是所述视频流则将所述运动预测模块设定为所述第一模式。13. 如权利要求11或12所述的计算机程序产品,其中,所述多个帧中的每一个帧被划分 成多个区域,每个区域包括多个所述块;并且所述计算机程序产品被配置为针对所述区域 中的每个单独的区域在所述第一模式与所述第二模式之间进行选择,如果所述区域包括屏 幕捕获数据则切换到所述第二模式,而如果所述区域包括另一类型的移动图像数据则切换 到所述第一模式。14. 如权利要求11、12或13所述的计算机程序产品,其中,在所述第二模式中,所述运动 向量被限制为在所述维度的每个维度上为整数个像素。15. 如权利要求11、12或13所述的计算机程序产品,其中,所述计算机程序产品被配置 为选择是否将所述第二模式单独地应用于所述维度中的每个维度上。
【文档编号】H04N19/174GK105900419SQ201480072658
【公开日】2016年8月24日
【申请日】2014年12月19日
【发明人】S·西尔金, S·萨布林, Y·周, C-L·林, 李明杰
【申请人】微软技术许可有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1