使用选择界面将横向视频转换成纵向移动布局的方法与流程

文档序号:21368872发布日期:2020-07-04 04:44阅读:381来源:国知局
使用选择界面将横向视频转换成纵向移动布局的方法与流程

相关申请的交叉引用

本申请要求于2017年12月05日提交的标题为“将横向视频转换成纵向移动布局的方法”的pct/us2017/064719的权益和优先权,该申请要求于2016年12月05日提交的标题为“将横向视频转换成纵向移动布局的方法”的pct/us2016/065025的权益和优先权,其全部内容通过引用结合于此。



背景技术:

在诸如互联网或其他网络的联网环境中,第一方内容提供商可以在诸如网页、文档、应用和/或其他资源的资源上提供用于公共呈现的信息。第一方内容可以包括由第一方内容提供商经由资源服务器提供的文本、视频和/或音频信息,以用于通过互联网呈现在客户端设备上。以宽的纵横比(aspectratio)录制的视频和类似媒体可能被设计为在桌面上或以横向(landscape)朝向观看,它们可能无法直接全屏显示在以垂直或纵向(portrait)朝向握持的移动设备上,并且通常会被裁剪到中心,丢失视频左右边缘的细节,或者在顶部和底部被黑条包围,从而减小视频的显示尺寸。在许多应用中,垂直朝向媒体是用于观看和显示媒体的流行格式。由于许多视频和其他媒体仅以宽的纵横比布局来录制,因此该布局存在大量库存,而发布者对纵向布局的需求的需求日益增加。



技术实现要素:

大多数媒体可能处于横向维度,而不是处于纵向维度。相比之下,大多数移动电话上的显示器可能较高而非较宽,因此可能更适合处于纵向维度的内容。这样,当横向维度的媒体以纵向维度呈现在显示器上时,媒体周围可能有大量的负空间(negativespace)。消除负空间的技术可以包括裁剪横向维度的媒体以适应纵向维度。媒体中的每个帧都可以基于帧内识别的特征来进行裁剪。检测到的特征可以包括面部跟踪、对象检测和/或识别、文本检测、主色检测、运动分析、场景变化检测和图像显著性。然而,帧中多个显著特征的识别可能使得对媒体的裁剪包括与观众无关的其他特征。次优的裁剪可能导致需要重新生成裁剪的媒体。

为了解决次优的裁剪,本技术可以利用对显著特征的人类辅助标记来裁剪媒体。在一个实施方式中,系统可以应用场景边界检测算法来识别媒体的场景。图形用户界面可以允许用户针对每个识别的场景来标记与媒体的帧中的显著特征相对应的坐标。计算设备可以依据由用户标记的坐标来识别显著特征。

之后,系统可以遍历该场景的媒体帧,以使用各种图像对象识别算法来识别其他特征。对于其他识别的特征中的每一个,系统可以计算权重。然而,由用户标记的特征可以被分配最高的权重。系统可以基于由用户标记的特征的权重和由对象识别算法识别的其他特征的权重,将媒体的特征裁剪到移动计算设备的显示器的纵向维度的尺寸。

这个过程可以重复多次以获得处于纵向维度的媒体。虽然现有技术可能已经导致次优的裁剪并且随后需要重新生成裁剪的媒体,但是本技术提供了改进的用户界面,该用户界面允许用户更高效地生成视频。通过在该过程中获得用户输入,本技术可以允许更相关的媒体,从而更快地获得更准确的媒体并减少需要重新生成媒体的次数。通过为由用户标记的特征赋予更高的权重,这可以有助于确保由系统应用于其他所识别的特征的权重不会对裁剪的媒体产生负面影响。此外,虽然主要关于从纵向视频到横向视频的裁剪或转换来进行描述,但是相同的技术可以用于从横向视频到纵向视频的裁剪或转换,诸如用于垂直显示器、用于移动电话消费的传统内容的转换等。

附图说明

在附图和下面的描述中阐述了一个或多个实施方式的细节。根据说明书、附图和权利要求,本公开的其他特征、方面和优点将变得清楚,其中:

图1是描绘用于媒体从一个朝向到另一朝向的自动转换的环境的实施方式的框图。

图2a是描绘在一个用例的实施方式中裁剪单个媒体帧的图示。

图2b是描绘在一个用例的实施方式中基于定界(bounding)框的选择来裁剪单个媒体帧的图示。

图2c和图2d是描绘用于使用选择数据来裁剪媒体帧的应用的图形用户界面的框图。

图3是描绘被配置用于媒体预处理、媒体分析和对接收的媒体的裁剪的软件和/或硬件模块的实施方式的框图。

图4是描绘一种裁剪媒体帧的方法的实施方式的流程图。

图5是描绘一种通过确定多个区域中的每个区域的分数来裁剪媒体帧的方法的实施方式的流程图。

图6是描绘一种基于特征的移动来生成或更新分数的方法的实施方式的流程图。

图7是描绘一种使用接收的元数据来裁剪媒体帧的方法的实施方式的流程图。

图8是描绘一种基于朝向变化来调整裁剪的方法的实施方式的流程图。

图9是描绘一种使用选择数据反复(iteratively)裁剪媒体帧的方法的实施方式的流程图。

图10是描绘一种计算系统的一般架构的框图,该架构可以用于实施本文描述和示出的系统和方法的各种元素。

将认识到,出于说明的目的,附图中的一些或全部是示意性表示。提供附图的目的是为了说明一个或多个实施方式,明确地理解它们将不被用于限制权利要求的范围或含义。

具体实施方式

以下是与用于在计算机网络上提供信息的方法、装置和系统相关的各种构思和其实施方式的更详细描述。上面介绍的和下面更详细讨论的各种构思可以以多种方式中的任何一种来实施,因为所描述的构思不限于任何特定的实施方式。提供各种实施方式和应用主要是为了说明的目的。

“非智能(dumb)”地裁剪到图像或视频的中心是基于一个假设,即视频或图像的最重要的内容出现在图像的中心。这可能是不正确的,因为重要内容可能会偏离中心,诸如屏幕底部的文本或位于帧中水平“三分之一”位置的人。显示一个人进入房间的视频可能包括人从帧的一边进入,而该帧的其余部分是静止的,或者两个人交谈的视频可能将每个人放置在帧的两边并且他们之间有空白空间。在这种情况下应用中心裁剪可能会得到空的房间或空白空间,这可能会使观众感到困惑和失望。

因此,本文公开了用于智能或“智慧”裁剪的系统和方法,以自动转换处于横向模式的视频或图像来适应于纵向模式,反之亦然,同时保持全屏,而不仅仅应用“非智能”裁剪或中心裁剪或向顶部/底部添加填充。转换可以包括针对每个帧检测图像或视频的重要的部分(例如,特征)。基于所识别的重要区,可以智能地裁剪或填充图像或视频以保留重要特征,同时丢弃不重要的区域、静态边界等。检测到的特征可以包括面部跟踪、对象检测和/或识别、文本检测、主色检测、运动分析、场景变化检测和图像显著性。检测和识别可以使用基于深度学习的方法和算法。文本检测可以使用光学字符识别(ocr)。特征检测允许最优裁剪路径。本发明的其他方面可以包括填充图像以匹配背景颜色,以及移除和/或重新格式化任何边界以适应新的显示模式。虽然主要是针对视频来讨论的,但是在许多实施方式中,系统可以应用于单独的图像或帧。

图1是用于通过网络106将视频从一个朝向自动转换到另一朝向的环境100的实施方式的框图。网络106可以包括局域网(lan)、广域网(wan)、电话网(诸如公共交换电话网(pstn))、无线链路、内联网、互联网或其组合。环境100还包括移动设备102。在一些实施方式中,移动设备102包括处理器122、数据存储装置124、网络接口126、显示器128、输入/输出模块130、传感器模块132和媒体模块134。传感器模块132可以包含用于检测计算设备的朝向的传感器(例如,加速度计和/或磁力计)以及包含在许多移动设备中的其他类似传感器。处理器122可以包括微处理器、专用集成电路(asic)、现场可编程门阵列(fpga)等或其组合。数据存储装置124可以包括但不限于电子、光学、磁性存储装置或传输设备或能够向处理器提供程序指令的任何其他存储装置或传输设备。存储器可以包括软盘、光盘只读存储器(cd-rom)、数字多功能盘(dvd)、磁盘、存储器芯片、只读存储器(rom)、随机存取存储器(ram)、电可擦除可编程只读存储器(eeprom)、可擦除可编程只读存储器(eprom)、闪存、光学介质或处理器122可以从中读取指令的任何其他合适的存储器。这些指令可以包括来自任何合适的计算机编程语言的代码,所述计算机编程语言诸如但不限于c、c++、c#、html、xml、和visual

移动设备102可以包括被配置为经由网络106与其他设备进行通信的一个或多个设备,诸如计算机、膝上型计算机、智能电话、平板计算机、个人数字助理。该设备可以是包括数据处理器和存储器的任何形式的便携式电子设备。数据存储装置124可以存储机器指令,当由处理器运行时,该机器指令使得处理器执行本文描述的操作中的一个或多个操作。数据存储装置124还可以存储数据以实现一个或多个资源、内容项目等在计算设备上的呈现。处理器可以包括微处理器、专用集成电路(asic)、现场可编程门阵列(fpga)等或其组合。数据存储装置124可以包括但不限于电子、光学、磁性存储装置或传输设备或能够向处理器提供程序指令的任何其他存储装置或传输设备。数据存储装置124可以包括软盘、光盘只读存储器(cd-rom)、数字多功能盘(dvd)、磁盘、存储器芯片、只读存储器(rom)、随机存取存储器(ram)、电可擦除可编程只读存储器(eeprom)、可擦除可编程只读存储器(eprom)、闪存、光学介质或处理器可以从中读取指令的任何其他合适的存储器。这些指令可以包括来自任何合适的计算机编程语言的代码,所述计算机编程语言诸如但不限于c、c++、c#、html、visual和xml。

