用于使用内容信息改进视频编码的系统和方法

文档序号:7772718阅读:148来源:国知局
用于使用内容信息改进视频编码的系统和方法
【专利摘要】提供用于使用内容信息改进视频编码的系统和方法。三维(3D)建模系统产生经编码的视频流。系统包括内容引擎、渲染器以及视频编码器。渲染器从内容引擎接收相关的3D模型信息并产生相对应的二维(2D)图像。视频编码器接收2D图像并产生相对应的经编码的视频流。视频编码器从内容引擎接收内容信息、将内容信息变换成编码器控制信息以及使用编码器控制信息控制视频编码器。
【专利说明】用于使用内容信息改进视频编码的系统和方法
[0001]相关申请的交叉引用
[0002]本申请要求于2012年10月I日由Azar等人所提交的序列号为13/632,210的、标题为“SYSTEM AND METHOD FOR IMPROVING VIDEO ENCODING USING CONTENT INFORMATION”的美国申请的优先权,在先申请与本申请共同受让,并在本文通过援引的方式加以合并。
【技术领域】
[0003]本申请总地涉及计算机生成的视频,并且更具体地,涉及使用内容信息改进计算机生成的视频编码。
【背景技术】
[0004]许多消费级以及专业级设备中部署的视频技术依靠一个或多个视频处理器以产生用于显示的视频信号。这在视频游戏应用中尤其如此。
[0005]并入现代视频处理器的更普遍的特征之一是强大的实时视频压缩的实现。视频压缩,或视频编码,典型地将一个视频与下一个在帧之间相比较并仅发送差异。如果视频具有少量的运动那么这种编码工作良好。例如文本的静止帧几乎不传送数据即可重复。在运动越多的视频的部位中,从一个帧改变到下一个帧的像素也越多,并且因此视频压缩方案必须发送越多的数据以适应越多的改变像素。
[0006]通常,最引人注目的视频内容在帧之间具有大量的差异(例如大量的运动、爆炸等)。典型地要求非常强大的视频处理架构以处置这种剧烈变化的视频。这种视频通常具有很多高频细节,并且为了维持帧率,视频处理器或降低视频质量,或增加视频的位速率以采用与先前帧相同级别的细节来渲染此增加的信息。

【发明内容】

[0007]一个方面提供用于将视频数据的帧编码的方法。方法包括从应用接收要编码的视频数据的帧和与视频数据的帧的内容相关的内容信息。方法还包括将内容信息变换成编码器控制信息。方法进一步包括基于编码器控制信息改变视频数据的帧的编码。
[0008]另一方面提供视频编码系统。系统包括编码引擎和变换函数。编码引擎配置为接收表示视频数据的帧的信号并产生与视频数据的帧相关的经编码信息。变换函数配置为接收表示与视频数据的帧的内容相关的内容信息的信号并将内容信息变换成编码器控制信息。变换函数进一步配置为使用编码器控制信息控制编码引擎的操作。
[0009]又一方面提供产生经编码的视频流的三维(3D)建模系统。系统包括内容引擎、渲染器和视频编码器。渲染器配置为从内容引擎接收与3D模型相关的信息并产生相对应的二维(2D)图像。视频编码器配置为接收来自渲染器的2D图像并产生相对应的经编码的视频流。视频编码器进一步配置为从内容引擎接收与2D图像相关的内容信息、将内容信息变换成编码器控制信息以及根据编码器控制信息控制2D图像的编码。【专利附图】

