视频内容分类的制作方法

文档序号:11532837阅读:424来源:国知局
视频内容分类的制造方法与工艺

本公开一般地涉及数据压缩。



背景技术:

在计算机网络上发送大量视频数据受视频数据的大小和计算机网络连接的吞吐量约束。在发送数据前对视频数据进行压缩能够产生更快的传输。各种传统的压缩算法是可用的。然而,在视频的一部分上工作良好的压缩算法在被使用在视频的另一部分上时,可能产生无法接受的质量。用于在计算机网络上发送视频数据的传统的系统可以选择使用较少压缩以保持质量的低数据压缩率算法。然而,低数据压缩率产生较大尺寸的压缩后的数据。为了补偿,系统可以减少视频帧率来每秒发送较少的帧。



技术实现要素:

视频内容分类系统对输入视频数据逐帧地进行分类。视频内容分类系统在每一个帧上执行定制的离散余弦变换(dct)操作。视频内容分类系统随后基于dct操作的结果确定该帧中多少图像信息可能由于压缩而损失。如果估计该损失低于阈值,则视频内容分类系统应用高数据压缩率算法来对该帧进行压缩。否则,视频内容分类系统应用低数据压缩率算法来对该帧进行压缩。视频内容分类系统可以生成被逐帧不同地压缩的输出视频数据。

在本说明书中所述的特征可以被实现来达成一个或多个优势。例如,在一些情况下,在本说明书中所述的技术可以在不牺牲视频质量的情况下最大化数据压缩率,该数据压缩率是未压缩的数据与压缩后的数据之间的比率。通过对视频采用多种压缩算法,视频内容分类系统能够避免必须在损失帧率、损失质量和大的结果数据大小之间折中。这些折中在传统的视频压缩系统中是常见的。

视频内容分类系统使用高效算法来对视频内容进行分类。分类的开销可以最小,并且该算法足够快以便实时应用。

在下面的附图和描述中阐述了本主题的一个或多个实现的细节。从下面的描述、附图以及权利要求,本主题的其他特征、方面和优势将变得显而易见。

附图说明

图1是示出示例视频内容分类系统的操作的示图。

图2是示出示例视频内容分类系统的示例部件以及部件的交互的框图。

图3示出了选择视频内容以执行分类的示例技术。

图4是示出选择像素块以用于进行分类的示例技术的示图。

图5是示出视频内容分类的过程的示例的流程图。

图6是示出确定视频中帧的信息损失分数的过程的示例的流程图。

图7是用于实现图1到图6的特征和操作的系统架构的示例的框图。

具体实施方式

如图1中所示,视频内容分类系统102从视频数据源106接收视频数据104。视频数据源106可以是显示设备(例如计算机屏幕)的显示缓冲器。显示缓冲器可以以例如50hz或60hz帧率被刷新。视频数据104可以包括具有高可压缩性的内容(例如电影),该内容在使用基于dct的压缩算法进行压缩之后不会明显劣化,其中基于dct的压缩算法例如联合图像专家组(jpeg)压缩算法或动态图像专家组(mpeg)压缩算法。

视频数据104包括帧序列,例如帧108a、110a和112a。每一个帧可以对应于整个屏幕的显示内容或者该内容的一部分。在给定时刻,整个屏幕的显示内容可以由单个帧表现,或者由多个独立的帧表现。例如,正在播放的电影可以占据整个屏幕或者屏幕的电影窗口部分。屏幕可以显示多个窗口。每一个窗口可以具有各自的不同的帧序列。每一个帧序列可以与指定该帧序列位于屏幕上的何处的位置信息相关联。

每一个帧包括图像,该图像对应于在给定时刻显示缓冲器的内容的至少一部分。该图像可以由例如多个数字像素表现。每一个像素分别包括颜色分量的值,例如红色、绿色和蓝色的强度。