移动设备102可以运行软件应用(例如,网络浏览器或其他应用),以通过网络106从其他计算设备检索内容。这种应用可以从媒体服务器系统104检索第一方内容。在一些情况下,在移动设备102上运行的应用本身可以是第一方内容(例如,游戏、媒体播放器等)。在一个实施方式中,移动设备102可以运行网络浏览器应用,该应用在客户端设备的显示器上提供浏览器窗口。提供浏览器窗口的网络浏览器应用可以通过从输入设备(例如,定点设备、键盘、触摸屏或另一形式的输入设备)接收统一资源定位符(url)(诸如网址)的输入来进行操作。作为响应,运行来自网络浏览器应用的指令的客户端设备的一个或多个处理器可以从连接到网络106的另一设备(例如,媒体服务器系统104)请求数据,其中该另一设备由url地址指代。该另一设备然后可以向移动设备102提供网页数据和/或其他数据,这使得移动设备102的显示器显示可视记号(indicia)。因此,浏览器窗口显示检索到的第一方内容,诸如来自各种网站的网页,以便于与第一方内容的用户交互。

在一些实施方式中,移动设备102的媒体模块134可以接收多个媒体帧和相关联的元数据。媒体可以包括视频(例如,视频帧)、图像、照片、渲染内容、全景内容、三维内容或任何其他类型和形式的可视媒体内容,并且可以伴随有音频内容。媒体可以通过网络接口126接收并存储在数据存储装置124中。在一些实施方式中,媒体帧作为流媒体数据的一部分被接收。流媒体可以通过网络接口146接收。在一些实施方式中,媒体模块134可以基于接收的元数据来识别帧中的区域。在一些实施方式中,媒体模块134可以基于该区域来裁剪媒体帧。在一些实施方式中,所裁剪的区域还基于媒体帧之前和/或之后的媒体帧中的一个或多个媒体帧。

在一些实施方式中,移动设备102的媒体模块134可以从一个或多个传感器模块132接收朝向变化的指示。在一些实施方式中,媒体模块134可以基于朝向变化来动态地调整对播放媒体的裁剪。

媒体服务器系统104可以包括处理器142、数据存储装置144、网络接口146、内容选择模块148、媒体裁剪模块150、元数据模块152和媒体内容数据库154。在一些实施方式中,媒体服务器系统104的内容选择模块148可以从媒体内容数据库154中选择媒体。在一些实施方式中,媒体裁剪模块150可以预处理媒体,分析媒体的特征和/或对象,并且基于对特征和/或对象的分析来裁剪媒体。在一些实施方式中,元数据模块152可以基于预处理媒体、分析媒体的特征和/或对象、以及确定目标纵横比或分辨率的裁剪路径,来提取数据。虽然在媒体服务器系统104上示出,但是在许多实施方式中,媒体裁剪模块150可以在一个或多个移动设备102上运行。

媒体服务器系统104可以包括媒体裁剪模块150。在一些实施方式中,媒体裁剪模块150可以预处理媒体,分析媒体的特征和/或对象,并且基于对特征和/或对象的分析来裁剪媒体。在一些实施方式中,媒体裁剪模块150可以基于目标纵横比的一个或多个值是否小于正被分析的媒体帧的纵横比的当前值来确定是否需要进行裁剪。在一些实施方式中,只有当目标分辨率的一个或多个值小于媒体帧的分辨率的当前值时,媒体裁剪模块150才可以裁剪媒体帧。在一些实施方式中,媒体裁剪模块150可以裁剪媒体以匹配目标纵横比或匹配目标分辨率。媒体裁剪模块150可以向裁剪的媒体帧的一个或多个边添加附加的填充,以匹配目标纵横比或匹配目标分辨率。在一些实施方式中,媒体裁剪模块150还可以使得裁剪区域基于在被裁剪的当前媒体帧之前和/或之后的媒体帧中的一个或多个。在一些实施方式中,媒体裁剪模块150可以包括超过阈值的一个或多个区域。在一些实施方式中,当媒体裁剪模块150在裁剪媒体帧时正在确定要包括的区域时,媒体裁剪模块150可以至少包括分数超过阈值的多个区域中的一个或多个区域。

在一些实施方式中,元数据模块152可以基于预处理媒体、分析媒体的特征和/或对象、以及确定目标纵横比或分辨率的裁剪路径来提取数据。在一些实施方式中,元数据模块152可以接收元数据作为包含多个媒体帧的媒体文件的一部分。在一些实施方式中,元数据模块152可以独立地接收元数据,以及将元数据与接收的多个媒体帧关联起来的标识符或其他数据。在一些实施方式中,元数据模块152可以分析元数据,以确定有关于与关联于媒体的媒体帧中的一个或多个相关联的区域的数据部分。在一些实施方式中,元数据模块152可以提取包括在元数据中的、针对多个媒体帧中的每个媒体帧的一个或多个区域的定界信息。在一些实施方式中,元数据模块152可以提取多个媒体帧中的每个媒体帧内的、一个或多个特征的位置。特征可以包括对象(诸如汽车、建筑物、人、动物、街道标志等)、文本、媒体帧的边界、媒体帧的一个或多个边的均匀颜色填充等。在一些实施方式中,元数据模块152可以识别多个媒体帧中的一个或多个媒体帧的多个特征和/或区域。在一些实施方式中,元数据模块152可以将接收的元数据与目标纵横比或目标分辨率关联起来。

图2a描绘了在用例的实施方式中裁剪单个媒体帧。输入图像202可以如图所示处于水平或横向朝向。一旦输入图像202被处理以检测输入图像202的重要对象和/或特征,包含重要对象和/或特征的区域就可能被保留到生成输出图像204时。在图2a中,以显示在移动设备102上的垂直或纵向朝向示出输出图像204。在该用例的实施方式的这种描述中,面部特征在输入图像202中被识别,并且包括面部特征的区域被保留在显示在移动设备102上的输出图像204中。

图2b描绘了在用例的实施方式中裁剪单个媒体帧。输入图像206可以如图所示处于水平或横向朝向。输入图像206可以被确定为具有多个特征:自行车上的人物208a和两个人物208b。定界框210可以用于选择包含自行车上的人物208a的矩形区域。一旦具有定界框210的输入图像206被处理,包含自行车上的人物208a的选定特征的区域可能被保留到生成输出图像212时。如图2b所示,以显示在移动设备102上的垂直或纵向朝向示出输出图像212。在该用例的实施方式的描述中,使用定界框210而选择的自行车上的人物208a被保留在显示在移动设备102上的输出图像204中。

图2c和图2d示出了用于使用选择数据来裁剪媒体帧的应用220的图形用户界面。在图1的上下文中,应用220可以是媒体裁剪模块150的一部分,并且可以由媒体裁剪模块150提供。应用220可以包括将由一个或多个处理器处理的可运行指令。管理员可以使用应用220的图形用户界面来使用选择数据自动地裁剪媒体中每个场景的帧。从图2c开始,应用220可以包括原始视频预览225、裁剪视频预览230、场景列表界面235、处理按钮240和完成按钮245。原始视频预览225可以包括回放未经编辑版本的媒体的视频播放器。裁剪视频预览230可以包括回放裁剪版本的媒体的视频播放器。场景列表界面235可以包括一个或多个场景镜头250a-250n、每个场景镜头250a-250n的时间范围260a-260n、以及每个场景镜头250a-250n的特征列表265a-265n。媒体裁剪模块150可以识别一个或多个场景。基于该识别,可以选择代表帧(例如,中间帧)用于相应场景镜头250a-250n的显示。此外,每个场景的时间范围260a-260n可以被识别并显示在场景列表界面235内。此外,可以使用本文详细描述的图像分析技术从每个场景的帧中检测一个或多个特征,并且所述一个或多个特征可以用于填入特征列表265a-265n。

转到图2d,对于识别的每个场景,图形用户界面可以用于进行选择280a-280n。选择280a-280n可以特定于场景275a的帧,并且可以指定场景275a的一个帧内的坐标或坐标范围(例如,定界框210)。选择280a-280n可以对应于在场景275a的帧上识别的特征。在与处理按钮240交互时,选择280a-n可以用于裁剪场景275a-275n的帧。场景275a-275n的所裁剪的帧可以用于生成裁剪的视频,以在裁剪视频预览230中回放。在裁剪的视频的初始生成反复更新或改变每个场景275a-275n的帧的裁剪之后,可以做出附加的或不同的选择280a-280n。通过与完成按钮245交互,可以实现媒体帧的裁剪。

图3是用于媒体预处理、媒体分析和对接收的媒体进行裁剪的软件和/或硬件模块的实施方式的框图。在一些实施方式中,预处理模块310可以预处理媒体,并使用下变频器312、下变频器314、下变频器316、下变频器318等对媒体进行下变频。如图所示,下变频器312-318可以具有不同的输出设置。在一些实施方式中,预处理模块310可以将所得输出发送到时间分析器320、图像分析器330和聚焦区域分析器350中的一个或多个。时间分析器320可以包括场景变化检测器322和静态边界检测器324。图像分析器330可以包括ocr332模块、对象检测器334、面部跟踪336模块、运动分析338模块和熵345模块。时间分析器320和图像分析器330可以向信号融合计算器360和裁剪计算器362发送数据结果。在一些实施例中,来自时间分析器320和图像分析器330的数据结果可以被发送到聚焦区域分析器350。聚焦区域分析器350可以向图像分析器330、信号融合计算器360和裁剪计算器362发送选择数据。

虽然分开示出,但是在许多实施方式中,时间分析模块和图像分析模块可以是同一分析器系统或模块的一部分。类似地,时间分析模块和图像分析模块内示出的组件可以与时间分析模块或图像分析模块分离,或者可以由其他模块提供。在一些实施方式中,图像分析器330可以涵盖深度学习推理模型,该模型可以使用输入数据来训练。在一些实施方式中,输入数据可以基于标记区域或选定区域来输入。