【附图说明】
[0010]现在结合附图参考下面的描述,其中:
[0011]图1是游戏系统的框图;
[0012]图2是根据本公开的游戏系统的框图;以及
[0013]图3是根据本公开的编码器的框图。
【具体实施方式】
[0014]图1是游戏系统100的框图。虽然本公开描述游戏系统,但应理解的是可在产生经编码的视频流的其他3D建模系统中找到本公开的各方面。
[0015]内容引擎102或其他应用产生三维(3D)模型104 (或场景文件)到渲染器106。内容引擎102可提供用于游玩视频游戏的实时处理功能性,诸如用户输入/输出、物理引擎、动画、人工智能、场景图以及其他功能。3D模型104可包括信息诸如虚拟场景的描述中的几何体、视点、纹理、照明以及阴影信息。
[0016]渲染器106接收3D模型104并产生相对应的二维(2D)图像108。典型地,渲染器106以适合用于视频显示的速率产生新2D图像108。编码器110接收2D图像108并产生经编码的视频流112。视频流112适合用于在视频显示设备上立即观看或适合用于在模拟或数字记录介质上记录而用于稍后观看。
[0017]视频流112典型地包括I (帧内)帧、P (预测)帧和B (双向)帧。I帧包含描述单个2D图像108的必要的所有数据并起到称作“图片组”(GOP)结构的第一元素的作用。I帧和P帧描述2D图像108和先前或后续I帧或P帧之间的差异。
[0018]编码器110可通过由从渲染器106所接收的2D图像108生成差异帧来开始。差异帧典型地通过将2D图像108与先前视频帧相比较来生成。差异帧典型地通过将2D图像108分成宏块来生成,这些宏块是邻近像素的固定大小的正方形或矩形的合集。
[0019]差异帧随后被变换成适合用于压缩的格式;例如,通过对差异帧应用离散余弦变换(DCT)或整数变换(IT)来产生变换系数,或简单地系数。随后基于典型地称作“量化参数”或“QP”的参数来量化系数。量化将变换系数的值的原始范围约束到离散级别的较小集合。典型地,通过将系数中的每一个除以QP的值来将QP应用于整个图像。
[0020]经量化的变换系数随后被变换成符号或代码字。该变换典型地基于经量化的系数的帧的序列中的符号的出现频率。这些符号的帧(与诸如QP、帧时间戳(time stamp)、在帧中选择宏块的序列、和用于解码所需的任何其他信息一起)形成经编码的视频流112。
[0021]编码器110内的速率控制函数确定QP的值,典型地,以将经编码的视频流112的平均位速率约束到目标值,同时尝试确保从经编码的数据所重现的视频帧的充足的质量(或指定的质量)。
[0022]如果之前的帧已使用少于目标平均数的位,那么可在后续帧上使用较低的QP值以允许针对后续帧生成较多的位。类似地,在之前的帧已超过目标平均数的情况中可提供较高的QP值。在一些极端情况中,编码器可跳过将帧编码以确保不超过目标平均数,但这典型地降低经解码的视频流的质量。
[0023]将视频帧编码可附加地包括将在产生差异帧时所生成的宏块与一个或多个先前帧相比较以检测宏块是否已保持大体不变,而是在帧中简单地移动一些数目的像素。这种确定通常通过将宏块在所有方向中(例如北、东北、东、东南、南、西南、西、西北)移位(shift)小数目的像素并将每个经移位的宏块与先前帧相比较。如果未找到匹配,那么宏块可在每个方向中移位更大距离并再次与先前帧相比较。
[0024]当/如果最终找到匹配,那么可通过使用先前帧中的宏块的ID和移位的量和方向来产生帧的部分编码。量和方向的值可称作“运动矢量”。用于相对应的多个宏块的多个运动矢量可称作“运动场”(motion field)。运动矢量和运动场也可用来预测后续巾贞中的运动。
[0025]上文描述的速率控制函数也可针对运动矢量搜索,设置时间限制或迭代限制,并且如果在限制内未找到匹配,那么放弃搜索。速率控制函数平衡被应用到运动估计和到差异计算的处理能力以在所期望的位速率下产生高质量视频流,或以所期望的视频质量产生低位速率视频流。
[0026]一些视频编码标准仅允许参考一紧挨着的在前或在后的帧实施帧之间的比较。其他标准允许图像参考多个在前或在后的帧来编码。这种“多参考帧”编码标准典型地要求较大处理能力或较长处理时间来编码。
[0027]图2是根据本公开的游戏系统200 (或其他3D建模系统)的框图。内容引擎202产生三维(3D)模型204 (或场景文件)到渲染器206。渲染器206接收3D模型204并产生一个或多个相对应的视频数据的二维(2D)帧208。编码器210接收2D帧208 (或图像)并产生经编码的视频流212。
[0028]编码器210还从内容引擎202接收与2D图像208相关的内容信息214。基于内容信息214,编码器210可从参考图1的编码器110所描述的过程改变其编码过程,结果在经编码的视频流212中增加质量和/或降低数据量。根据本公开的编码器210因此可操作以针对指定的视频流位速率产生较好质量的视频图像,或针对指定的视频图像质量产生较低的视频流位速率。这种改进可通过改进经编码的视频流中的位或编码过程中的处理器周期的分配来产生。下文以更多细节参考图2和3对这种改进的示例加以描述。
[0029]根据本公开的3D建模系统,诸如游戏系统200,可在多种不同形式的硬件中实现。对于简单3D模型,系统200可以以单处理器系统实现。更典型地,将在提供专用图形处理支持的多处理器系统中实现根据本公开的系统。这种多处理器系统可包括主处理器,其控制提供多个处理器(或多处理单元)的一个或多个图形处理单元。
[0030]在一些实施例中,根据本公开的系统在客户端-服务器配置中实现。客户端设备提供视频显示器、用户接口功能性以及可能提供内容引擎202的一些较高级元素,而服务器提供内容引擎202的其他元素、渲染器204以及编码器206。经编码的视频流212可随后通过通信链接被提供到客户端设备,用于在客户端设备上显示。
[0031 ] 在一些这种实施例中,可采用在多个位置中(例如在“云”配置、或其他分布式计算环境中)所提供的服务器实现客户端-服务器配置,客户端经由互联网、蜂窝电话系统或其他网络与一个或多个服务器进行通信。
[0032] 在其他这种实施例中,可通过与平板电脑、手机、或其他便携计算设备进行有线或无线通信的个人计算机(可能具有专用图形处理卡或电路)来提供服务器。在另一些其他这种实施例中,平板电脑、手机、或其他便携计算设备可作为服务器并且无线地与电视机或其他大屏幕显示设备进行通信。[0033]图3是根据本公开的编码器300的框图。编码器300包括编码引擎302和内容信息变换函数304。在示出的实施例中,编码引擎302配置为接收视频帧308并且进一步配置为从帧308产生经编码的视频流312。在示出的实施例中,内容信息变换函数304配置为接收与2D图像308相关的内容信息314并进一步配置为将所接收的信息变换成编码器控制信息310。在示出的实施例中,编码引擎302配置为根据编码器控制信息310实施编码。
[0034]现在将参考图2的游戏系统200和图3的编码器300对根据本公开的使用内容信息将视频编码的示例加以描述。这些实施例提供根据本公开的编码的例示,但应理解的是本文未描述的使用内容信息的其他视频编码器也落在本公开的范围内。可分开地或以任何组合方式共同使用这些示例。
[0035]示例 #1
[0036]内容引擎202典型地产生用于渲染器206的参数,其包括摄像机位置,渲染器要从该摄像机位置生成其2D图像,以及投影矩阵,该投影矩阵表示3D模型到2D图像的几何映射。在一些实施例中,摄像机位置和/或投影矩阵被包括在被提供到变换函数304的内容信息314中。摄像机位置和/或投影矩阵从先前值到当前值的改变可指示遍及整个图像的全局运动。与也可被包括在内容信息314中的用于3D模型的元素的Z-缓冲区信息组合,变换函数304可针对正被编码的图像计算“最佳猜测”运动矢量。编码引擎302可随后在其搜索过程中使用该“最佳猜测”作为初始值用于查找针对帧208中的一个或多个宏块的运动矢量。
[0037]使用该初始值的搜索过程更可能查找用于图像的可接受的运动场,以及可能要求较少处理周期完成搜索。在一些情况中,在运动估计中使用较少处理周期可降低产生经编码的视频流312中的时延。并且,较好的运动场可使速率控制函数对每帧分配较少位,从而改进通过总线或网络传送经编码的视频时的整体时延。在其他情况中,降低运动估计中的处理周期的数目可允许更多处理周期被使用在其他编码函数中,有助于提高经编码图像的质量。
[0038]示例 #2
[0039]用于当前3D模型的Z-缓冲区信息可对跨越帧的位分配分布有帮助。由于人类视觉系统对边缘更敏感,可通过指导编码器围绕边缘花费较多周期和位来获得编码中的改进。在一些实施例中,内容信息314包括Z-缓冲区信息并且变换函数304可通过对所接收的Z-缓冲区信息运行滤波器(例如3x3拉普拉斯滤波器或其他用于检测边缘的滤波器)来检测边缘。表示经检测边缘的数据可随后被包括在编码器控制信息310中以使编码引擎302对图像308的围绕经检测边缘的区域分配较多周期和/或位。
[0040]通过该方式,编码引擎302可在经编码的视频流中在非边缘部位上花费较少处理周期和位,人类视觉系统对该非边缘部位较不敏感。编码引擎302可在帧的其改进图像质量将对人类观看者产生效果的区域中分配位和周期。然后在帧的不会被观看者注意到降低质量的区域中节省下来的位和处理周期可由编码引擎302所使用以增加经编码图像的整体质量或减少经编码帧中的位的数目。
[0041]示例 #3
[0042]闪光和爆炸在视频游戏中经常出现。亮度斜坡(luminance ramp)是针对这种效果的良好近似。在一些实施例中,亮度斜坡被包括在内容信息314中并且变换函数304标识图像308的包含闪光或爆炸的区域并将该区域在编码器控制信息310中提供到编码引擎302。
[0043]编码引擎302可以以两个方式之一或二者来使用区域信息。区域信息可由编码引擎302用来较好地分配用来将闪光或爆炸的图像编码的位。区域信息也可以或可替代地由编码引擎302用作触发器用于多参考帧评估。多参考帧评估比单参考帧评估要求更多的处理周期并可仅备用于诸如具有爆炸/闪光场景的特殊情况。
[0044]示例 #4
[0045]在一些实施例中,内容引擎202在内容信息314中指示视频帧的一部分将被诸如文本框、对话框或其他用户界面元素等可替代内容区域所叠加(或混合)。变换函数304可确定帧308的由可替代内容所占据的区域并在编码器控制信息310中指示该区域的范围。
[0046]编码引擎302可随后使用此区域信息以限制或消除专用于将此帧的一部分编码的位和/或处理周期,该部分包含将由所述可替代内容所遮挡(occlude)的内容。这可通过减少可替代内容区域中的量化参数(QP)值、或通过基于可替代内容区域减少运动矢量搜索范围来达成。
[0047]本申请相关领域的技术人员应理解的是,可对所描述的实施例进行其他和进一步的附加、删除、替换和修改。
【权利要求】
1.一种视频编码系统,包括: 编码引擎,配置为接收表示视频数据的帧的信号并产生与所述视频数据的帧相关的经编码信息;以及 变换函数,耦连到所述编码引擎并配置为: 接收表示内容信息的信号,所述内容信息与所述视频数据的帧的内容相关, 将所述内容信息变换成编码器控制信息,以及 使用所述编码器控制信息控制所述编码引擎的操作。
2.根据权利要求1所述的视频编码系统,其中: 所述变换函数配置为从所述编码器控制信息确定初始运动矢量值;以及 所述编码引擎配置为基于所述初始运动矢量值确定运动矢量。
3.根据权利要求2所述的视频编码系统,其中: 所述内容信息包括摄像机运动、投影矩阵以及Z-缓冲区信息中的至少一个;以及所述变换函数配置为使用所述摄像机运动、投影矩阵以及Z-缓冲区信息中的所述至少一个确定所述初始运动矢量值。
4.根据权利要求1所述的视频编码系统,其中: 所述变换函数配置为基于所述内容信息检测所述视频数据的帧中的边缘;以及所述编码引擎配置为将所述经编码信息中的位和所述编码过程中的处理器周期中的至少一个分配到所述视频数据的帧的区域,所述分配基于所述经检测的边缘。
5.根据权利要求4所述的视频编码系统,其中: 所述内容信息包括Z-缓冲区信息;以及 所述变换函数配置为将所述Z-缓冲区信息滤波以检测边缘。
6.根据权利要求1所述的视频编码系统,其中: 所述内容信息包括亮度斜坡信息;以及 所述变换函数配置为基于所述亮度斜坡信息,使所述编码引擎进行以下内容中的至少一个:分配所述经编码信息中的位和实施所述视频数据的帧的多参考帧评估。
7.根据权利要求1所述的视频编码系统,其中: 所述内容信息包括可替代内容区域信息;以及 所述变换函数配置为基于所述可替代内容区域信息,使所述编码引擎进行以下内容中的至少一个:调整量化参数值和减少运动矢量搜索范围。
8.一种产生经编码的视频流的三维(3D)建模系统,所述系统包括: 内容引擎; 渲染器,耦连到所述内容引擎并配置为从所述内容引擎接收与3D模型相关的信息并产生相对应的二维(2D)图像;以及 视频编码器,耦连到所述渲染器并配置为接收来自所述渲染器的所述2D图像并产生相对应的经编码的视频流, 其中所述编码器进一步配置为从所述内容引擎接收与所述2D图像相关的内容信息、将所述内容信息变换成编码器控制信息以及根据所述编码器控制信息控制所述2D图像的编码。
9.根据权利要求8所述的3D建模系统,其中:所述内容信息包括摄像机运动、投影矩阵以及Z-缓冲区信息中的至少一个;以及 所述视频编码器配置为: 使用所述摄像机运动、投影矩阵以及Z-缓冲区信息中的所述至少一个确定初始运动矢量值;以及 基于所述初始运动矢量值确定运动矢量。
10.根据权利要求8所述的3D建模系统,其中所述视频编码器配置为: 基于所述内容信息检测所述视频数据的帧中的边缘;以及 将所述经编码信息中的位和所述编码过程中的处理器周期中的至少一个分配到所述视频数据的帧的区域,所述分配基于所述经检测的边缘。
【文档编号】H04N19/61GK103716643SQ201310460985
【公开日】2014年4月9日 申请日期:2013年9月30日 优先权日:2012年10月1日
【发明者】哈桑·S·阿扎尔, 戴维·帕荣克, 斯瓦格特·莫哈帕特拉, 斯特凡·埃卡特, 布里尔·杜达什 申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1