一些帧(例如帧108a和112a)可能是比其他帧(例如包含文本的帧110a)更加可压缩的电影帧。当被相同的基于dct的压缩算法压缩时,从帧108a所得的图像将比从帧110a所得的图像损失更少的信息。视频内容分类系统102为帧108a、110a和112a中的每一者确定信息损失分数,该信息损失分数衡量帧108a、110a和112a中的每一者有多么可压缩。较低的信息损失分数指示压缩后较低的信息损失以及较高的可压缩性。例如,当使用基于dct的压缩算法由给定数据压缩率(例如2比1)压缩时,帧108a可能不会具有显著的信号损失。所得的压缩后的图像可能视觉上没有改变。因此,帧108a具有低信息损失分数并且可以被指定为具有高可压缩性。相比之下,当使用相同的基于dct的压缩算法以相同的数据压缩率压缩时,帧110a可能具有显著的信号损失并且可能显著地恶化。因此,帧110a具有高信息损失分数并且可以被指定为具有低可压缩性。在下面参考图6描述了关于如何确定帧的信息损失分数的额外细节。

视频内容分类系统102根据帧108a、110a和112a各自的信息损失分数对帧108a、110a和112a不同地进行压缩。对具有低信息损失分数的帧(例如帧108a或帧112a),视频内容分类系统102使用具有高数据压缩率的压缩算法(例如基于dct的压缩算法)执行压缩或者引发外部的压缩器来执行压缩。对具有高信息损失分数的帧,视频内容分类系统102使用无损的基于非dct的压缩算法或者具有低数据压缩率的基于dct的压缩算法来执行压缩或者引发外部的压缩器来执行压缩。该“高”数据压缩率和“低”数据压缩率是相对于帧108a、110a和112a中的内容而言的。可能的是,低数据压缩率算法造成高于使用高数据压缩率算法所达到的最终数据压缩率的最终数据压缩率。

视频内容分类系统102生成压缩后的视频数据114。压缩后的视频数据114包括压缩后的帧108b、110b和112b的序列,帧108b、110b和112b分别对应于原始的帧108a、110a和112a。视频内容分类系统102随后可以通过计算机网络118将压缩后的视频数据114发送到远程显示系统116用于显示。

图2是示出视频内容分类系统102的示例部件以及部件之间的交互的框图。视频内容分类系统102的每一个部件可以包括硬件(例如处理器)、软件(例如计算机指令)或者硬件和软件两者。

视频内容分类系统102包括帧处理机202。帧处理机202是视频内容分类系统102的、被配置来从视频数据源106接收视频数据204的部件。视频数据204包括多个帧。帧处理机202选择并处理视频数据204中的每一个帧的子部分,并将处理后的子部分206提交给dct运算器208以进一步处理。下面参考图3-图4描述了选择和处理帧的子部分的额外细节。

dct运算器208是视频内容分类系统102的如下部件:被配置来通过在帧的处理后的子部分206上执行定制的dct操作来计算每一个帧的信息损失分数。为了加速计算,dct运算器208可以使用预先运算的常数表210。dct运算器208将信息损失分数标签于每一个各自的帧,从而生成已标签的帧212。dct运算器208将已标签的帧212提交给帧分类器214以进行分类。下面参考图6描述了dct运算器208的操作与常数表210的额外细节。

帧分类器214是视频内容分类系统102的如下部件:被配置来基于与每一个帧相关联的信息损失分数对该帧进行分类。帧分类器214基于一个或多个压缩阈值216来执行分类。例如,在确定帧218的信息损失分数低于预定的压缩阈值216时,帧分类器214将帧218分类为电影帧。类似地,在确定帧220的信息损失分数高于压缩阈值216时,帧分类器214将帧220分类为图形用户界面帧或文本帧。帧分类器214可以将该电影帧218和该图形用户界面帧220提交给一个或多个压缩器222。

(多个)压缩器222可以是视频内容分类系统102的部件或者是耦合于视频内容分类系统102的分离的系统。(多个)压缩器222通过应用不同的压缩算法或使用不同的数据压缩率来与图像用户界面帧220不同地对电影帧218进行压缩。(多个)压缩器222随后将压缩后的帧218和220以及其他压缩后的帧缝合成压缩后的视频224,该压缩后的视频224适合于在计算机网络上传输。