在一些实施方式中,时间分析器320可以包括应用、小应用、服务、服务器、守护进程(daemon)、例程或其他可运行逻辑,用于对图像序列(诸如视频的图像)执行分析。时间分析器320可以包括场景变化检测器322,场景变化检测器322可以分析多个媒体帧以确定场景变化。场景变化检测器322可以包括应用、小应用、服务、服务器、守护进程、例程或其他可运行逻辑,用于识别指示视频中场景变化或显著中断的、连续的图像之间的差异。在一些实施方式中,场景变化检测器322可以通过使用关键点检测来分析何时存在指示场景中断或场景变化的关键点的大变化,来确定场景变化。在一些实施方式中,场景变化检测器322可以将一个帧中的所有像素与连续帧中的像素进行比较,并且如果多于某一阈值的像素在被视为光流的一部分时是不同的,则这可以是场景变化的指示。基于像素的比较,场景变化检测器322可以识别视频中的一个或多个帧集合,每个集合属于特定场景。

在一些实施方式中,场景变化检测器322可以计算多个媒体帧之间的运动矢量,并且连续帧之间相干运动矢量的缺乏指示场景变化。然后可以在特定场景内识别特征,并且在特定场景内的多个媒体帧当中跟踪包含特定特征的区域。在一些实施方式中,场景变化检测器322可以跟踪特定特征在多个媒体帧内的位置的信息,并且这种信息还用于基于该区域来确定在哪里裁剪媒体帧。

在一些实施方式中,时间分析器320可以包括静态边界检测器324,静态边界检测器324可以分析多个媒体帧以确定是否以及在哪里存在静态边界。静态边界检测器324可以包括应用、小应用、服务、服务器、守护进程、例程或其他可运行逻辑,用于识别指示帧的至少一个边缘上的边界的、在连续的图像之间保持基本不变的静态边界。在一些实施方式中,静态边界检测器324可以接收多个媒体帧,并且被配置为分析多个媒体帧,以沿着多个帧的边缘寻找静态边界。在一些实施方式中,静态边界检测器324可以通过选择一个或多个随机像素、并且将像素行垂直和/或水平地与随机像素进行比较以确定是否存在颜色与随机选择的像素相近的不中断的像素行,来定位边界。在一些实施方式中,这种像素行可以延伸穿过整个图像,或者图像的一部分(例如,图像的四分之一)。在一些实施方式中,静态边界检测器324可以定位从一个帧到下一帧是静态的并且包含颜色相对均匀的像素的边界。在一些实施方式中,静态边界检测器324可以定位从一个帧到下一帧是静态的并且包含颜色相对均匀的像素、但是也包含一些附加的静态信息(诸如嵌入在边界中的不同颜色的文本)的边界。一旦定位边界,无论它是否包含嵌入文本,都可以在裁剪处理期间将其视作图像对待。

在一些实施方式中,图像分析器330可以包括光学字符识别(ocr)分析器332,ocr分析器332可以检测在图像数据中嵌入的文本。图像数据可以是媒体(诸如视频)的一个或多个帧。ocr分析器332可以包括应用、小应用、服务、服务器、守护进程、例程或其他可运行逻辑,用于识别嵌入在一个或多个媒体帧的图像数据中的文本。在一些实施方式中,ocr分析器332可以诸如经由滑动窗口将与字母相对应的预定矢量或位图图像与图像的一部分进行比较。在一些实施方式中,ocr分析器332可以基于先前的字母(例如,根据文本预测系统)选择参考图像(例如,字母),这可以提高效率。

在一些实施方式中,图像分析器330可以包括对象检测器334,对象检测器334可以使用在不同对象上训练的神经网络,诸如经由对象的数十、数百或数千个参考图像。对象检测器334可以包括应用、小应用、服务、服务器、守护进程、例程或其他可运行逻辑,用于识别一个或多个媒体帧中的可视对象(即,当显示时创建对象的可视表示的数据)。对象检测器334可以检测对象(诸如汽车、建筑物、人、动物、街道标志等)、文本、媒体帧的边界、媒体帧的一个或多个边的均匀颜色填充等。神经网络可以识别对象的图像中的相似元素,并创建代表对象的元素的分类,该分类然后可以被用来识别新图像中的对象。在一些实施例中,对象检测器334可以使用语义知识图来识别与在视频的一个或多个帧中识别的每个对象相关联的一个或多个关键词。语义知识图可以包括可视对象和一个或多个关键词之间的映射。图像分析器330可以生成围绕所识别的对象的定界框,使得可以从一个图像到另一图像地跟踪定界框。

在一些实施方式中,图像分析器330模块可以包括面部跟踪336模块,面部跟踪336模块可以接收多个媒体帧并分析多个媒体帧,以例如经由本征面部(eigenface)或类似结构来检测面部特征。面部跟踪336模块可以包括应用、小应用、服务、服务器、守护进程、例程或其他可运行逻辑,用于识别一个或多个连续的媒体帧之间的相似性,这些连续的媒体帧在显示时创建一个或多个面部的可视表示和一个或多个面部的相对运动。然后,可以通过跟踪面部特征以匹配多个媒体帧中的每个媒体帧中的面部特征,来实施面部跟踪。

在一些实施方式中,图像分析器330可以包括运动分析338模块,运动分析338模块可以分析在多个媒体帧中检测到的对象的运动,并且计算多个媒体帧之间的运动矢量。运动分析338模块可以包括应用、小应用、服务、服务器、守护进程、例程或其他可运行逻辑,用于识别一个或多个连续的媒体帧之间的相似性,这些连续的媒体帧在显示时创建一个或多个对象的可视表示和一个或多个对象的相对运动。在一些实施方式中,运动分析338模块被配置为依据第一媒体帧的区域中的像素到第二媒体帧的像素的差异来计算全局运动矢量。

在一些实施方式中,分析器330可以包括熵340模块,熵340模块可以分析多个媒体帧中的每个媒体帧的熵,并且计算熵差(从一个帧到另一帧已经发生的变化量或差异的度量)以确定关键帧。熵340模块可以包括应用、小应用、服务、服务器、守护进程、例程或其他可运行逻辑,用于分析一个或多个媒体帧的熵。在一些实施方式中,熵340模块可以分析媒体帧的所识别的区域之间的熵以计算熵差,从而确定关键区域。在一些实施方式中,熵340模块可以从多个媒体帧中提取表征与帧中的区域相关联的运动矢量的随机性的值,从而允许多个媒体帧被分割成不同的事件(例如,视频中的场景变化)。

在一些实施方式中,聚焦区域分析器350可以包括选择界面352,以在由场景变化检测器322识别的每个场景的一个或多个帧中选择一个或多个坐标。选择界面352可以包括应用、小应用、服务、服务器、守护进程、例程或其他可运行逻辑,用于经由图形用户界面(诸如图2c和图2d所示的应用220的界面)识别选择数据(例如,坐标或关键词)。选择界面352可以经由图形用户界面接收一个或多个选定坐标。在一些实施方式中,选择界面352可以接收每个场景的一个或多个帧上的一个或多个定界区(例如,如图2b所示的定界框210)。定界区可以具有用于划分(demarcate)帧的区域的任何形状,诸如三角形、矩形框或九边形。在一些实施方式中,选择界面352可以经由图形用户界面接收特征标识符。特征标识符可以包括与视频的一个或多个帧上的特定特征相关联的一个或多个关键词。在一些实施方式中,在对视频进行至少一次裁剪之后,选择界面352可以在视频中每个场景的一个或多个帧中选择一个或多个坐标。选定坐标可能在视频的初始裁剪之外。

在一些实施方式中,聚焦区域分析器350可以包括特征标记354,以识别每个帧内与从选择界面352选择的一个或多个坐标相对应的一个或多个特征。特征标记354可以包括应用、小应用、服务、服务器、守护进程、例程或其他可运行逻辑,用于使用来自选择界面352的选择数据来识别每个帧内的一个或多个特征。在一些实施方式中,特征标记354的功能可以由图像分析器330执行,并且来自选择界面352的数据可以被馈送到图像分析器330中。在一些实施方式中,特征标记352可以从图像分析器330接收针对视频的每个帧识别的一个或多个特征。特征标记354可以识别帧内与选择数据相对应的一个或多个特征。在一些实施方式中,特征标记354可以识别选定坐标上的特征或最接近选定坐标的特征。在一些实施方式中,特征标记354可以识别定界区内的一个或多个特征。在图2b所描绘的示例中,图像分析器330可能已经检测到自行车上的人物208a和人物208b的存在。基于自行车上的人物208a周围的定界框210,特征标记354可以将自行车上的人物208a识别为在定界框210内。在一些实施方式中,特征标记354可以使用语义知识图来识别与经由选择界面350接收的特征标识符相对应的整个帧内的一个或多个特征。基于被识别为在帧内的特征,特征标记354可以基于语义知识图来识别与每个特征相关联的一个或多个关键词。特征标记354还可以使用语义知识图来确定每个特征的一个或多个关键词中的任何一个是否在语义上匹配特征标识符。

在一些实施方式中,特征标记354可以在同一场景的其他帧中识别与一个或多个选定坐标、一个或多个定界区或特征标识符相对应的一个或多个特征。选择界面352可以已经用于针对一个特定帧来选择坐标、一个或多个定界区或特征标识符。这样,与选择相对应的相同特征可以位于其他帧上的不同位置。特征标记354可以遍历由场景变化检测器322识别为属于同一场景的帧的集合。在遍历同一场景的其他帧中的每一个的同时,特征标记354可以识别与用于选择坐标、定界区或特征标识符的帧的一个或多个特征相对应的一个或多个特征。在一些实施方式中,特征标记354可以使用运动分析来确定同一场景的帧之间的特征的运动矢量。特征标记354可以针对与选择相对应的一个或多个特征来识别同一场景的帧中的坐标和定界区。

在一些实施方式中,信号融合计算器360可以合并来自时间分析器320、图像分析器330和聚焦区域分析器350的数据,并且确定包括多个媒体帧的整个场景的重要对象和/或特征。合并的数据然后可以被裁剪计算器362模块用来裁剪多个媒体帧以重新生成媒体。为了确定每个帧的子集区域以裁剪媒体,裁剪计算器362可以为帧中识别的每个特征生成分数。对于与经由选择界面352接收的选择相对应的特征,裁剪计算器362可以分配比在没有选择界面352的情况下识别的一个或多个特征的分数更高的分数。在一些实施方式中,裁剪计算器362可以确定特征和与选择相对应的特征之间的距离。基于该距离和特征的特性,裁剪计算器362可以为所识别的特征生成分数。在一些实施方式中,距离越近,分数可能越高;并且距离越远,分数可能越低。在其他实施方式中,分数可以颠倒(例如,较低的分数指示较高的显著性或相关性)。在一些实施方式中,分数与距离的关系可以是线性的,而在其他实施方式中,它可以是非线性的(例如,分级的、分段线性的、几何的、指数的等)。选定特征的分数可以被设置为在帧中识别的其他特征当中的最高分数之上的预定余量。

基于分数,裁剪计算器362还可以识别每个场景具有最高n个子集分数的特征子集。一旦被识别,裁剪计算器362可以裁剪每个场景的帧,以包括所识别的特征加上与选择相对应的特征。裁剪计算器362可以遍历每个场景的帧来裁剪每个帧,以包括所识别的特征和与选择相对应的特征。裁剪计算器362。在一些实施方式中,裁剪计算器362可以使用利用特征的运动分析而确定的运动矢量来裁剪每个帧。在一些实施方式中,媒体被重新生成为目标纵横比。在一些实施方式中,信号融合计算器360可以为分析器的不同输出分配权重。信号融合计算器360可以将指定范围内的不同输出归一化为已经通过深度学习方法确定的值。

在一些实施方式中,信号融合计算器360和裁剪计算器362的功能可以反复重复。在对媒体的一次或多次裁剪之后,信号融合计算器360和裁剪计算器362。在一些实施方式中,裁剪计算器362可以确定每个裁剪的帧的初始子集区域不包括一个或多个选定特征。基于该确定,裁剪计算器362可以改变或修改裁剪的帧的初始子集区域,以包括一个或多个选定特征,从而生成新的子集区域。在一些实施方式中,裁剪计算器362可以以上述方式为帧中识别的每个特征生成或重新计算分数。对于与经由选择界面352接收的选择相对应的特征,裁剪计算器362可以分配比在没有选择界面352的情况下识别的一个或多个特征的分数更高的分数。裁剪计算器362还可以识别每个场景具有最高子集分数的特征子集。一旦被识别,裁剪计算器362可以重新裁剪每个场景的帧,以包括被识别的特征加上与选择相对应的特征。这个过程可以反复重复。在每次运行中,特征的选择都可能不同,从而导致对媒体帧的不同裁剪。

图4是裁剪媒体帧的方法400的实施方式的流程图。在一些实施方式中,方法400由媒体服务器系统104的处理器142运行存储在数据存储装置144上的指令来实施,并且可以使用从媒体内容数据库154提取的媒体。简而言之,方法400可以包括在402接收媒体帧,在404识别帧中与选定特征相对应的选定区域,以及在406识别帧中包括特征的区域。如果在408识别出附加区域,则该方法返回到在406识别帧中包括特征的区域。如果在408识别区域失败,则该方法基于在410识别的一个或多个区域继续裁剪媒体帧。

仍然参考图4并且更详细地,方法400可以在402接收到媒体帧时开始。在一些实施方式中,媒体可以包括媒体文件(例如,视频文件),其包括多个媒体帧。媒体可以存储在媒体内容数据库154中,或者通过网络接口146被检索。在一些实施方式中,媒体帧作为流媒体数据的一部分被接收。流媒体可以通过网络接口146接收。在一些实施方式中,媒体帧是所存储的媒体的列表的一部分,并且每个媒体被依次处理。在一些实施方式中,首先确定媒体是否需要被裁剪和/或处理。该确定可以通过将所存储的媒体的存储维度、纵横比、分辨率等与目标值进行比较来完成。

在404,可以识别帧中与选定特征相对应的选定区域。使用各种图像识别算法,可以基于经由选择界面接收的坐标、定界区或特征标识符来识别选定特征。在一些实施方式中,可以通过针对选定坐标附近或选定坐标上的任何对象或特征而分析帧来识别选定特征。在一些实施方式中,可以通过在定界区内针对其中的任何对象或特征而分析帧来识别选定特征。在一些实施方式中,可以通过确定与在整个帧内检测到的对应于特征标识符的特征相关联的一个或多个关键词来识别选定特征。一旦识别出与经由界面接收的选择数据相对应的选定特征,就可以识别与选定特征相关联的选定区域。

在406,可以识别帧中包括特征的区域。在一些实施方式中,通过使用面部识别分析帧来识别特征。在一些实施方式中,通过使用光学字符识别针对文本而分析帧来识别特征。在一些实施方式中,通过使用对象识别针对对象(例如,汽车、建筑物、人、动物、街道标志等)而分析帧来识别特征。在一些实施方式中,通过针对边界、帧和/或填充(例如,帧的一个或多个边缘处的颜色均匀或接近均匀的边界)而分析帧来识别特征。在一些实施方式中,分析帧以识别多个特征。这些特征可以是不同的类型(例如,面部、文本、对象等)。如果在408没有识别附加区域失败,则该方法返回到在406识别帧中包括特征的附加区域。

如果在408识别附加区域失败,则在410,可以基于从406识别的一个或多个区域和从404识别的选定区域来裁剪媒体帧。在一些实施方式中,如果目标纵横比的一个或多个值小于媒体帧的纵横比的当前值,则可以裁剪媒体帧。在一些实施方式中,如果目标分辨率的一个或多个值小于媒体帧的分辨率的当前值,则可以裁剪媒体帧。在一些实施方式中,媒体帧被裁剪以匹配目标纵横比或匹配目标分辨率。可以向裁剪的媒体帧的一个或多个边添加附加填充,以匹配目标纵横比或匹配目标分辨率。在一些实施方式中,所裁剪的区域还基于媒体帧之前和/或之后的一个或多个媒体帧。

在一些实施方式中,在裁剪期间,可以添加一些填充以满足目标纵横比。在一些实施方式中,如果在媒体帧的一个或多个边缘上存在静态边界,则它们可以被移动或重新格式化以形成和/或成为填充的一部分。在一些实施方式中,可以向裁剪的帧添加附加的叠加图像。附加的叠加图像可以经由图形用户界面被接收。

在一些实施方式中,可以接收多个媒体帧,并且可以分析多个媒体帧以确定场景变化。关键点检测可以用于分析何时存在指示场景中断或场景变化的关键点的大变化。在一些实施方式中,一个帧中所有像素的比较是与连续帧中的像素进行比较,并且如果多于某一阈值的像素在被视为光流的一部分时是不同的,则这是场景变化的指示。在一些实施方式中,在多个媒体帧之间计算运动矢量,并且连续帧之间相干运动矢量的缺乏指示场景变化。然后可以在特定场景内识别特征,并且在特定场景内的多个媒体帧当中跟踪包含特定特征的区域。在实施方式中,特定特征在多个媒体帧内被跟踪的位置的信息也用于基于该区域确定在哪里裁剪媒体帧。

在一些实施方式中,接收多个媒体帧,并且分析多个媒体帧以识别面部特征。然后,可以通过跟踪面部特征以匹配多个媒体帧中的每个媒体帧中的面部特征来实施面部跟踪。

在一些实施方式中,可以接收多个媒体帧,并且可以分析多个媒体帧以沿着多个帧的边缘寻找静态边界。在一些实施方式中,为了定位边界,选择随机像素,并且将像素行与随机像素垂直和/或水平进行比较,以确定是否存在颜色与随机选择的像素相近的不中断的像素行。在一些实施方式中,定位从一个帧到下一帧是静态的并且包含颜色相对均匀的像素的边界。在一些实施方式中,可以定位从一个帧到下一帧是静态的并且包含颜色相对均匀的像素、但是也包含一些附加的静态信息(诸如嵌入在边界中的不同颜色的文本)的边界。一旦定位了边界,无论它是否包含嵌入文本,都可以在裁剪处理期间将其视作图像对待。

图5是通过确定多个区域中的每个区域的分数来裁剪媒体帧的方法500的实施方式的流程图。在一些实施方式中,方法400由媒体服务器系统104的处理器142运行存储在数据存储装置144上的指令来实施,并且可以使用从媒体内容数据库154提取的媒体。简而言之,方法500可以包括在502接收媒体帧,并且在504识别帧中包括特征的区域。如果在506识别出附加区域,则该方法在508基于相应特性来确定所识别的区域的分数,并且返回到在504识别帧中包括特征的区域。如果在506识别区域失败,则该方法通过在510确定所识别区域中的一个或多个的分数超过阈值、并且在512裁剪媒体帧以包括超过阈值的一个或多个区域而继续。

仍然参考图5并且更详细地,方法500可以在502接收到媒体帧时开始。在一些实施方式中,媒体可以包括媒体文件(例如,视频文件),其包括多个媒体帧。媒体可以存储在媒体内容数据库154中,或者通过网络接口146检索。在一些实施方式中,媒体帧作为流媒体数据的一部分被接收。流媒体可以通过网络接口146接收。

在504,可以识别帧中与选定特征相对应的选定区域。使用各种图像识别算法,可以基于经由选择界面接收的坐标、定界区或特征标识符来识别选定特征。在一些实施方式中,可以通过针对选定坐标附近或选定坐标上的任何对象或特征而分析帧来识别选定特征。在一些实施方式中,可以通过在定界区内针对其中的任何对象或特征而分析帧来识别选定特征。在一些实施方式中,可以通过确定与在整个帧内检测到的对应于特征标识符的特征相关联的一个或多个关键词来识别选定特征。一旦识别出与经由界面接收的选择数据相对应的选定特征,就可以识别与选定特征相关联的选定区域。