图3示出了选择视频内容以执行分类的示例技术。显示屏幕300显示帧301。帧301是视频数据的帧序列中的帧。帧301可以包括例如电影内容以及与该电影内容无关的伪像(artifact)。伪像可以包括以下中的一个或多个:静态边框302、顶部信箱蒙版(matte)304、底部信箱蒙版306、水印308或者字幕310。

帧处理机(例如图2的帧处理机202)选择帧301的子部分312以用于计算帧301的信息损失分数。系统可以选择位于帧301的中心处并且覆盖帧301的预定比率(例如高度中的x%与宽度中的y%)的子部分312来避开伪像。

此外,显示屏幕300可以独立于显示帧301而显示帧314。帧314可以是电影帧、图形用户界面帧或者文本帧。系统可以从帧314选择内容,并且与处理帧301同时地并且分离地对帧314进行分类。系统可以存储帧301和帧314的位置,用于渲染压缩后的帧。

图4是示出选择像素块以用于进行分类的示例技术的示图。帧处理机将帧301的子部分312划分为多个像素块。每一个像素块可以被指定为宏块。每一个像素块可以是m个像素宽和n个像素高的。在一些实现中,m和n每一个都具有为8的值。

帧处理机随后确定最影响人类心理视觉系统的像素颜色分量。对分解为红色分量、绿色分量和蓝色分量的像素,系统可以为每一个宏块中的像素选择绿色分量值。对分解为亮度分量和色度分量的像素,帧处理机可以选择亮度分量。(图2的)dct运算器208随后使用每一个宏块的已选择的像素颜色分量来计算帧301的信息损失分数。参考图6描述了该运算的额外细节。

图5是示出视频内容分类的过程500的示例的流程图。过程500可以由图2的视频内容分类系统102执行。

系统从视频数据源接收(502)视频数据。该视频数据包括一个或多个帧序列。每一个帧包括具有多个像素的图像。每一个帧序列可以对应于显示在显示屏幕上的内容的至少一部分。

系统从每一个帧中选择(504)多个像素块。选择块包括确定每一个各自的帧的代表各自的帧中的图像的子部分。此外,选择块包括选择位于各自的帧的子部分中的像素块。帧的子部分可以是该帧的位于该帧的中心处的一部分。

系统计算(506)每一个帧的各自的信息损失分数。该信息损失分数指示在使用第一压缩算法对各自的帧进行压缩时各自的帧中的图像中的信息的估计的损失程度。第一压缩算法可以是基于dct的压缩算法,例如jpeg算法或mpeg算法。

在所示的示例中,系统确定(508)帧序列中的第一帧的信息损失分数满足压缩阈值,例如0≤g[1]≤t,其中g[1]是第一帧的信息损失分数,而t是压缩阈值。此外,系统确定帧序列中的第二帧的信息损失分数不满足压缩阈值,例如g[2]>t,其中g[2]是第二帧的信息损失分数。系统随后可以确定第一帧具有高可压缩性而第二帧具有低可压缩性。

系统可以通过执行校准操作来确定压缩阈值t。例如,系统可以计算一组预先选择的不同类型的视频中的帧的信息损失分数。系统可以为每一个类型的视频(例如电影、图形、文本或混合体)确定代表性信息损失分数。系统随后基于不同类型的视频的不同信息损失分数确定压缩阈值。

基于信息损失分数是否满足压缩阈值,系统使用第一压缩算法对具有高可压缩性的第一帧进行压缩,并且使用不同于第一压缩算法的第二压缩算法来对具有低可压缩性的第二帧进行压缩(510)。例如,第二压缩算法可以是无损压缩算法或者是具有低于第一压缩算法的数据压缩率的数据压缩率的基于dct的压缩算法。