在506,识别帧中包括特征的区域。在一些实施方式中,通过使用面部识别分析帧来识别区域中的特征中的一个或多个。在一些实施方式中,通过使用光学字符识别针对文本而分析帧来识别区域中的特征中的一个或多个。在一些实施方式中,通过使用对象识别针对对象(例如,汽车、建筑物、人、动物、街道标志等)而分析帧来识别区域中的特征中的一个或多个。在一些实施方式中,通过针对边界、帧和/或填充(例如,帧的一个或多个边缘处的颜色均匀或接近均匀的边界)而分析帧来识别区域中的特征中的一个或多个。在一些实施方式中,进一步分析每个区域以潜在地识别区域中的一个或多个区域中的多个特征。多个区域中的每个区域中的特征可以是不同的类型(例如,面部、文本、对象等)。如果在508没有识别附加区域失败,则该方法在510基于相应的特性确定所识别的区域的分数,并返回到在506识别帧中包括特征的附加区域。

在510,基于相应的特性来确定所识别的区域的分数。在一些实施方式中,分数基于位于该区域中或至少部分位于该区域中的特征的类型。在一些实施方式中,分数基于位于该区域中的特征的类型来加权。权重可以通过使用训练数据来确定。在一些实施方式中,训练数据可以用作深度学习推理模型的输入。在一些实施方式中,训练数据是基于对媒体的重要区域的选择而输入的数据。分数可以基于的一些特性可以包括区域中特征的尺寸、区域中特征的类型、区域中特征的运动、区域中特征的相对运动、与区域相关联的模糊量、与区域中特征相关联的模糊量等。在一些实施方式中,分数被分配给特征,而不是包含特征的区域。在一些实施方式中,确定多个区域中的每个区域的分数可以包括确定多个区域的排名,其中至少确定多个区域中排名最高的区域。在一些实施方式中,确定多个区域中的每个区域的分数可以包括从最高到最低对多个区域中的每个区域进行排名,其中排名更高的区域更有可能被包括在媒体帧的任何裁剪中。在一些实施方式中,分数可以基于在506中识别的特征与在504中识别的选定特征之间的距离。在一些实施方式中,分数可以基于先前识别的特征与904中识别的选定特征之间的距离。对于与经由选择界面接收的选择相对应的特征,可以分配比在没有选择界面的情况下识别的一个或多个特征的分数更高的分数。在一些实施方式中,可以为先前识别的每个特征确定特征和与选择相对应的特征之间的距离。基于距离和特征的特性,可以为所识别的特征生成分数。在一些实施方式中,距离越近,分数可能越高;并且距离越远,分数可能越低。在其他实施方式中,分数可以颠倒(例如,更低的分数指示更高的显著性或相关性)。在一些实施方式中,分数与距离的关系可以是线性的,而在其他实施方式中,它可以是非线性的(例如,分级的、分段线性的、几何的、指数的等)。选定特征的分数可以被设置为在帧中识别的其他特征当中的最高分数之上的预定余量。

如果在508识别附加区域失败,则该方法在512确定一个或多个区域的分数超过阈值。在一些实施方式中,多个区域中的每个区域的分数包括用于比较的值。在一些实施方式中,当裁剪媒体帧时,区域的分数必须在该区域被考虑之前超过阈值。在一些实施方式中,当裁剪媒体帧时,只有分数最高的区域被优先考虑包括在内。在一些实施方式中,基于要在裁剪媒体帧时包括的多个区域各自的分数来分配多个区域的优先级。在一些实施方式中,确定区域的哪个组合导致最大化的分数,其中所有区域都能够适应在被裁剪的媒体帧的区域之内。

如果在508没有识别附加区域失败,则在514裁剪媒体帧,以包括在504识别的选定区域和在506识别的具有超过阈值的相关联分数的一个或多个区域。在一些实施方式中,当确定在裁剪媒体帧时要包括的区域时,仅考虑分数超过阈值的多个区域中的区域的确定。在一些实施方式中,如果目标纵横比的一个或多个值小于媒体帧的纵横比的当前值,则可以裁剪媒体帧。在一些实施方式中,如果目标分辨率的一个或多个值小于媒体帧的分辨率的当前值,则可以裁剪媒体帧。在一些实施方式中,媒体帧被裁剪以匹配目标纵横比或匹配目标分辨率。可以向所裁剪的媒体帧的一个或多个边添加附加填充,以匹配目标纵横比或匹配目标分辨率。在一些实施方式中,所裁剪的区域还基于媒体帧之前和/或之后的媒体帧中的一个或多个。

图6是基于特征的移动来生成或更新分数的方法600的实施方式的流程图。在一些实施方式中,方法600通过媒体服务器系统104的处理器142运行存储在数据存储装置144上的指令来实施,并且可以使用从媒体内容数据库154提取的媒体。简而言之,方法600可以包括在602接收多个媒体帧,并且在606识别多个帧中的每个帧中包括相同特征的区域。如果在608没有识别附加区域失败,则该方法通过以下步骤来继续:在610确定来自区域的特征的移动量,并且在612基于特征的移动来生成或更新区域的分数,然后返回606以识别多个帧中的每个帧中包括相同特征的附加区域。如果在608识别附加区域失败,则该方法停止。

仍然参考图6并且更详细地,方法600可以在602接收到多个媒体帧时开始。在一些实施方式中,媒体是包含多个媒体帧的媒体文件(例如,视频文件)。媒体可以存储在媒体内容数据库154中,或者通过网络接口146检索。在一些实施方式中,多个媒体帧可以作为流媒体数据的一部分被接收。流媒体可以通过网络接口146接收。

在604,可以识别帧中与选定特征相对应的选定区域。使用各种图像识别算法,可以基于经由选择界面接收的坐标、定界区或特征标识符来识别选定特征。在一些实施方式中,可以通过针对选定坐标附近或选定坐标上的任何对象或特征而分析帧来识别选定特征。在一些实施方式中,可以通过在定界区内针对其中的任何对象或特征而分析帧来识别选定特征。在一些实施方式中,可以通过确定与在整个帧内检测到的对应于特征标识符的特征相关联的一个或多个关键词来识别选定特征。在一些实施方式中,可以通过使用面部识别分析帧来识别选定特征。在一些实施方式中,可以通过使用光学字符识别针对文本而分析帧来识别选定特征。在一些实施方式中,可以通过使用对象识别针对对象(例如,汽车、建筑物、人、动物、街道标志等)而分析帧来识别选定特征。在一些实施方式中,可以通过针对边界、帧和/或填充(例如,帧的一个或多个边缘处的颜色均匀或接近均匀的边界)而分析帧来识别选定特征。在一些实施方式中,可以分析选定特征以识别多个特征。所述特征可以是不同的类型(例如,面部、文本、对象等)。一旦识别出与经由界面接收的选择数据相对应的选定特征,就可以识别与选定特征相关联的选定区域。

在606,识别多个帧中的每个帧中包括相同特征的区域。在一些实施方式中,将特征识别为相同的特征可以包括比较特征的特性。特征的特性可以包括对象属性、颜色值、尺寸等。在一些实施方式中,将特征识别为相同特征还基于在该帧之前和之后的多个帧的帧之间界定该特征的区域的接近度。

如果在608没有识别附加区域失败,则在610确定来自所述区域的特征的移动量。该确定可以包括在604和606中识别的特征。在一些实施方式中,来自该区域的特征的移动量由特征在多个帧中的每个帧内的绝对位置来确定。在一些实施方式中,当与之前或之后的帧中的一个或多个进行比较时,来自该区域的特征的移动量由特征在多个帧中的每个帧中的相对位置来确定。在一些实施方式中,移动量由多个帧中的一个和多个帧之间特征尺寸的增加或减少来确定。确定特征的移动量的不同方式的组合可以用于确定多个帧中的两个或更多帧之间的移动量。

在612,基于特征的移动来生成或更新区域的分数。在一些实施方式中,分数基于在所接收的多个帧中的两个或更多帧之间特征的移动量,或者基于该移动量来调整。在一些实施方式中,分数的调整是通过基于一个或多个特征中的多个帧之间的确定的移动量对包含该帧的一个或多个特征的区域的现有分数进行加权来完成的。在一些实施方式中,分数被分配给特征,而不是包含特征的区域。在一些实施方式中,确定多个区域中的每个区域的分数可以包括确定多个区域的排名,其中至少确定多个区域中排名最高的区域。在一些实施方式中,确定多个区域中的每个区域的分数可以包括从最高到最低对多个区域中的每个区域进行排名,其中排名较高的区域更有可能被包括在媒体帧的任何裁剪中。在一些实施方式中,与604中识别的特征相对应的分数可以被设置为比与606中识别的特征相对应的分数更高的值。

媒体的转换可以在不同的计算系统上执行,包括针对每个帧检测图像或视频中重要的部分(例如特征)以及进行智能裁剪或填充以保留重要特征,同时丢弃不重要的区域、静态边界等。在一些实施方式中,对图像、视频或其他媒体的部分的检测可以在服务器系统上完成,并且用于创建将包含特征的区域或界限与媒体帧相关联的元数据。基于所识别的重要区域,可以智能地裁剪或填充图像或视频以保留重要特征,同时在另一设备(诸如移动设备)上丢弃不重要的区域、静态边界等。检测到的特征可以包括面部跟踪、对象检测和/或识别、文本检测、主色检测、运动分析、场景变化检测和图像显著性。检测和识别可以使用基于深度学习的方法和算法。文本检测可以使用光学字符识别(ocr)。对要放置在元数据中的特征的检测允许在移动设备上运行最优裁剪路径。本发明的其他方面可以包括填充图像以匹配背景颜色,以及移除和/或重新格式化任何边界以适应新的显示模式。虽然媒体主要是关于视频而讨论的,但是在许多实施方式中,系统可以应用于单独的图像或帧。

图7是使用接收的元数据来裁剪媒体帧的方法700的实施方式的流程图。在一些实施方式中,方法700由移动设备102的处理器122运行存储在数据存储装置124上的指令来实施。简而言之,方法700可以包括在702接收媒体帧,在706接收与媒体相关联的元数据,在708基于接收的元数据来识别帧中的区域,在710基于区域来裁剪媒体帧,以及在712接收下一媒体帧。

仍然参考图7并且更详细地,方法700可以在702接收到媒体帧时开始。在一些实施方式中,媒体是包含多个媒体帧的媒体文件(例如,视频文件)。媒体可以通过网络接口126接收并存储在数据存储装置124中。在一些实施方式中,媒体帧作为流媒体数据的一部分被接收。流媒体可以通过网络接口146接收。

在704,可以识别帧中与选定特征相对应的选定区域。使用各种图像识别算法,可以基于经由选择界面接收的坐标、定界区或特征标识符来识别选定特征。在一些实施方式中,可以通过针对选定坐标附近或选定坐标上的任何对象或特征而分析帧来识别选定特征。在一些实施方式中,可以通过在定界区内针对其中的任何对象或特征而分析帧来识别选定特征。在一些实施方式中,可以通过确定与在整个帧内检测到的对应于特征标识符的特征相关联的一个或多个关键词来识别选定特征。在一些实施方式中,可以通过在整个帧内找到对应于特征标识符的元数据和与所述元数据相关联的特征来识别选定特征。一旦识别出与经由界面接收的选择数据相对应的选定特征,就可以识别与选定特征相关联的选定区域。

在706,接收与媒体相关联的元数据。在一些实施方式中,元数据作为包含多个媒体帧的媒体文件的一部分被接收。在一些实施方式中,独立地接收元数据,与将元数据与接收的多个媒体帧关联起来的标识符或其他数据一起接收元数据。在一些实施方式中,元数据可以包括有关于与多个媒体帧中的一个或多个媒体帧相关联的区域的数据。在一些实施方式中,元数据中包括多个媒体帧中的每个媒体帧的一个或多个区域的定界信息。在一些实施方式中,一个或多个特征在多个媒体帧中的每个媒体帧内的位置可以包含在元数据中。特征可以包括对象(诸如汽车、建筑物、人、动物、街道标志等)、文本、媒体帧的边界、媒体帧的一个或多个边的均匀颜色填充等。在一些实施方式中,元数据可以识别多个媒体帧中的一个或多个媒体帧的多个特征和/或区域。在一些实施方式中,元数据与目标纵横比或目标分辨率相关联。在一些实施方式中,元数据可以识别媒体帧的一个或多个区域。一个或多个识别的区域中的每一个可以是被确定为具有超过阈值的分数的区域。分数可以通过如上所述的裁剪计算器来确定。

在708,基于接收的元数据来识别帧中的区域。在一些实施方式中,可以从元数据中检索帧中的区域,并且该区域可以包括通过使用面部识别而识别的特征。在一些实施方式中,可以从元数据中检索帧中的区域,并且该区域可以包括通过使用光学字符识别针对文本分析帧而识别的特征。在一些实施方式中,从元数据中检索帧中的区域,并且该区域可以包括通过使用对象识别针对对象(例如,汽车、建筑物、人、动物、街道标志等)分析帧而识别的特征。在一些实施方式中,从元数据中检索帧中的区域,并且该区域可以包括通过针对边界、帧和/或填充(例如,帧的一个或多个边缘处的颜色均匀或接近均匀的边界)分析帧而识别的特征。在一些实施方式中,可以从元数据中检索帧中的区域,并且该区域可以包括多个特征。这些特征可以是不同的类型(例如,面部、文本、对象等)。在一些实施方式中,可以从媒体帧的元数据中检索多个区域。在一些实施方式中,可以接收多个媒体帧,并且元数据与多个媒体帧相关联。

在710,基于在708中识别的区域和在704中识别的选定区域来裁剪媒体帧。在一些实施方式中,如果目标纵横比的一个或多个值小于媒体帧的纵横比的当前值,则可以裁剪媒体帧。在一些实施方式中,如果目标分辨率的一个或多个值小于媒体帧的分辨率的当前值,则可以裁剪媒体帧。在一些实施方式中,媒体帧被裁剪以匹配目标纵横比或匹配目标分辨率。目标纵横比或目标分辨率可以取决于显示媒体帧的移动设备102的朝向而改变。可以向所裁剪的媒体帧的一个或多个边添加附加填充,以匹配目标纵横比或匹配目标分辨率。在一些实施方式中,所裁剪的区域还基于媒体帧之前和/或之后的媒体帧中的一个或多个。

在712接收下一媒体帧,直到没有更多帧可用。下一媒体帧可以通过网络接口126接收并存储在数据存储装置124中。在一些实施方式中,下一媒体帧作为流媒体数据的一部分被接收。流媒体可以通过网络接口146接收。只要有更多帧可用,该方法就可以通过基于接收的元数据又接着识别下一帧中的区域来继续。

图8是基于朝向变化来调整裁剪的方法800的实施方式的流程图。在一些实施方式中,方法800由移动设备102的处理器122运行存储在数据存储装置124上的指令并从一个或多个传感器模块132接收数据来实施。简而言之,方法800可以包括在802接收朝向变化的指示,在804识别新朝向的分辨率,以及在806基于新朝向动态地调整播放媒体的裁剪。

仍然参考图8并且更详细地,方法800可以在802接收到朝向变化的指示时开始。在一些实施方式中,从传感器模块132(例如,加速度计和/或磁力计)接收朝向变化的指示。在一些实施方式中,朝向变化或朝向的检测发生在媒体显示之前。在一些实施方式中,朝向变化发生在媒体显示期间,并且媒体显示的变化在检测到朝向变化之后实时地发生。

在804,识别新朝向的分辨率和/或纵横比。在一些实施方式中,分辨率和/或纵横比由显示媒体的应用预先确定。分辨率和/或纵横比对于横向和纵向朝向都可以具有预定值。在一些实施方式中,确定取决于朝向的分辨率和/或纵横比,以最小化未使用的显示空间的量。在一些实施方式中,确定取决于朝向的分辨率和/或纵横比,以最小化在可用显示空间中放入所显示的媒体所需的填充量。

在806,基于新朝向来动态地调整播放媒体的裁剪。在一些实施方式中,朝向变化发生在媒体显示期间,并且媒体显示的变化在检测到朝向变化之后实时地发生。在一些实施方式中,媒体帧或多个媒体帧保持相同,但是基于接收的元数据来更改裁剪,以适应新的分辨率和/或纵横比。

图9是使用选择数据反复裁剪媒体帧的方法900的实施方式的流程图。在一些实施方式中,方法900由媒体服务器系统104的处理器142运行存储在数据存储装置144上的指令来实施,并且可以使用从媒体内容数据库154提取的媒体。简而言之,方法900可以包括:在902识别基于先前识别为包括特征的一个或多个区域而裁剪的媒体帧,在904识别帧中与选定特征相对应的选定区域,以及在906确定选择区域是否在裁剪的帧内。如果在906确定选定区域在裁剪的帧之内,则方法800可以包括保持所裁剪的媒体帧。否则,如果在906确定选定区域在裁剪的帧之外,则该方法可以包括在910重新计算帧中每个先前识别的特征的分数,并且在912基于选定区域和具有重新计算的分数的一个或多个区域来裁剪媒体帧。

更详细地,方法900可以开始于在902识别基于先前识别为包括特征的一个或多个区域而裁剪的媒体帧。在一些实施方式中,属于场景的每个帧可能已经基于其中先前识别的一个或多个特征被裁剪。可能已经使用各种图像分析技术(诸如面部识别、光学字符识别、对象识别和其他算法)来识别一个或多个特征。在一些实施方式中,先前的裁剪可能已经在没有来自选择界面的任何选择数据的情况下被完成。

在904,可以识别帧中与选定特征相对应的选定区域。使用各种图像识别算法,可以基于经由选择界面接收的坐标、定界区或特征标识符来识别选定特征。在一些实施方式中,可以通过针对选定坐标附近或选定坐标上的任何对象或特征而分析帧来识别选定特征。在一些实施方式中,可以通过在定界区内针对其中的任何对象或特征而分析帧来识别选定特征。在一些实施方式中,可以通过确定与在整个帧内检测到的对应于特征标识符的特征相关联的一个或多个关键词来识别选定特征。一旦识别出与经由界面接收的选择数据相对应的选定特征,就可以识别与选定特征相关联的选定区域。

在906,可以确定选定区域是否在裁剪的帧内。可以确定依据选定坐标、定界区或特征标识符而识别的选定区域是否与裁剪的帧重叠或另外包括在裁剪的帧内。在一些实施方式中,如果选定区域的阈值百分比(例如,50-100%)与裁剪的帧重叠,则可以确定选定区域在裁剪的帧内。在一些实施方式中,如果用于识别选定区域的选定坐标在裁剪的帧内,则可以确定选定区域在裁剪的帧内。选定坐标可以相对于全尺寸帧和裁剪的帧之间的比例进行转换(translate)。在一些实施方式中,如果选定区域的阈值百分比(例如,50-100%)没有与裁剪的帧重叠,则可以确定选定区域在裁剪的帧之外。在一些实施方式中,如果用于识别选定区域的选定坐标在裁剪的帧之外,则可以确定选定区域在裁剪的帧之外。

如果在906确定选定区域在裁剪的帧内,则在908可以保持所裁剪的媒体帧。另一方面,如果在906确定选定区域在裁剪的帧之外,则在910可以重新计算帧中每个先前识别的特征的分数。在一些实施方式中,分数可以基于位于该区域中或者至少部分位于该区域中的特征的类型。在一些实施方式中,分数可以基于位于该区域中的特征的类型来加权。权重可以通过使用训练数据来确定。在一些实施方式中,训练数据可以用作深度学习推理模型的输入。在一些实施方式中,训练数据是基于对媒体的重要区域的选择而输入的数据。分数可以基于的一些特性可以包括:区域中特征的尺寸、区域中特征的类型、区域中特征的运动、区域中特征的相对运动、与区域相关联的模糊量、与区域中特征相关联的模糊量等。在一些实施方式中,分数被分配给特征,而不是包含特征的区域。在一些实施方式中,确定多个区域中的每个区域的分数可以包括确定多个区域的排名,其中至少确定多个区域中排名最高的区域。在一些实施方式中,确定多个区域中的每个区域的分数可以包括从最高到最低对多个区域中的每个区域进行排名,其中排名更高的区域更有可能被包括在媒体帧的任何裁剪中。