系统随后提交(512)压缩后的第一帧和压缩后的第二帧,以渲染为输出视频中的连续帧序列以显示在显示设备上。压缩后的第一帧和压缩后的第二帧可以通过计算机网络被提交给显示设备。当压缩后的第一帧和压缩后的第二帧表现不同内容(例如同一显示屏幕上的不同窗口)时,系统可以根据原始的第一帧和原始的第二帧所占据的位置,将压缩后的第一帧和压缩后的第二帧放置在显示屏幕上各自的位置处。

图6是示出确定视频中帧的信息损失分数的过程506的示例的流程图。系统通过将dct操作应用到帧的每一个已选择的像素块,为该像素块确定(602)各自的频域数据。

系统使用每一个像素的各自的像素值来确定(604)每一个像素块的最高频率dct系数。每一个块是包括二维像素阵列的宏块。每个像素的像素值是该像素的被确定为最大地影响人类心理视觉系统的颜色分量。例如,如果该像素被分解为红色、绿色和蓝色,则系统选择绿色分量。如果该像素被分解为亮度和色度,则系统选择亮度分量。系统随后指定已选择的绿色分量或亮度分量为该像素的像素值。

系统在宏块的已选择的像素值上计算二维dct的最高频率dct系数。系统使用定制的dct操作来计算最高频率dct系数,该定制的dct操作被优化用于实时视频内容分类。例如,系统可以被配置来仅仅计算对应于最高水平空间频率和最高垂直空间频率的一个或两个dct系数,并且丢弃其他dct系数。系统可以从传统的dct操作排除用于计算dc系数和较低频率ac系数的那些操作。

在一些实现中,例如当每一个宏块是8像素宽和8像素高时,系统可以通过执行以下的ⅱ型dct运算来避免dct系数的归一化。

在运算(1)中,n是为其运算dct系数的宏块的索引。每一个都从0到7变化的值x和值y是对于宏块n的像素的水平坐标和垂直坐标。值gx,y是对于宏块n在坐标(x,y)处的像素值。值gn是宏块n的非归一化最高频率dct系数。

在一些实现中,系统将运算(1)的两个余弦项预先计算成图2的常数表210。该常数表是二维数组c,其中在数组c中的位置x,y处的值cx,y是如下运算的。

系统随后使用如下的像素值与常数表中的值的逐元素乘积的求和来计算宏块n的非归一化最高频率dct系数。

系统基于帧中像素块的最高频率dct系数来确定(606)该帧的信息损失分数。系统可以将对每一个n都具有最大绝对值的帧中像素块的最高频率dct系数gn指定为该帧的信息损失分数g。帧的信息损失分数g可以如下运算。

g=max(|g0|,|g1|,...|gn|)(4)

在确定帧具有较高的g值时,系统可以确定在此帧中存在较强的高频率信号。在确定帧具有较低的g值时,系统可以确定在此帧中存在较弱的高频率信号。

图7是示出用于实现图1到图6的特征和操作的系统架构的示例的框图。其他架构是可能的,包括具有更多或更少部件的架构。在一些实现中,架构700包括一个或多个处理器702(例如双核处理器)、一个或多个输出设备704(例如通向lcd监视器的接口)、一个或多个网络接口706、一个或多个输入设备708(例如鼠标、键盘、触摸敏感显示器、或者遥控器)以及一个或多个计算机可读介质712(例如ram、rom、sdram、硬盘、光盘、闪存存储器等)。这些部件可以在一个或多个通信通道710(例如总线)上交换通信和数据,一个或多个通信通道710可以利用各种硬件和软件来促进部件之间的数据和控制信号的传送。

术语“计算机可读介质”指参与向处理器702提供用于执行的指令的任何介质,包括但不限于非易失性介质(例如光盘或磁盘)、易失性介质(例如内存)和传输介质。传输介质的示例包括但不限于同轴电缆、铜电线以及光纤。