在一些实施方式中,分数可以基于先前识别的特征与904中识别的选定特征之间的距离。对于与经由选择界面接收的选择相对应的特征,可以分配比在没有选择界面的情况下识别的一个或多个特征的分数更高的分数。在一些实施方式中,可以为先前识别的每个特征确定特征和与选择相对应的特征之间的距离。基于距离和特征的特性,可以为所识别的特征生成分数。在一些实施方式中,距离越近,分数可能越高;并且距离越远,分数可能越低。在其他实施方式中,分数可以颠倒(例如,更低的分数指示更高的显著性或相关性)。在一些实施方式中,分数与距离的关系可以是线性的,而在其他实施方式中,它可以是非线性的(例如,分级的、分段线性的、几何的、指数的等)。选定特征的分数可以被设置为在帧中识别的其他特征当中的最高分数之上的预定余量。

基于在910重新计算的分数,媒体帧可以被裁剪以包括先前识别的一个或多个区域和从904识别的选定区域。在一些实施方式中,如果目标纵横比的一个或多个值小于媒体帧的纵横比的当前值,则可以裁剪媒体帧。在一些实施方式中,如果目标分辨率的一个或多个值小于媒体帧的分辨率的当前值,则可以裁剪媒体帧。在一些实施方式中,媒体帧被裁剪以匹配目标纵横比或匹配目标分辨率。可以向所裁剪的媒体帧的一个或多个边添加附加填充,以匹配目标纵横比或匹配目标分辨率。在一些实施方式中,所裁剪的区域还基于媒体帧之前和/或之后的媒体帧中的一个或多个。

图10是可以用于实施移动设备102、媒体服务器系统104等的计算系统900的一般架构的框图。计算系统900包括用于传送信息的总线1005或其他通信组件,以及耦合到总线1005以用于处理信息的处理器1010。计算系统1000还可以包括耦合到总线以用于处理信息的一个或多个处理器1010。计算系统1000还包括耦合到总线1005以用于存储信息和将由处理器1010执行的指令的主存储器1015,诸如ram或其他动态存储设备。主存储器1015还可以用于在处理器1010运行指令期间存储位置信息、临时变量或其他中间信息。计算系统1000还可以包括耦合到总线1005以用于存储静态信息和用于处理器1010的指令的rom1020或其他静态存储设备。诸如固态设备、磁盘或光盘的存储设备1025耦合到总线1005,以用于持久地存储信息和指令。计算系统1000可以包括但不限于数字计算机,诸如膝上型计算机、桌上型计算机、工作站、个人数字助理、服务器、刀锋服务器、大型机、蜂窝电话、智能电话、移动计算设备(例如记事本、电子阅读器等)等。

计算系统1000可以经由总线1005耦合到用于向用户显示信息的显示器1035,诸如液晶显示器(lcd)、薄膜晶体管lcd(tft)、有机发光二极管(oled)显示器、led显示器、电子纸显示器、等离子显示面板(pdp)和/或其他显示器等。输入设备1030(诸如包括字母数字键和其他键的键盘)可以耦合到总线1005,以用于向处理器1010传送信息和命令选择。在另一实施方式中,输入设备1030可以与显示器1035集成,诸如集成在触摸屏显示器中。输入设备1030可以包括光标控制(诸如鼠标、轨迹球或光标方向键),以用于向处理器1010传送方向信息和命令选择和用于控制显示器1035上的光标移动。

根据各种实施方式,本文描述的过程和/或方法可以由计算系统1000响应于处理器1010运行包含在主存储器1015中的指令布置来实施。这样的指令可以从另一计算机可读介质(诸如存储设备1025)读取到主存储器1015中。包含在主存储器1015中的指令布置的运行使得计算系统1000执行本文描述的说明性过程和/或方法步骤。多处理布置中的一个或多个处理器也可以用来运行包含在主存储器1015中的指令。在替代实施方式中,可以使用硬连线电路来代替软件指令或与软件指令结合,以实现说明性实施方式。因此,实施方式不限于硬件电路和软件的任何特定组合。

虽然在图10中已经描述了计算系统1000的实施方式,但是本说明书中描述的主题和功能操作的实施方式可以在其他类型的数字电子电路中实施,或者在计算机软件、固件或硬件(包括本说明书中公开的结构及其结构等价物)中实施,或者在它们中的一个或多个的组合中实施。

本公开的至少一个方面针对一种转换媒体维度的方法。在计算设备上运行的时间分析器可以将处于第一朝向的视频中的帧集合识别为属于场景。在计算设备上运行的聚焦区域分析器可以经由用户界面接收被识别为属于场景的帧集合中的帧上的选定坐标。在计算设备上运行的图像分析器可以在帧内识别包括与选定坐标相对应的第一特征的第一区域。图像分析器可以在帧内识别包括第二特征的第二区域。在计算设备上运行的裁剪计算器可以生成第一特征的第一分数、第二特征的第二分数。基于与选定坐标相对应的第一特征,第一分数可以大于第二分数。裁剪计算器可以确定第二分数超过阈值。在计算设备上运行的图像处理器可以响应于该确定,裁剪被识别为属于场景的帧集合中的帧,以在预定显示区内包括第一区域和第二区域,该预定显示区包括处于第二朝向的帧的子集区域。

在一些实施方式中,图像处理器可以识别处于第二朝向的帧的初始子集区域,该初始子集区域包括第二区域和第三区域,第二区域包括第二特征并且第三区域包括第三特征。在一些实施方式中,图像处理器可以确定初始子集区域不包括第一区域,其中第一区域包括与选定坐标相对应的第一特征。在一些实施方式中,图像处理器可以响应于确定初始子集区域不包括第一区域,修改帧的初始子集区域,以包括第一区域和第二区域,其中第一区域包括第一特征并且第二区域包括第二特征,以生成处于第二朝向的帧的子集区域。

在一些实施方式中,图像分析器可以针对属于场景的每个帧,在帧内识别包括第一特征和第二特征的第一区域和第二区域。在一些实施方式中,裁剪还可以包括响应于在帧集合中的每个帧中识别出第一区域和第二区域,裁剪帧以在预定显示区内包括第一区域和第二区域,该预定显示区包括处于第二朝向的帧的子集区域。

在一些实施方式中,其中,接收帧上的选定坐标还可以包括经由用户界面接收被识别为属于场景的帧集合中的帧上的定界框。在一些实施方式中,识别第一区域还可以包括基于使用用户界面而选择的定界框来识别包括第一特征的第一区域。

在一些实施方式中,接收帧上的选定坐标还可以包括经由用户界面接收帧上的第二选定坐标。在一些实施方式中,图像分析器可以在帧内识别包括与第二选定坐标相对应的第四特征的第四区域。在一些实施方式中,时间分析器可以在该帧和被识别为属于场景的帧集合中的第二帧之间确定第四特征的运动矢量。在一些实施方式中,图像处理器可以基于第四特征的运动矢量来裁剪被识别为属于场景的帧集合中的第二帧。

在一些实施方式中,聚焦区域分析器可以在裁剪帧之后,经由用户界面接收帧子集中的帧上的第二选定坐标。在一些实施方式中,图像分析器可以调整第一区域以生成包括与第二选定坐标相对应的第一特征的第四区域。在一些实施方式中,裁剪计算器可以生成第一特征的第四分数、第二特征的第五分数和第三特征的第六分数,基于第二选定坐标和第二特征之间的第一距离以及第二选定坐标和第三特征之间的第二距离,第六分数大于第五分数。在一些实施方式中,图像处理器可以裁剪该帧,以在第二预定显示区内包括第三区域和第四区域,第三区域对应于第三特征,第二预定显示区包括处于第二朝向的帧的第二子集区域。

在一些实施方式中,聚焦区域分析器可以经由用户界面接收被识别为属于场景的帧集合中的第二帧的特征标识符。在一些实施方式中,图像分析器可以使用语义知识图在第二帧内识别包括与特征分析器相对应的第四特征的第四区域。在一些实施方式中,图像分析器可以在第二帧内识别包括第五特征的第五区域。在一些实施方式中,裁剪计算器可以生成第四特征的第四分数、第五特征的第五分数,基于与经由用户界面接收的特征标识符相对应的第四特征,第四分数大于第五分数。在一些实施方式中,图像处理器可以裁剪被识别为属于场景的帧集合中的第二帧,以在第二预定显示区内包括第四区域和第五区域,第二预定显示区包括处于第二朝向的第二帧的子集区域。

在一些实施方式中,聚焦区域分析器可以经由用户界面接收叠加图像,以在指定坐标处将其添加到帧。在一些实施方式中,在裁剪帧之后,图像处理器可以在指定坐标处将叠加图像添加到帧的子集区域。

在一些实施方式中,第二特征可以包括文本。在一些实施方式中,生成第二特征的第二分数还可以包括基于与文本尺寸成比例的第二特征的特性和文本距帧中心的距离中的至少一个来生成第二特征的第二分数。在一些实施方式中,第二特征包括面部。在一些实施方式中,基于第二特征的特性生成第二特征的第二分数还可以包括基于面部相对于帧的尺寸来生成第二分数。

本公开的至少一个方面针对一种转换媒体维度的系统。系统可以包括在计算设备上运行的时间分析器。时间分析器可以将处于第一朝向的视频中的帧集合识别为属于场景。系统可以包括在计算设备上运行的聚焦区域分析器。聚焦区域分析器可以经由用户界面接收被识别为属于场景的帧集合中的帧上的选定坐标。系统可以包括在计算设备上运行的图像分析器。图像分析器可以在帧内识别包括与选定坐标相对应的第一特征的第一区域。图像分析器可以在帧内识别包括第二特征的第二区域。系统可以包括在计算设备上运行的裁剪计算器。裁剪计算器可以生成第一特征的第一分数和第二特征的第二分数。基于与选定坐标相对应的第一特征,第一分数可以大于第二分数。裁剪计算器可以确定第二分数超过阈值。系统可以包括在计算设备上运行的图像处理器。图像处理器可以响应于该确定,裁剪被识别为属于场景的帧集合中的帧,以在预定显示区内包括第一区域和第二区域,该预定显示区包括处于第二朝向的帧的子集区域。

在一些实施方式中,图像处理器可以识别处于第二朝向的帧的初始子集区域,该初始子集区域包括第二区域和第三区域,其中第二区域包括第二特征并且第三区域包括第三特征。在一些实施方式中,图像处理器可以确定初始子集区域不包括第一区域,其中第一区域包括与选定坐标相对应的第一特征。在一些实施方式中,图像处理器可以响应于确定初始子集区域不包括第一区域,修改帧的初始子集区域,以包括第一区域和第二区域以生成处于第二朝向的帧的子集区域,其中第一区域包括第一特征并且第二区域包括第二特征。

在一些实施方式中,图像分析器可以针对属于场景的每个帧,在帧内识别包括第一特征和第二特征的第一区域和第二区域。在一些实施方式中,图像处理器可以响应于在帧集合中的每个帧中识别出第一区域和第二区域,裁剪帧以在预定显示区内包括第一区域和第二区域,该预定显示区包括处于第二朝向的帧的子集区域。

在一些实施方式中,聚焦区域分析器还可以经由用户界面接收被识别为属于场景的帧集合中的帧上的定界框。在一些实施方式中,图像分析器可以基于使用用户界面而选择的定界框来识别包括第一特征的第一区域。

在一些实施方式中,聚焦区域分析器可以经由用户界面接收帧上的第二选定坐标。在一些实施方式中,图像分析器可以在帧内识别包括与第二选定坐标相对应的第四特征的第四区域。在一些实施方式中,时间分析器可以在该帧和被识别为属于场景的帧集合中的第二帧之间确定第四特征的运动矢量。在一些实施方式中,图像处理器可以基于第四特征的运动矢量来裁剪被识别为属于场景的帧集合中的第二帧。

在一些实施方式中,聚焦区域分析器可以在裁剪帧之后,经由用户界面接收帧子集中的帧上的第二选定坐标。在一些实施方式中,图像分析器可以调整第一区域以生成包括与第二选定坐标相对应的第一特征的第四区域。在一些实施方式中,裁剪计算器可以生成第一特征的第四分数、第二特征的第五分数和第三特征的第六分数,基于第二选定坐标和第二特征之间的第一距离以及第二选定坐标和第三特征之间的第二距离,第六分数大于第五分数。在一些实施方式中,图像处理器可以裁剪该帧,以在第二预定显示区内包括第三区域和第四区域,第三区域对应于第三特征,第二预定显示区包括处于第二朝向的帧的第二子集区域。

在一些实施方式中,聚焦区域分析器可以经由用户界面接收被识别为属于场景的帧集合中的第二帧的特征标识符。在一些实施方式中,图像分析器可以使用语义知识图在第二帧内识别包括与特征分析器相对应的第四特征的第四区域。在一些实施方式中,图像分析器可以在第二帧内识别包括第五特征的第五区域。在一些实施方式中,裁剪计算器可以生成第四特征的第四分数、第五特征的第五分数,基于与经由用户界面接收的特征标识符相对应的第四特征,第四分数大于第五分数。在一些实施方式中,图像处理器可以裁剪被识别为属于场景的帧集合中的第二帧,以在第二预定显示区内包括第四区域和第五区域,第二预定显示区包括处于第二朝向的第二帧的子集区域。

在一些实施方式中,聚焦区域分析器可以经由用户界面接收叠加图像,以在指定坐标处将其添加到帧。在一些实施方式中,在裁剪帧之后,图像处理器可以在指定坐标处将叠加图像添加到帧的子集区域。

在一些实施方式中,第二特征可以包括文本。在一些实施方式中,生成第二特征的第二分数还可以包括基于与文本尺寸成比例的第二特征的特性和文本距帧中心的距离中的至少一个来生成第二特征的第二分数。在一些实施方式中,第二特征包括面部。在一些实施方式中,基于第二特征的特性生成第二特征的第二分数还可以包括基于面部相对于帧的尺寸来生成第二分数。

本说明书中描述的主题和操作的实施方式可以在数字电子电路中实施,或者在体现在有形介质上的计算机软件、固件或硬件(包括本说明书中公开的结构及其结构等价物)中实施,或者在它们中的一个或多个的组合中实施。本说明书中描述的主题可以被实施为一个或多个计算机程序,即计算机程序指令的一个或多个模块,其被编码在一个或多个计算机存储介质上,以用于由数据处理装置运行或控制数据处理装置的操作。可替换地或另外地,程序指令可以被编码在人工生成的传播信号上,例如,机器生成的电、光或电磁信号,该信号被生成来编码信息以用于传输到合适的接收器装置,以便由数据处理装置运行。计算机存储介质可以是或包括在计算机可读存储设备、计算机可读存储基底、随机或串行存取存储器阵列或设备、或它们中的一个或多个的组合中。此外,虽然计算机存储介质不是传播信号,但是计算机存储介质可以是以人工生成的传播信号来编码的计算机程序指令的源或目的地。计算机存储介质也可以是或包括在一个或多个单独的组件或介质(例如,多个cd、磁盘或其他存储设备)中。因此,计算机存储介质是有形的且非临时性的。

本说明书中描述的操作可以由数据处理装置对存储在一个或多个计算机可读存储设备上或从其他来源接收的数据执行。

术语“数据处理装置”、“计算设备”或“处理电路”包括用于处理数据的所有种类的装置、设备和机器,在一些实施方式中包括(多个)可编程处理器、(多个)计算机、(多个)片上系统、编程处理器的一部分或前述的组合。装置可以包括专用逻辑电路,例如,fpga或asic。除了硬件之外,装置还可以包括为所讨论的计算机程序创建运行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时环境、虚拟机或它们中的一个或多个的组合的代码。装置和运行环境可以实现各种不同的计算模型基础设施,诸如网络服务、分布式计算和网格计算基础设施。

计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言(包括编译或解释语言、声明性或过程性语言)来编写,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程、对象或其他适合在计算环境中使用的单元。计算机程序可以但不必对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的一部分(例如,以标记语言文档来存储的一个或多个脚本)中、在专用于所讨论的程序的单个文件中、或在多个协调文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。计算机程序可以被部署为在一个计算机上或者在位于一个站点或分布在多个站点并通过通信网络互连的多个计算机上运行。

在一些实施方式中,适合于计算机程序的运行的处理器包括通用和专用微处理器两者,以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于根据指令执行动作的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备,例如磁盘、磁光盘或光盘,或者可操作地耦合到这样的大容量存储设备,以从其接收数据或向其传输数据或两者兼有。然而,计算机不需要这样的设备。此外,计算机可以嵌入另一设备,例如移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏机、全球定位系统(gps)接收器或便携式存储设备(例如,通用串行总线(usb)闪存驱动器),仅举几个例子。适用于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储器设备,在一些实施方式中包括:半导体存储器设备,例如,eprom、eeprom和闪存设备;磁盘,例如,内部硬盘或可移动磁盘;磁光盘;以及cd-rom和dvd盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。

为了提供与用户的交互,本说明书中描述的主题的实施方式可以在计算机上实施,该计算机具有用于向用户显示信息的显示设备(例如,crt(阴极射线管)或lcd监视器)以及用户可以通过其向计算机提供输入的键盘和定点设备(例如,鼠标或轨迹球)。也可以使用其他种类的设备来提供与用户的交互;在一些实施方式中,提供给用户的反馈可以是任何形式的感觉反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且来自用户的输入可以以任何形式接收,包括声音、语音或触觉输入。

虽然本说明书包含许多具体的实施细节,但是这些细节不应被解释为对所要求保护的内容的范围的限制,而是对特定于具体的实施方式的特征的描述。本说明书中在分开的实施方式的上下文中描述的某些特征也可以在单个实施方式中以组合来实施。相反地,在单个实施方式的上下文中描述的各种特征也可以分开在多个实施方式中实施或者以任何合适的子组合来实施。此外,虽然特征可以如上被描述为以某些组合而起作用,甚至最初也是这样要求保护的,但是在某些情况下,来自所要求保护的组合的一个或多个特征可以从该组合中删除,并且所要求保护的组合可以针对子组合或子组合的变体。

类似地,虽然在附图中以特定的次序描绘了操作,但是这不应该被理解为要求以所示的特定的次序或顺序的次序执行这些操作,或者执行所有示出的操作,以获得期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施方式中的各种系统组件的分离不应该被理解为在所有实施方式中都需要这样的分离,并且应该理解,所描述的程序组件和系统通常可以被集成在单个软件产品中,或者被封装到体现在有形介质上的多个软件产品中。

对“或”的引用可以被解释为包含性的,使得使用“或”描述的任何术语可以表示单个、多于一个以及所有描述的术语中的任何一个。

因此,已经描述了主题的特定实施方式。其他实施方式在所附权利要求的范围内。在一些情况下,权利要求中列举的动作可以以不同的次序执行,并且仍然实现期望的结果。此外,附图中描绘的过程不一定需要所示的特定的次序或顺序的次序来实现期望的结果。在某些实施方式中,多任务和并行处理可能是有利的。

权利要求不应被理解为限于所描述的次序或元素,除非这样声明。应当理解,在不脱离所附权利要求的精神和范围的情况下,本领域普通技术人员可以在形式和细节上进行各种变化。要求保护落入所附权利要求及其等同物的精神和范围内的所有实施方式。

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