计算机可读介质712可以进一步包括操作系统714(例如mac服务器、windows或者)、网络通信模块716、校准指令720、内容分类指令730以及压缩指令740。操作系统714可以是多用户的、多进程的、多任务的、多线程的、实时的,等等。操作系统执行基本任务,包括但不限于:识别来自设备706、708的输入并且向设备706、708提供输出;保持追踪并管理计算机可读介质712(例如内存或存储设备)上的文件和路径;控制外围设备;以及管理一个或多个通信通道710上的流量。网络通信模块716包括用于建立和维持网络连接的各种部件(例如用于实现诸如tcp/ip、http等通信协议的软件)。校准指令720可以包括在被执行时引发处理器702执行确定压缩阈值的操作的计算机指令。内容分类指令730可以包括被执行时引发处理器702执行以下操作的计算机指令:选择帧的子部分、计算数据损失分数以及如果该帧的数据损失分数低于压缩阈值就将该帧分类为可压缩的或者如果该帧的数据损失分数高于压缩阈值就将该帧分类为不可压缩的。压缩指令740可以包括在被执行时引发处理器702使用基于dct的压缩算法或其他压缩算法来执行帧压缩的计算机指令。

例如,架构700可以被实现在并行处理的基础设施或点对点的基础设施中,或者被实现在具有一个或多个处理器的单一设备上。软件可以包括多个软件部件,或者可以是单一代码体。

所述特征可以有益地实现在一个或多个计算机程序中,该一个或多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行的,该至少一个可编程处理器被耦合来从数据存储系统、至少一个输入设备和至少一个输出设备接收数据和指令,并且被耦合来向该数据存储系统、该至少一个输入设备和该至少一个输出设备发送数据和指令。计算机程序是指令的集合,该指令的集合在计算机中可以被直接地或者间接地使用以执行特定活动或者造成特定结果。计算机程序可以以任意形式的编程语言(例如c、sql或者java)写成,该编程语言包括汇编语言或者解释性语言,并且计算机程序可以以任意形式被部署,包括作为独立的程序或作为模块、部件、子程序、基于浏览器的网络应用或者适合用在计算环境中的其他单元。

举例而言,用于指令程序的执行的合适的处理器包括任意种类的计算机中的通用微处理器和专用微处理器两者、以及单一处理器或者多个处理器或核中的一个。通常而言,处理器将从只读存储器或随机存取存储器或者这两者接收指令和数据。计算机的关键元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器。通常而言,计算机也将包括一个或多个用于存储数据文件的海量存储设备,或者在操作上耦合以与一个或多个用于存储数据文件的海量存储设备通信;这样的设备包括磁盘(诸如内部硬盘和可移除盘)、磁光盘以及光盘。适合用于可触知地体现计算机程序指令和数据的存储设备包括所有形式的非易失性存储器(举例而言包括诸如eprom、eeprom和闪存存储设备的半导体存储设备)、磁盘(诸如内部硬盘和可移除盘)、磁光盘以及cd-rom盘和dvd-rom盘。处理器和存储器可以被辅以asic(专用集成电路)或者结合在asic中。

为了提供与用户的交互,可以在具有显示设备与键盘和定点设备的计算机上实现各种特征,该显示设备诸如crt(电子射线管)监视器或者lcd(液晶显示)监视器以用于向用户显示信息;该定点设备诸如鼠标或轨迹球;通过该键盘和定点设备,用户可以向计算机提供输入。

这些特征可以被实现在计算机系统中,该计算机系统包括诸如数据服务器的后端部件,或者包括诸如应用服务器或者互联网服务器的中间部件,或者包括诸如具有图形用户界面或互联网浏览器的客户端计算机的前端部件,或者包括它们的任意组合。系统的部件可以通过任何形式或介质的数字数据通信(诸如通信网络)连接。通信网络的示例包括例如lan、wan、pan以及形成互联网的计算机和网络。

计算机系统可以包括客户端和服务器。客户端和服务器通常彼此远离并且一般通过网络交互。客户端和服务器的关系凭借运行在各自的计算机上并且彼此具有客户端-服务器关系的计算机程序而成立。

尽管以上描述了具体的实现,但也可以做出各种修改。在本说明书中,“第一”和“第二”的使用并不必然指示帧或操作的特定次序。因此,其他实现在权利要求的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1