消息系统中的捕获后处理的制作方法

文档序号:31124751发布日期:2022-08-13 02:53阅读:102来源:国知局
消息系统中的捕获后处理的制作方法
消息系统中的捕获后处理
1.相关申请的交叉引用
2.本技术要求以下专利申请的优先权:于2019年12月31日提交的序列号为16/732,025的美国专利申请、于2019年12月31日提交的序列号为16/732,040的美国专利申请、于2019年12月31日提交的序列号为16/732,051的美国专利申请以及于2019年12月31日提交的序列号为16/732,001的美国专利申请,上述美国专利申请中的每一个的内容出于所有目的通过引用整体并入本文中。


背景技术:

3.随着数字图像使用的增加、便携式计算设备的可负担性、数字存储介质的增加的容量的可用性以及网络连接的增加的带宽和可访问性,数字图像已成为越来越多人日常生活的一部分。来自各种位置的兴趣广泛的用户可以捕获各种对象的数字图像,并且使其他人可经由网络(例如因特网)获得所捕获的图像。为了增强用户对数字图像的体验并提供各种特征,从而使得计算设备能够对在各种变化条件(例如,图像尺度、噪声、照明、运动或几何失真的变化)下捕获的各种对象和/或特征执行图像处理操作可能是有挑战性的并且是计算密集的。
附图说明
4.为了容易标识对任何特定元件或动作的讨论,附图标记中的一个最高位数字或多个最高位数字指代该元件被首次引入时所在的图号。
5.图1是根据一些示例实施方式的可以部署本公开内容的联网环境的图形表示。
6.图2是根据一些示例实施方式的消息客户端应用的图形表示。
7.图3是根据一些示例实施方式的如在数据库中维护的数据结构的图形表示。
8.图4是根据一些示例实施方式的消息的图形表示。
9.图5是根据一些示例实施方式的访问限制过程的流程图。
10.图6是示出根据某些示例实施方式的实现后处理图形流水线的注释系统的各种模块的框图。
11.图7是示出根据一些实施方式的如图4所描述的包括与用于对图像(例如,输入帧)进行后处理的元数据对应的附加信息的消息注释的结构的示意图。
12.图8a和图8b示出了根据一些实施方式的用户捕获用于在消息客户端应用(或消息系统)中的进行后处理的图像的示例。
13.图9a和图9b示出了根据一些实施方式的消息客户端应用(或消息系统)中的后处理的示例。
14.图10a和图10b示出了根据一些实施方式的消息客户端应用(或消息系统)中的后处理的其他示例。
15.图11示出了根据一些实施方式的用于选择对消息客户端应用(或消息系统)中的内容(例如,图像或视频)应用后处理的媒体叠加的用户界面的示例。
16.图12示出了根据一些实施方式的用于选择对消息客户端应用(或消息系统)中的内容(例如,图像或视频)应用后处理的媒体叠加的用户界面的示例,其遵循图11a和图11b中描述的示例。
17.图13是根据一些示例实施方式的图形处理流水线(即,针对客户端设备的部件(例如,gpu)实现的后处理流水线)的示例的示意图。
18.图14是根据一些示例实施方式的图形处理流水线(即,针对客户端设备的部件(例如,gpu)实现的后处理流水线)的示例的示意图。
19.图15是根据一些示例实施方式的经由图形处理流水线(即,以上在图13和/或图14中描述的后处理流水线)实现的媒体叠加层的堆叠的示例的示意图。
20.图16示出了根据一些实施方式的用于对多个媒体叠加进行选择和堆叠以对消息客户端应用(或消息系统)中的媒体内容(例如,图像或视频)应用后处理的用户界面(例如,轮播)的示例。
21.图17示出了根据一些实施方式的用于对多个媒体叠加进行选择和堆叠以对消息客户端应用(或消息系统)中的媒体内容(例如,图像或视频)应用后处理的用户界面(例如,轮播)的附加示例。
22.图18示出了可以被选择以在后处理期间应用于媒体内容的媒体叠加的示例。
23.图19示出了可以被选择以在后处理期间应用于媒体内容的媒体叠加的示例。
24.图20示出了可以被选择以在后处理期间应用于媒体内容的媒体叠加的示例。
25.图21示出了可以被选择以在后处理期间应用于媒体内容的媒体叠加的示例。
26.图22示出了可以被选择以在后处理期间应用于媒体内容的媒体叠加的示例。
27.图23示出了可以被选择以在后处理期间应用于媒体内容的媒体叠加的示例。
28.图24示出了可以被选择以在后处理期间应用于媒体内容的媒体叠加的示例。
29.图25示出了可以被选择以在后处理期间应用于媒体内容的媒体叠加的示例。
30.图26是示出根据某些示例实施方式的基于对图像数据的至少一个后处理操作来生成消息的方法的流程图。
31.图27是示出根据某些示例实施方式的基于对图像数据的后处理操作的分层来生成消息的方法的流程图。
32.图28是示出根据某些示例实施方式的提供用于后处理操作的轮播界面的方法的流程图。
33.图29是示出根据某些示例实施方式的用于确定媒体叠加的集合以填充媒体叠加的集合的方法的流程图,媒体叠加的集合可以由客户端电子设备在后处理阶段期间使用以修改媒体内容。
34.图30是示出根据一些示例实施方式的其中可以实现本公开内容的软件架构的框图。
35.图31是根据一些示例实施方式的呈计算机系统形式的机器的图形表示,在该计算机系统中可以执行一组指令,以使机器执行讨论的方法中的任何一种或更多种。
具体实施方式
36.如上所述,随着数字图像的使用的增加、便携式计算设备的可负担性、数字存储介
质的增加的容量的可用性以及网络连接的增加的带宽和可访问性,数字图像已经成为越来越多人日常生活的一部分。来自各种位置的兴趣广泛的用户可以捕获各种对象的数字图像,并且使其他人可经由网络(例如因特网)获得所捕获的图像。为了增强用户对数字图像的体验并提供各种特征,从而使得计算设备能够对在各种变化条件(例如,图像尺度、噪声、照明、运动或几何失真的变化)下捕获的各种对象和/或特征执行图像处理操作可能是有挑战性的并且是计算密集的。本文中描述的实施方式提供了用于在图像数据或媒体内容的捕获后阶段中进行图像处理的改进系统。
37.如本文中所提及的,捕获后(post-capture)阶段是指以下时间段:其中媒体内容已经被给定设备(例如,使用诸如摄像装置的捕获传感器)捕获并且已经存储在给定存储设备和/或持久性存储设备中。此外,这样的媒体内容可能已经经历了代码转换和/或压缩以将媒体内容转换成用于存储的适当格式。如本文中进一步描述的,消息客户端应用的用户可以在后面的时间段检索所存储的媒体内容以应用本文中进一步描述的一组后处理图像操作,这有利地利用如本文中更详细描述的新的图形处理流水线、系统、方法、技术和用户界面。
38.在各种设置中,移动计算设备的用户经常使用和越来越多地利用消息系统,以便以便利的方式提供不同类型的功能。如本文中所描述的,本主题的消息系统包括通过对媒体内容至少执行后处理操作来提供在媒体内容(例如,图像、视频等)上呈现媒体叠加的改进的实际应用。这样的后处理操作由至少可扩展图形呈现流水线软件架构(如本文中进一步描述的)来实现,该可扩展图形呈现流水线软件架构支持后处理操作的分层以提供合成媒体内容。经由这样的可扩展架构,可以实现对现有图形呈现流水线的处理和计算改进。与结合图像和/或视频捕获操作(例如,经由给定电子计算设备的摄像装置)执行的图像处理操作相比,可扩展架构可以进一步减少呈现后处理操作的时延。
39.如本文中所提及的,短语“媒体叠加”或“多个媒体叠加”包括与如本文中进一步描述的图像修改、过滤、滤镜(lenses)等对应的各种图像处理操作。
40.图1是示出用于通过网络交换数据(例如,消息和相关联的内容)的示例消息系统100的框图。消息系统100包括客户端设备102的多个实例,每个实例托管包括消息客户端应用104的多个应用。每个消息客户端应用104经由网络106(例如,因特网)通信地耦接至消息客户端应用104的其他实例和消息服务器系统108。
41.消息客户端应用104能够经由网络106与另一消息客户端应用104和消息服务器系统108进行通信和交换数据。在消息客户端应用104之间以及在消息客户端应用104与消息服务器系统108之间交换的数据包括函数(例如,调用函数的命令)以及有效载荷数据(例如,文本、音频、视频或其他多媒体数据)。
42.消息服务器系统108经由网络106向特定消息客户端应用104提供服务器侧功能。虽然消息系统100的某些功能在本文中被描述为由消息客户端应用104或由消息服务器系统108执行,但是在消息客户端应用104或消息服务器系统108内的某些功能的位置是设计选择。例如,在技术上可能优选的是最初在消息服务器系统108内部署某些技术和功能,但是后面将该技术和功能迁移至其中客户端设备102具有足够处理能力的消息客户端应用104。
43.消息服务器系统108支持被提供给消息客户端应用104的各种服务和操作。这样的
操作包括向消息客户端应用104发送数据、从消息客户端应用104接收数据以及对由消息客户端应用104生成的数据进行处理。作为示例,该数据可以包括消息内容、客户端设备信息、地理位置信息、媒体注释和叠加、消息内容持久化条件、社交网络信息和实况事件信息。通过经由消息客户端应用104的用户界面(ui)可用的功能来调用和控制消息系统100内的数据交换。
44.现在具体地转至消息服务器系统108,应用程序接口(api)服务器110耦接至应用服务器112并且向应用服务器112提供编程接口。应用服务器112通信地耦接至数据库服务器118,数据库服务器118有助于访问其中存储有与由应用服务器112处理的消息相关联的数据的数据库120。
45.应用程序接口(api)服务器110在客户端设备102与应用服务器112之间接收和发送消息数据(例如,命令和消息有效载荷)。具体地,应用程序接口(api)服务器110提供一组接口(例如,例程和协议),所述一组接口可以由消息客户端应用104调用或查询,以调用应用服务器112的功能。应用程序接口(api)服务器110公开由应用服务器112支持的各种功能,包括帐户注册、登录功能、经由应用服务器112从特定消息客户端应用104向另一消息客户端应用104发送消息、从消息客户端应用104向消息服务器应用114发送媒体文件(例如,图像或视频)以及用于另一消息客户端应用104的可能访问、设置媒体数据的集合(例如,故事)、检索客户端设备102的用户的好友列表、检索这样的集合、检索消息和内容、向社交图添加和删除好友、定位社交图内好友的位置以及打开应用事件(例如,涉及消息客户端应用104)。
46.应用服务器112托管多个应用和子系统,包括消息服务器应用114、图像处理系统116和社交网络系统122。消息服务器应用114实现了若干消息处理技术和功能,特别是与从消息客户端应用104的多个实例接收到的消息中包括的内容(例如,文本和多媒体内容)的聚合和其他处理有关的消息处理技术和功能。如将进一步详细描述的,来自多个来源的文本和媒体内容可以聚合成内容的集合(例如,称为故事或库)。然后,消息服务器应用114使得这些集合对消息客户端应用104可用。考虑到对数据的其他处理器和存储器密集处理的硬件要求,也可以由消息服务器应用114在服务器侧执行这样的处理。
47.应用服务器112还包括图像处理系统116,图像处理系统116专用于通常关于在消息服务器应用114处的消息的有效载荷内接收的图像或视频执行各种图像处理操作。
48.社交网络系统122支持各种社交联网功能服务,并且使这些功能和服务对消息服务器应用114可用。为此,社交网络系统122维护并访问数据库120内的实体图304(如图3所示)。由社交网络系统122支持的功能和服务的示例包括识别特定用户与之有关系或特定用户“关注”的消息系统100的其他用户,以及识别特定用户的兴趣和其他实体。
49.应用服务器112通信地耦接至数据库服务器118,数据库服务器118有助于访问其中存储有与由消息服务器应用114处理的消息相关联的数据的数据库120。
50.图2是示出根据示例实施方式的关于消息系统100的另外的细节的框图。具体地,消息系统100被示出为包括消息客户端应用104和应用服务器112,它们又包含多个某些子系统,即短暂定时器系统202、集合管理系统204和注释系统206。
51.短暂定时器系统202负责实施对由消息客户端应用104和消息服务器应用114允许的内容的临时访问。为此,短暂定时器系统202结合了多个定时器,这些定时器基于与消息
或消息的集合(例如,故事)相关联的持续时间和显示参数,选择性地显示消息和相关联的内容以及使得能够经由消息客户端应用104访问消息和相关联的内容。下面提供关于短暂定时器系统202的操作的其他细节。
52.集合管理系统204负责管理媒体的集合(例如,文本、图像视频和音频数据的集合)。在一些示例中,内容(例如,包括图像、视频、文本和音频的消息)的集合可以被组织成“事件库”或“事件故事”。可以使这样的集合在指定时间段(例如与内容有关的事件的持续时间)内可用。例如,可以使与音乐会有关的内容在该音乐会的持续时间内作为“故事”可用。集合管理系统204还可以负责向消息客户端应用104的用户界面发布提供存在特定集合的通知的图标。
53.此外,集合管理系统204还包括策展接口208,策展接口208使得集合管理者能够管理和策展特定内容集合。例如,策展接口208使得事件组织者能够策展与特定事件相关的内容集合(例如,删除不适当的内容或冗余消息)。另外,集合管理系统204采用机器视觉(或图像识别技术)和内容规则来自动地策展内容集合。在某些实施方式中,可以向用户支付补偿以将用户生成的内容包括到集合中。在这样的情况下,策展接口208进行操作以自动向这样的用户支付费用以使用其内容。
54.注释系统206提供使得用户能够注释或以其他方式修改或编辑与消息相关联的媒体内容的各种功能。例如,注释系统206提供与生成和发布用于由消息系统100处理的消息的媒体叠加相关的功能。注释系统206基于客户端设备102的地理位置可操作地向消息客户端应用104供应媒体叠加或补充(例如,图像过滤)。在另一示例中,注释系统206基于其他信息(例如客户端设备102的用户的社交网络信息)可操作地向消息客户端应用104供应媒体叠加。媒体叠加可以包括音频和视觉内容以及视觉效果。音频和视觉内容的示例包括图片、文本、标志、动画和声音效果。视觉效果的示例包括颜色叠加。音频和视觉内容或视觉效果可以应用于客户端设备102处的媒体内容项(例如,照片)。例如,媒体叠加可以包括可以叠加在由客户端设备102拍摄的照片之上的文本。在另一示例中,媒体叠加包括位置标识(例如,威尼斯海滩)叠加、实况事件的名称或商家名称(例如,海滩咖啡馆)叠加。在另一示例中,注释系统206使用客户端设备102的地理位置来标识包括客户端设备102的地理位置处的商家的名称的媒体叠加。媒体叠加可以包括与商家相关联的其他标记。媒体叠加可以存储在数据库120中并通过数据库服务器118访问。
55.在一个示例实施方式中,注释系统206提供基于用户的发布平台,该基于用户的发布平台使得用户能够选择地图上的地理位置并上传与所选择的地理位置相关联的内容。用户还可以指定应当向其他用户提供特定媒体叠加的环境。注释系统206生成包括所上传的内容的媒体叠加并将所上传的内容与所选择的地理位置相关联。
56.在另一示例实施方式中,注释系统206提供基于商家的发布平台,该基于商家的发布平台使得商家能够通过投标过程选择与地理位置相关联的特定媒体叠加。例如,注释系统206在预定义时间量内将最高出价商家的媒体叠加与对应的地理位置相关联。
57.图3是示出根据某些示例实施方式的可以存储在消息服务器系统108的数据库120中的数据结构300的示意图。虽然数据库120的内容被示出为包括若干个表,但是应当理解,数据可以存储在其他类型的数据结构中(例如,作为面向对象的数据库)。
58.数据库120包括存储在消息表314内的消息数据。实体表302存储实体数据,包括实
体图304。在实体表302内维护其记录的实体可以包括个人、公司实体、组织、对象、地点、事件等。不管类型如何,消息服务器系统108关于其存储数据的任何实体都可以是被识别的实体。每个实体设置有唯一标识符,以及实体类型标识符(未示出)。
59.实体图304还存储关于实体之间的关系和关联的信息。仅作为示例,这样的关系可以是基于感兴趣的或基于活动的社交关系、专业关系(例如,在共同的公司或组织工作)。
60.数据库120还在注释表312中以过滤器的示例形式存储注释数据。其数据在注释表312内存储的过滤器与视频(其数据存储在视频表310中)和/或图像(其数据存储在图像表308中)相关联并且应用于视频和/或图像。在一个示例中,过滤器是在呈现给接收方用户期间显示为叠加在图像或视频上的叠加。过滤器可以是各种类型,包括当发送方用户正在编写消息时由消息客户端应用104向发送方用户呈现的来自过滤器的库中的用户选择的过滤器。其他类型的过滤器包括地理位置过滤器(也称为地理过滤器),其可以基于地理位置被呈现给发送方用户。例如,基于由客户端设备102的gps单元确定的地理位置信息,消息客户端应用104可以在用户界面内呈现特定于邻域或特定位置的地理位置过滤器。另一类型的过滤器是数据过滤器,其可以由消息客户端应用104基于在消息创建过程期间由客户端设备102收集的其他输入或信息来选择性地呈现给发送方用户。数据过滤器的示例包括特定位置处的当前温度、发送方用户行进的当前速度、客户端设备102的电池寿命或当前时间。
61.可以存储在图像表308内的其他注释数据是与滤镜(例如,滤镜)对应的数据。如本文中所提及的,滤镜是一种类型的媒体叠加。滤镜的一个示例是可以添加至图像或视频的实时特殊效果和声音。
62.如上所述,视频表310存储视频数据,在一个实施方式中,视频数据与在消息表314内维护其记录的消息相关联。类似地,图像表308存储图像数据,该图像数据与其消息数据存储在实体表302中的消息相关联。实体表302可以将来自注释表312的各种注释与存储在图像表308和视频表310中的各种图像和视频相关联。
63.故事表306存储关于消息和相关联的图像、视频或音频数据的集合的数据,这些数据被编译成集合(例如,故事或库)。特定集合的创建可以由特定用户(例如,在实体表302中维持其记录的每个用户)发起。用户可以以已经由该用户创建和发送/广播的内容集合的形式创建“个人故事”。为此,消息客户端应用104的用户界面可以包括用户可选择以使得发送方用户能够将特定内容添加至他或她的个人故事的图标。
64.集合还可以构成作为来自多个用户的内容集合的“实况故事”,该内容集合是手动地、自动地或者使用手动技术和自动技术的组合创建的。例如,“实况故事”可以构成来自不同位置和事件的用户提交的内容的策展流。其客户端设备具有启用的位置服务并且在特定时间处于共同位置事件的用户可以例如经由消息客户端应用104的用户界面被呈现有选项以向特定实况故事贡献内容。可以由消息客户端应用104基于用户的位置向他或她标识实况故事。最终结果是从社区角度讲述的“实况故事”。
65.另外类型的内容集合被称为“位置故事”,其使得其客户端设备102位于特定地理位置(例如,在学院或大学校园)内的用户能够对特定集合做出贡献。在一些实施方式中,对位置故事的贡献可能需要用于验证终端用户属于特定组织或其他实体(例如,是大学校园中的学生)的二级认证。
66.图4是示出根据一些实施方式的消息400的结构的示意图,消息400由消息客户端
应用104生成以传送至另一消息客户端应用104或消息服务器应用114。特定消息400的内容用于填充存储在数据库120中的消息表314,该消息表314可由消息服务器应用114访问。类似地,消息400的内容作为客户端设备102或应用服务器112的“在途”或“飞行中”数据存储在存储器中。消息400被示为包括以下组成部分:
67.●
消息标识符402:标识消息400的唯一标识符。
68.●
消息文本有效载荷404:要由用户经由客户端设备102的用户界面生成并且包括在消息400中的文本。
69.●
消息图像有效载荷406:由客户端设备102的摄像装置部件捕获或从客户端设备102的存储器部件检索并且包括在消息400中的图像数据。
70.●
消息视频有效载荷408:由摄像装置部件捕获或从客户端设备102的存储器部件检索并且包括在消息400中的视频数据。
71.●
消息音频有效载荷410:由麦克风捕获或从客户端设备102的存储器部件检索并且包括在消息400中的音频数据。
72.●
消息注释412:表示要应用于消息400的消息图像有效载荷406、消息视频有效载荷408或消息音频有效载荷410的注释的注释数据(例如,过滤器、贴纸或其他增强)。
73.●
消息持续时间参数414:以秒为单位指示消息的内容(例如,消息图像有效载荷406、消息视频有效载荷408、消息音频有效载荷410)将被呈现给用户或使得用户可经由消息客户端应用104访问的时间量的参数值。
74.●
消息地理位置参数416:与消息的内容有效载荷相关联的地理位置数据(例如,纬度和经度坐标)。多个消息地理位置参数值416可以被包括在有效载荷中,这些参数值中的每一个参数值关于包括在内容中的内容项(例如,消息图像有效载荷406内的特定图像或消息视频有效载荷408中的特定视频)相关联。
75.●
消息故事标识符418:标识与消息400的消息图像有效载荷406中的特定内容项相关联的一个或更多个内容集合(例如,“故事”)的标识符值。例如,可以使用标识符值将消息图像有效载荷406内的多个图像各自与多个内容集合相关联。
76.●
消息标签420:每个消息400可以用多个标签来标记,多个标签中的每个标签指示包括在消息有效载荷中的内容的主题。例如,在消息图像有效载荷406中包括的特定图像描绘动物(例如狮子)的情况下,可以在消息标签420中包括指示相关动物的标签值。标签值可以基于用户输入手动地生成,或者可以使用例如图像识别自动地生成。
77.●
消息发送者标识符422:指示在其上生成消息400并且从其发送消息400的客户端设备102的用户的标识符(例如,消息系统标识符、电子邮件地址或设备标识符)。
78.●
消息接收者标识符424:指示消息400寻址到的客户端设备102的用户的标识符(例如,消息系统标识符、电子邮件地址或设备标识符)。
79.消息400的各个组成部分的内容(例如,值)可以是指向在其内存储内容数据值的表中的位置的指针。例如,消息图像有效载荷406中的图像值可以是指向图像表308内的位置(或地址)的指针。类似地,消息视频有效载荷408内的值可以指向存储在视频表310内的数据,存储在消息注释412中的值可以指向存储在注释表312中的数据,存储在消息故事识别符418中的值可以指向存储在故事表306中的数据,并且存储在消息发送者标识符422和消息接收者标识符424中的值可以指向存储在实体表302内的用户记录。
80.图5是示出访问限制过程500的示意图,根据该访问限制过程,对内容(例如,短暂消息502和相关联的数据的多媒体有效载荷)或内容集合(例如,短暂消息组504)的访问可以是时间受限的(例如,短暂的)。
81.短暂消息502被示为与消息持续时间参数506相关联,消息持续时间参数506的值确定消息客户端应用104将向短暂消息502的接收方用户显示短暂消息502的时间量。在一个实施方式中,取决于发送方用户使用消息持续时间参数506指定的时间量,接收方用户可查看短暂消息502上至最多10秒。
82.消息持续时间参数506和消息接收者标识符424被示出为消息定时器512的输入,消息定时器512负责确定向由消息接收者标识符424标识的特定接收方用户示出短暂消息502的时间量。特别地,仅在由消息持续时间参数506的值确定的时间段内向相关接收方用户示出短暂消息502。消息定时器512被示出为向短暂定时器系统202的更一般化实现方式提供输出,该短暂定时器系统202负责向接收方用户显示内容(例如,短暂消息502)的总体定时。
83.图5中示出的短暂消息502被包括在短暂消息组504(例如,个人故事或事件故事中的消息的集合)内。短暂消息组504具有相关联的组持续时间参数508,组持续时间参数508的值确定短暂消息组504被呈现并可由消息系统100的用户访问的持续时间。例如,组持续时间参数508可以是音乐会的持续时间,其中,短暂消息组504是属于该音乐会的内容的集合。替选地,当执行短暂消息组504的设置和创建时,用户(拥有用户或策展者用户)可以指定组持续时间参数508的值。
84.另外,短暂消息组504内的每个短暂消息502具有相关联的组参与参数510,组参与参数510的值确定在短暂消息组504的上下文内可访问短暂消息502的持续时间。因此,在短暂消息组504本身根据组持续时间参数508到期之前,特定的短暂消息组504可以“到期”并且在短暂消息组504的上下文中变得不可访问。组持续时间参数508、组参与参数510和消息接收者标识符424各自向组定时器514提供输入,组定时器514可操作地首先确定短暂消息组504的特定短暂消息502是否将被显示给特定接收方用户,并且如果是,则确定显示多长时间。注意,由于消息接收者标识符424,短暂消息组504也知道特定接收方用户的身份。
85.因此,组定时器514可操作地控制相关联的短暂消息组504以及包括在短暂消息组504中的单独的短暂消息502的总使用期限。在一个实施方式中,短暂消息组504内的每个短暂消息502在由组持续时间参数508指定的时间段内保持可查看和可访问。在另一实施方式中,在短暂消息组504的上下文内,某个短暂消息502可以基于组参与参数510而到期。注意,即使在短暂消息组504的上下文内,消息持续时间参数506也仍然可以确定向接收方用户显示特定短暂消息502的持续时间。因此,消息持续时间参数506确定向接收方用户显示特定短暂消息502的持续时间,而不管接收方用户是在短暂消息组504的上下文之内还是之外查看该短暂消息502。
86.短暂定时器系统202还可以基于确定已经超过相关联的组参与参数510而从短暂消息组504中可操作地移除特定的短暂消息502。例如,当发送方用户已经建立了从发布起24小时的组参与参数510时,短暂定时器系统202将在指定的24小时之后从短暂消息组504中移除相关的短暂消息502。当针对短暂消息组504内的每个短暂消息502的组参与参数510已经到期时,或者当短暂消息组504本身根据组持续时间参数508已经到期时,短暂定时器
系统202还进行操作以移除短暂消息组504。
87.在某些使用情况下,特定短暂消息组504的创建者可以指定无期限的组持续时间参数508。在这种情况下,针对短暂消息组504内最后剩余的短暂消息502的组参与参数510的到期将确定短暂消息组504本身何时到期。在这种情况下,添加至短暂消息组504的具有新的组参与参数510的新的短暂消息502有效地将短暂消息组504的寿命延长到等于组参与参数510的值。
88.响应于短暂定时器系统202确定短暂消息组504已经到期(例如,不再是可访问的),短暂定时器系统202与消息系统100(并且例如特别是消息客户端应用104)通信,以使得与相关短暂消息组504相关联的标记(例如,图标)不再显示在消息客户端应用104的用户界面内。类似地,当短暂定时器系统202确定针对特定短暂消息502的消息持续时间参数506已经到期时,短暂定时器系统202使消息客户端应用104不再显示与短暂消息502相关联的标记(例如,图标或文本标识)。
89.图6是示出根据某些示例实施方式的实现后处理图形流水线的注释系统206的各种模块的框图600。注释系统206被示为包括跟踪引擎610、后处理引擎620、呈现引擎630和共享引擎640。注释系统206的各个模块被配置成(例如,经由总线、共享存储器或交换机)彼此通信。这些模块中的任何一个或更多个模块可以使用一个或更多个计算机处理器605来实现(例如,通过将这样的一个或更多个计算机处理器配置成执行针对该模块描述的功能),并且因此可以包括计算机处理器605中的一个或更多个(例如,由客户端设备102提供的一组处理器)。在另一实施方式中,计算机处理器605是指由服务器或服务器系统(例如消息服务器系统108)提供的一组处理器。
90.所描述的模块中的任何一个或更多个模块可以单独使用硬件来实现(例如,机器(例如,机器3100)的计算机处理器605中的一个或更多个)或者硬件和软件的组合来实现。例如,注释系统206的任何所描述的模块可以物理地包括被配置成执行本文针对该模块所描述的操作的一个或更多个计算机处理器605(例如,机器(例如,机器3100)的一个或更多个计算机处理器的子集或其中的一个或更多个计算机处理器)的布置。作为另一示例,注释系统206的任何模块可以包括软件、硬件或软件和硬件两者,其将(例如,在机器(例如,机器3100)的一个或更多个计算机处理器中的)一个或更多个计算机处理器605的布置配置成执行本文针对该模块描述的操作。因此,注释系统206的不同模块可以包括并配置这样的计算机处理器605的不同布置或这样的计算机处理器605在不同时间点处的单个布置。此外,注释系统206的任何两个或更多个模块可以被组合成单个模块,并且本文针对单个模块描述的功能可以在多个模块之间细分。此外,根据各种示例实施方式,本文被描述为在单个机器、数据库或设备内实现的模块可以跨多个机器、数据库或设备分布。
91.为了清楚地解释以下技术概念的目的,下面的讨论涉及单个输入帧。然而,应当理解,对于包括多个帧(例如,视频)的媒体内容,下面的讨论也将适用。
92.后处理引擎620接收由客户端设备102捕获的输入帧602(例如包括在捕获的图像或视频中的)。例如,输入帧602可以是在捕获图像或视频期间由客户端设备102的光学传感器(例如,摄像装置)捕获的图像。在示例中,图像包括一个或更多个真实世界特征,例如在图像中检测到的物理对象。在一些实施方式中,输入帧602包括描述如本文中进一步讨论的图像和/或其他信息的元数据。
93.如进一步所示,跟踪引擎610接收输入帧602(或替选地,实施方式中输入帧602的副本)。跟踪引擎610可以包括基于要跟踪的对象类型的各种跟踪功能。在示例中,跟踪引擎610包括用于表面跟踪、面部跟踪、对象跟踪等的跟踪能力。在实现方式中,跟踪引擎610可以一次仅执行多个跟踪过程中的每一个中的一个,以有助于客户端设备102处的计算资源的管理。另外,跟踪引擎610可以对输入帧602执行一个或更多个对象识别操作。
94.如本文中所提及的,跟踪是指用于在后处理阶段期间确定给定对象(或其部分)的空间属性(例如,位置和/或取向)的操作。在实现方式中,在跟踪期间,以连续的方式测量对象的位置和取向。可以跟踪不同的对象,例如用户的头部、眼睛或肢体、表面或其他对象。跟踪涉及动态感测和测量以使得能够相对于与场景(例如,输入帧602)对应的三维空间中的物理对象来呈现虚拟对象和/或效果。因此,跟踪引擎610确定与输入帧602中的一个或更多个物理对象的至少相对位置和取向对应的度量,并且将这些度量包括在提供给后处理引擎620的跟踪数据606中。在示例中,跟踪引擎610从帧到后续帧更新(例如,随时间跟踪)这样的度量。
95.在实现方式中,注释系统206可以利用将来自设备的运动传感器(例如,加速度计和陀螺仪传感器等)的信息与对输入帧602中提供的场景的分析相结合的技术。例如,注释系统206检测输入帧602中的特征,并且因此,使用至少部分地基于来自设备的运动传感器的数据而得出的信息来跟踪这样的特征在若干输入帧上的相应位置中的差异。
96.如本文所述,表面跟踪是指用于跟踪与输入帧中的平面(例如,给定的水平面、地板、桌子)对应的表面的一个或更多个表示的操作。在示例中,表面跟踪是使用命中测试和/或射线投射技术来完成的。在示例中,命中测试确定输入帧中的选定点(例如,像素或像素的集合)是否与输入帧中的物理对象的表示的表面或平面相交。在示例中,射线投射利用基于笛卡尔的坐标系(例如,x和y坐标),并且将射线(例如,矢量)投射到如在输入帧中捕获的摄像装置的世界视图中,以检测射线相交的平面。
97.如本文所提及的,面部跟踪是指用于跟踪输入帧中的面部特征(例如用户面部的部分)的表示的操作。在一些实施方式中,跟踪引擎610包括面部跟踪逻辑以识别一个或更多个图像内的面部的全部或一部分并且跨视频流的该组图像来跟踪面部的标记点。如本文所提及的,对象跟踪是指跟踪输入帧中的物理对象的表示。
98.在实现方式中,跟踪引擎610提供与前述度量(例如,位置和取向)对应的跟踪数据606作为输出。在一些情况下,跟踪引擎610包括用于形状识别、边缘检测或任何其他合适的对象检测机制的逻辑。还可以由跟踪引擎610将感兴趣对象确定为预定对象类型的示例、将范围内的形状、边缘或标记点与预定对象类型的集合中的对象类型相匹配。
99.后处理引擎620修改虚拟内容(例如,改变其大小、比例、方向/取向、颜色、形状),例如执行影响虚拟对象的视觉外观和/或位置的操作,所述虚拟对象可以被锚定到输入帧602的场景中的物理对象的表示。
100.后处理引擎620接收媒体叠加元数据604和输入帧602。在示例中,媒体叠加元数据604包括关于由后处理引擎620作为效果应用于输入帧602的一组媒体叠加的信息。在示例中,媒体叠加元数据604包括以下结合图7进一步描述的信息,该信息可以作为输入帧602的一部分被包括(或单独存储)。
101.在实施方式中,后处理引擎620利用机器学习技术,使用媒体叠加元数据604对输
入帧602中的面部特征应用图像处理。机器学习模型的一个示例是已经被训练成通过基于训练数据(例如,数千个图像)标记面部特征的边界来生成“平均面部”的机器学习模型(例如,一个或更多个神经网络)。在该示例中,机器学习模型生成“平均面部”,该“平均面部”可以用于与输入帧602中检测到的面部(例如,感兴趣对象)对准,以用于执行图像处理来修改输入帧以生成输出帧608。此外,后处理引擎620可以对上述感兴趣对象的部分执行一个或更多个修改以生成经修改的输入帧(例如,输出帧608)。
102.在一个实施方式中,后处理引擎620与共享引擎640协作生成消息。该消息包括输出帧608、媒体叠加元数据609和/或其他元数据(例如,如本文所述),以及在一些情况下,原始输入帧602。共享引擎640将所生成的消息从客户端设备102发送至一个或更多个其他客户端设备、消息服务器系统108或客户端设备102的存储设备。此外,应当理解,通过包括原始输入帧602,示例实施方式使得能够提供对消息的非破坏性编辑,由此可以将不同的图像处理操作应用于原始输入帧602,这代替了对输出帧608执行的先前图像处理操作。
103.此外,呈现引擎630使用媒体叠加元数据609来执行用于由消息客户端应用104显示的内容的呈现。可以结合本文进一步描述的图形处理流水线和/或媒体叠加堆叠(例如,将多个媒体叠加应用于媒体内容)来执行该呈现。
104.虽然以上关于图6的讨论涉及输入帧,但是应当理解,注释系统的前述部件可以对与这样的视频内容的各个帧对应的一组图像(例如,视频)执行类似的操作。
105.图7是示出根据一些实施方式的包括与用于对图像(例如,输入帧702)进行后处理的元数据对应的附加信息的(如图4中所描述的)消息注释412的结构的示意图。
106.在实施方式中,包括图7所示的附加数据的(如图3所示的)特定消息400的内容被用于填充存储在数据库120内的用于给定消息的消息表314,然后该消息表314可由消息客户端应用104访问。如图7所示,消息注释412包括对应于与后处理操作有关的数据的以下组成部分:
107.○
媒体叠加标识符752:在具有后处理的消息中使用的媒体叠加的标识符
108.○
消息标识符754:具有后处理的消息的标识符
109.○
资产标识符756:用于具有后处理的消息中的资产的一组标识符。例如,可以针对由特定媒体叠加确定的资产包括相应的资产标识符。在实施方式中,这样的资产由发送者侧客户端设备上的媒体叠加创建,上载至消息服务器应用114,并且在接收者侧客户端设备上使用,以重新创建消息。典型资产的示例包括:
110.■
由摄像装置捕获的原始静态rgb图像
111.■
具有应用于原始图像的媒体叠加效果的后处理图像
112.○
媒体叠加元数据758:与对应于媒体叠加标识符752的媒体叠加相关联的附加元数据,例如:
113.○
媒体叠加类别:对应于特定媒体叠加的类型或分类
114.○
媒体叠加轮播索引
115.○
轮播组:当符合条件的捕获后媒体叠加被插入到轮播界面中时,轮播组可以被填充和使用。在实现方式中,可以将新值“post_capture_lens_default_group”(例如,分配给捕获后媒体叠加的默认组)添加至有效组名的列表中,并且可以将捕获后媒体叠加包括在该组中,除非另一组已经明确地设置成与数据存储中的地理位置实体的元数据对应。
116.○
与附加元数据对应的元数据760,例如:
117.○
摄像装置图像元数据
118.■
摄像装置内部数据
119.●
焦距
120.●
主点
121.■
其他摄像装置信息(例如,摄像装置位置)
122.○
传感器信息
123.■
陀螺仪传感器数据
124.■
位置传感器数据
125.■
加速计传感器数据
126.■
其他传感器数据
127.■
定位传感器数据
128.图8a和图8b示出了根据一些实施方式的用户捕获用于在消息客户端应用104(或消息系统100)中进行后处理的图像的示例。
129.图8a示出了根据各个实施方式的其中用户802正在捕获物理项的图像的示例情况。虽然在图8a中仅示出了便携式客户端设备(例如,客户端设备102),但是应当理解,根据本文讨论的各种实施方式,各种类型的电子或计算设备能够捕获、接收和/或处理图像。这些客户端设备可以包括例如台式pc、膝上型计算机、平板计算机、个人数字助理(pda)、智能电话、便携式媒体文件播放器、电子书阅读器、便携式计算机、头戴式显示器、交互亭(kiosk)、移动电话、上网本、单板计算机(sbc)、嵌入式计算机系统、可穿戴计算机(例如手表或眼镜)、游戏控制台、家庭影院pc(htpc)、tv、dvd播放器、数字电缆盒、数字视频记录器(dvr)、能够运行web浏览器的计算机系统或者这些中的任何两个或更多个的组合等。
130.客户端设备102可以具有至少一个摄像装置806。每个摄像装置可以是例如电荷耦合器件(ccd)、互补金属氧化物半导体(cmos)或n型金属氧化物半导体(nmos)中的有源像素传感器、红外或超声图像传感器、或利用其他类型的图像捕获技术的图像传感器。
131.如图8a的示例所示,用户802可以定位客户端设备102,使得包括各种面部特征的用户面部在客户端设备102的至少一个摄像装置806的视场808内。至少一个摄像装置806可以捕获静止图像,该静止图像可以被存储到本地和/或远程存储装置,以用于在随后的时间进行后处理。在一些实施方式中,至少一个摄像装置806捕获视频,从而提供所捕获的视频信息的“实况”视图,该“实况”视图可以被存储到本地和/或远程存储装置,以用于在随后的时间进行后处理。
132.在捕获后阶段,从存储装置访问先前捕获的图像以用于进一步处理(例如,后处理)。如图8b的示例所示,包括用户802的面部表示的图像812显示在客户端设备102的显示屏幕852上。然后,用户可以选择各种媒体叠加,以将效果和修改应用于所显示的图像。
133.图9a和图9b示出了根据一些实施方式的消息客户端应用104(或消息系统100)中的后处理的示例。如这些示例中所示,示例实施方式使得能够将各种媒体叠加应用于不同层中的先前捕获图像和/或视频,使得相应的图形元素和/或效果彼此叠加。
134.如图9a和图9b所示,客户端设备102可以提供媒体叠加的显示,所述媒体叠加可以包括与动画、媒体内容、文本内容等对应的视觉和音频内容。应当理解,由客户端设备102显
示的媒体叠加可以包括如之前关于图1和图2所描述的音频和视觉内容以及视觉效果。
135.如图9a所示,在客户端设备102的显示屏幕852中示出了包括用户802的面部表示的图像812。将第一媒体叠加910应用于图像812。本主题技术的实施方式使得能够将多个媒体叠加应用于诸如图像812的给定图像。
136.如图9b所示,将第二媒体叠加912应用于包括第一媒体叠加的图像。第二媒体叠加912与第一媒体叠加910一起显示在显示屏幕852中。以这种方式,可以将多个媒体叠加应用于图像,从而产生与图像一起显示的效果和图形元素,以提供具有若干所应用的媒体叠加的合成图像。
137.图10a和图10b示出了根据一些实施方式的消息客户端应用104(或消息系统100)中的后处理的其他示例。如这些附加示例中所示,示例实施方式使得能够将各种媒体叠加应用于不同层中的先前捕获图像和/或视频,使得相应的图形元素和/或效果彼此叠加。更具体地,图10a和图10b中所示的示例包括多个用户的图像,在这些图像上可以不同程度地应用相应的媒体叠加作为后处理操作,以提供可以被提供用于彼此结合显示的视觉和/或音频效果。
138.如图10a和图10b所示,客户端设备102提供媒体叠加的显示,所述媒体叠加可以包括与动画、媒体内容、文本内容等对应的视觉和音频内容。如前所述,应当理解,由客户端设备102显示的媒体叠加可以包括如之前关于图1和图2所描述的音频和视觉内容以及视觉效果。
139.如图10a所示,图像1010包括在客户端设备102的显示屏幕852中示出的包括若干用户(例如,不同的人)的场景的表示。将第一媒体叠加1012应用于场景中心的第一用户,如图所示,第一媒体叠加提供虚拟眼镜(例如,虚拟眼镜或镜)的图形表示。
140.如图10b所示,将第二媒体叠加1014和第三媒体叠加1016与第一媒体叠加应用于图像1010。第二媒体叠加1014和第三媒体叠加1016与第一媒体叠加1012一起显示。在该示例中,第二媒体叠加1014包括图形元素的动画(例如,叶子的虚拟表示),并且第三媒体叠加1016包括遮挡用户的相应面部的图形元素。因此,可以将多个媒体叠加应用于具有多个人的图像,从而产生与图像一起显示的效果和图形元素,以提供具有若干个所应用的媒体叠加的合成图像。
141.为了使得能够选择用于应用的媒体叠加作为一个或更多个后处理操作,示例实施方式提供了各种用户界面实现方式,以有助于响应于由给定用户提供的各种输入的交互式面向用户体验。在一些实施方式中,消息客户端应用104可以提供如以下关于图11所讨论的示例用户界面。
142.在下面的讨论中,示例实施方式使得能够递送和有组织地呈现用于后处理媒体内容的媒体叠加。在一些示例中,媒体叠加可以在后处理阶段期间与先前捕获的媒体内容(例如,图像和/或视频)一起显示。如本文进一步描述的,当用户在用户界面内执行特定触摸输入手势(例如,滑动或拖动手势)时,特定媒体叠加被识别并呈现给用户。
143.图11示出了根据一些实施方式的用于选择对消息客户端应用104(或消息系统100)中的内容(例如,图像或视频)应用后处理的媒体叠加的用户界面的示例。
144.如图11所示,客户端设备102提供媒体叠加的显示,所述媒体叠加可以包括与动画、媒体内容、文本内容等对应的视觉和音频内容。如前所述,应当理解,由客户端设备102
显示的媒体叠加可以包括如上关于图1和图2所述的音频和视觉内容以及视觉效果。
145.如用户界面1100中所示,在客户端设备102的显示屏幕852中显示了与具有人的肖像的场景表示对应的图像1105,该图像1105包括第一媒体叠加1110(例如,指示星期几的图形文本)。在示例中,基于手势输入(例如,滑动、触摸输入等)来选择第一媒体叠加1110,该手势输入提供所选择的第一媒体叠加1110的呈现以在图像上显示媒体叠加的预览。在图11的示例中,可以由消息客户端应用10(或消息系统100)接收手势输入,手势输入触发对相应媒体叠加的选择,然后提供该选择以进行显示,手势输入还可以引起从包括一个或更多个媒体叠加的合成图像的呈现中移除当前相应的媒体叠加。
146.如进一步所示,在用户界面1100中,提供第二媒体叠加1120以用于在客户端设备102的显示屏幕852中显示。在示例中,响应于手势输入(例如,滑动)来显示第二媒体叠加1120,并且然后随着手势输入在客户端设备102的显示屏幕852上移动(例如,如由向左箭头所指示的)以渐进的方式显示第二媒体叠加1120。第二媒体叠加1120还包括文本和图标叠加1130(例如,“骑自行车的大胡须家伙”),文本和图标叠加1130指示用于在后处理期间应用的所选媒体叠加的描述。在该示例中,第二媒体叠加1120用作第一媒体叠加1110到新选择的媒体叠加之间的过渡的过渡效果。如进一步所示,第一媒体叠加1110被示为随着手势输入在显示屏幕852上前进而向外移动并最终从显示屏幕852消失。
147.图12示出了根据一些实施方式的用于选择对消息客户端应用104(或消息系统100)中的内容(例如,图像或视频)应用后处理的媒体叠加的用户界面的示例,其遵循图11a和图11b中描述的示例。
148.如图12所示,客户端设备102可以提供媒体叠加的显示,所述媒体叠加可以包括与动画、媒体内容、文本内容等对应的视觉和音频内容。如前所述,应当理解,由客户端设备102显示的媒体叠加可以包括如之前关于图1和图2所描述的音频和视觉内容以及视觉效果。
149.如用户界面1100中所示,在客户端设备102的显示屏幕852中显示了与具有人的肖像的场景1205的表示(例如,与上述图11中的表示相同或相似的表示)对应的图像,该图像包括第二媒体叠加1120(例如,过渡效果)以及文本和图标叠加1130。在示例中,在上述图11中的手势输入(例如,滑动、触摸输入等)结束之后,第二媒体叠加1120被显示在整个显示屏幕852中。如进一步所示,显示图形指示1210以指示当前正在执行与所选择的媒体叠加有关的后处理操作(例如,作为后台进程)以准备呈现所选择的媒体叠加。
150.如在用户界面1100中进一步示出的,现在将所选择的媒体叠加作为场景1205的表示中的第三媒体叠加1230与人的肖像一起显示在客户端设备102的显示屏幕852中。以这种方式,可以利用一个或更多个手势输入提供不同的所选择的媒体叠加以进行显示。在另一示例中,可以接收后续手势输入,该后续手势输入重复图11和图12中描述的其中将另一媒体叠加应用于场景的表示的类似操作。
151.虽然在图11和图12的示例中讨论了手势输入,但是应当理解,可以接收其他输入,包括基于非触摸的输入和/或基于移动的输入(例如,来自诸如虚拟现实(vr)、混合现实(mr)或增强现实(ar)设备的头戴式显示器)。
152.如上所述,诸如滤镜的媒体叠加、叠加、图像转换、ar图像和类似术语是指可以对视频或图像进行的修改。这包括实时修改,实时修改在使用设备传感器捕获图像时修改该
图像,并且然后将具有修改的图像显示在设备的屏幕上。这还包括对所存储的内容的修改,例如对可以被修改的库中的视频剪辑的修改。例如,在访问多个媒体叠加(例如,滤镜)的设备中,用户可以使用具有多个滤镜的单个视频剪辑来查看不同的滤镜将如何修改所存储的剪辑。例如,可以通过为内容选择不同的滤镜来将应用不同伪随机移动模型的多个滤镜应用于相同的内容。类似地,实时视频捕获可以与示出的修改一起使用,以显示当前由设备的传感器捕获的视频图像将如何修改所捕获的数据。这样的数据可以简单地显示在屏幕上而不存储在存储器中,或者由设备传感器捕获的内容可以在进行或不进行修改(或两者)的情况下被记录并存储在存储器中。在一些系统中,预览功能可以同时在显示器的不同窗口中示出不同滤镜看起来如何。例如,这可以使得能够同时在显示器上查看具有不同伪随机动画的多个窗口。
153.因此,数据以及用以利用该数据使用滤镜或其他这样的转换系统来修改内容的各种系统可以涉及:检测对象(例如,面部、手、身体、猫、狗、表面、对象等),在这样的对象在视频帧中离开视场、进入视场和围绕视场移动时跟踪这样的对象,以及在跟踪这些对象时对其进行修改或转换。在各种实施方式中,可以使用用于实现这样的转换的不同方法。例如,一些实施方式可能涉及生成一个或更多个对象的三维网格模型,并使用视频中模型的转换和动画纹理来实现转换。在其他实施方式中,对象上的点的跟踪可以用于将图像或纹理(其可以是二维或三维的)放置在所跟踪的位置处。在又一实施方式中,视频帧的神经网络分析可以用于将图像、模型或纹理放置在内容(例如,图像或视频帧)中。因此,滤镜数据既指用于创建内容转换的图像、模型和纹理,也指通过对象检测、跟踪和放置实现这样的转换所需的附加建模和分析信息。
154.可以使用保存在任何类型的计算机化系统的存储器中的任何类型的视频数据(例如,视频流、视频文件等)来执行实时视频处理。例如,用户可以加载视频文件并将其保存在设备的存储器中,或者可以使用设备的传感器生成视频流。此外,可以使用计算机动画模型来处理任何对象,例如人的面部和人身体的各部分、动物或非生物,例如椅子、汽车或其他对象。
155.在一些实施方式中,当与要转换的内容一起选择特定的修改时,由计算设备识别要转换的元素,并且然后在要转换的元素存在于视频的帧中的情况下对要转换的元素进行检测和跟踪。根据修改请求修改对象的元素,因此转换视频流的帧。可以通过用于不同种类的转换的不同方法来执行视频流的帧的转换。例如,对于主要涉及改变对象元素形式的帧转换,计算对象的元素中的每一个的特征点(例如,使用主动形状模型(asm)或其他已知方法)。然后,针对对象的至少一个元素中的每一个生成基于特征点的网格。该网格用于跟踪视频流中的对象元素的后续阶段。在跟踪过程中,所提及的每个元素的网格与每个元素的位置对准。然后,在网格上生成附加点。基于修改请求针对每个元素生成第一点的第一集合,并且基于第一点的集合和修改的请求针对每个元素生成第二点的集合。然后,可以通过基于第一点的集合和第二点的集合以及网格修改对象的元素,对视频流的帧进行转换。在这样的方法中,通过跟踪和修改背景,也可以改变被修改的对象的背景或使被修改的对象的背景变形。
156.在一个或更多个实施方式中,可以通过计算对象的每个元素的特征点并基于所计算的特征点生成网格,来执行使用对象的元素来改变对象的一些区域的转换。在网格上生
成点,并且然后生成基于点的各种区域。然后,通过将每个元素的区域与至少一个元素中的每一个的位置对准来跟踪对象的元素,并且可以基于修改的请求来修改区域的属性,从而转换视频流的帧。根据具体的修改请求,所提及的区域的属性可以以不同的方式进行转换。这样的修改可能涉及:改变区域的颜色;从视频流的帧中去除区域的至少一些部分;将一个或更多个新对象包括在基于修改请求的区域中;以及修改区域或对象的元素或使区域或对象的元素变形。在各种实施方式中,可以使用这样的修改的任何组合或其他类似修改。对于要被动画化的某些模型,可以选择一些特征点作为控制点,以用于确定用于模型动画的选项的整个状态空间。
157.在用以使用面部检测转换图像数据的计算机动画模型的某些实施方式中,通过使用特定面部检测算法(例如,viola-jones)在图像上检测面部。然后,将主动形状模型(asm)算法应用于图像的面部区域以检测面部特征参考点。
158.在其他实施方式中,可以使用其他适合面部检测的方法和算法。例如,在一些实施方式中,使用标记点来定位特征,该标记点表示存在于所考虑的大多数图像中的可区分点。例如,对于面部标记点,可以使用左眼瞳孔的定位。在初始标记点不可识别(例如,如果人戴有眼罩)时,可以使用次要标记点。这样的标记点识别过程可以用于任何这样的对象。在一些实施方式中,标记点的集合形成形状。可以使用形状中的点的坐标将形状表示为矢量。一个形状利用相似转换(允许平移、缩放和旋转)与另一个形状对准,该相似转换使形状点之间的平均欧几里德距离最小化。平均形状是对准的训练形状的均值。
159.在一些实施方式中,开始从与由全局面部检测器确定的面部的位置和尺寸对准的平均形状中搜索标记点。然后,这样的搜索重复以下步骤:通过每个点周围的图像纹理的模板匹配来调整形状点的定位而建议暂定形状,并且然后使暂定形状符合全局形状模型,直至发生收敛。在一些系统中,单个模板匹配是不可靠的,并且形状模型将弱模板匹配器的结果集中在一起,形成更强的整体分类器。整个搜索在从粗略分辨率到精细分辨率的图像金字塔的每个级别上重复。
160.转换系统的实施方式可以在客户端设备上捕获图像或视频流并在诸如客户端设备102的客户端设备上本地执行复杂的图像操纵,同时保持合适的用户体验、计算时间和功耗。复杂的图像操纵可以包括尺寸和形状变化、情绪转移(例如,将面部从皱眉变为微笑)、状态转移(例如,使主体变老、减少表观年龄、改变性别)、风格转移、图形元素应用,以及由已经被配置成在客户端设备上高效执行的卷积神经网络实现的任何其他合适的图像或视频操纵。
161.在一些示例实施方式中,用于转换图像数据的计算机动画模型可以由系统使用,其中用户可以使用客户端设备102捕获用户的图像或视频流(例如,自拍照),该客户端设备102具有作为在客户端设备102上运行的消息应用104的一部分运行的神经网络。在消息应用104内运行的转换系统确定图像或视频流中的面部的存在并提供与计算机动画模型相关联的修改图标以转换图像数据或者计算机动画模型可以被呈现为与本文中描述的界面相关联。修改图标包括改变,该改变可以是作为修改操作的一部分来修改图像或视频流中的用户面部的基础。一旦选择了修改图标,转换系统就启动用于转变用户的图像的处理以反映所选择的修改图标(例如,对用户生成笑脸)。在一些实施方式中,一旦捕获了图像或视频流并且选择了指定的修改,就可以在移动客户端设备上显示的图形用户界面中呈现修改后
的图像或视频流。转换系统可以对图像或视频流的一部分实施复杂的卷积神经网络,以生成并应用所选择的修改。也就是说,一旦选择了修改图标,用户可以捕获图像或视频流,并且实时或接近实时地被呈现修改的结果。此外,当视频流被捕获并且所选修改图标保持打开时,修改可以是持续的。机器教导的神经网络可以用于实现这样的修改。
162.在一些实施方式中,呈现由转换系统执行的修改的图形用户界面可以为用户供应附加的交互选项。这样的选项可以基于用于启动内容捕获和特定计算机动画模型的选择的界面(例如,从内容创建者用户界面启动)。在各种实施方式中,修改可以在修改图标的初始选择之后持续。用户可以通过敲击或以其他方式选择由转换系统修改的面部来打开或关闭修改。并将其存储以供以后查看或者浏览成像应用的其他区域。在由转换系统修改多个面部的情况下,用户可以通过敲击或选择在图形用户界面内修改和显示的单个面部来全局打开或关闭修改。在一些实施方式中,可以通过敲击或选择图形用户界面内显示的单独面部或一系列单独面部来单独修改一组多个面部中的各个面部,或者单独进行这样的修改。
163.在一些示例实施方式中,提供了图形处理流水线架构,其使得能够在对应的不同层中应用不同的媒体叠加。这样的图形处理流水线提供可扩展呈现引擎,可扩展呈现引擎用于提供包括在合成媒体(例如,图像或视频)中的多个媒体叠加,以由消息客户端应用104(或消息系统100)呈现。
164.在本文描述的实现方式中,可以将二维(2d)对象或来自三维(3d)世界(真实或假想)的对象呈现到2d显示屏幕上的计算机图形系统当前被用于广泛的多种应用中。在一些实现方式中,这样的图形系统(例如,包括在客户端设备102上的图形系统)包括图形处理单元(gpu),用于执行图像处理操作和呈现图形元素以进行显示。以下关于图13和图14的下述论述描述了示例图形处理流水线。在一些实施方式中,结合以上关于至少图8a、图8b、图9a、图9b、图10a、图10b、图11和图12描述的操作来利用示例图形处理流水线,以提供对用于媒体内容的后处理的各种媒体叠加的分层。
165.在实现方式中,gpu包括逻辑图形处理流水线,逻辑图形处理流水线可以接收2d或3d场景的表示且提供表示2d图像的位图的输出以进行显示。现有的应用编程接口(api)已经实现了图形流水线模型。这样的api的示例包括开放图形库(opengl)api和metal api。图形处理流水线包括将一组顶点、纹理、缓冲器和状态信息转换成画面上的图像帧的若干阶段。在实现方式中,图形处理流水线的阶段之一是着色器,着色器可以用作应用于输入帧(例如,图像或视频)的特定媒体叠加的一部分。着色器可以实施为在通常执行若干计算线程的专用处理单元(也称为着色器单元或着色器处理器)上运行的代码,代码被编程以对正在被呈现的片段生成适当等级的色彩和/或特定效果。例如,顶点着色器处理顶点的属性(位置、纹理坐标、色彩等),并且像素着色器处理像素的属性(纹理值、色彩、z深度和α值)。在一些实例中,像素着色器称为片段着色器。
166.应当理解,可以提供其他类型的着色器处理。在示例中,在图形处理流水线内利用特定采样速率来呈现整个帧,并且/或者以特定每像素速率执行像素着色。以这种方式,给定电子设备(例如,客户端设备102)操作图形处理流水线以将与对象对应的信息转换成可以由电子设备显示的位图。在一些实现方式中,示例实施方式提供了如上所述的图形处理流水线的各方面,以提供用于将各个媒体叠加分层(例如,堆叠)到媒体内容上以呈现合成媒体内容的后处理(如以下进一步描述的)。
167.图13是根据一些示例实施方式的图形处理流水线(即针对客户端设备102的部件(例如,gpu)实现的后处理流水线1300)的示例的示意图。更具体地,图13的示例示出了图形处理流水线,其中对给定输入帧执行的图形操作是累加的,使得根据所选择的第一媒体叠加来处理输入帧,并且然后将所述处理的输出提供为用于根据所选择的第二媒体叠加进行处理的输入,以此类推遍及图形处理流水线的剩余阶段。
168.在实施方式中,图13(以及以下讨论的图14)所示的后处理流水线1300实现了可扩展呈现引擎,该可扩展呈现引擎支持与各个媒体叠加对应的多个图像处理操作。这样的可扩展呈现引擎使得能够减少给定电子设备(例如,客户端设备102)的存储器资源消耗,因为单个呈现引擎可以被加载到存储器中以用于执行,而不是像在一些现有实现方式中那样在存储器中具有各自占用不同的存储器空间的多个不同的呈现引擎。
169.在一个示例中,客户端设备102被配置成实现后处理流水线1300的各阶段中的一个或更多个,所述各阶段中的一个或更多个被示为各自与相应的媒体叠加对应的各种媒体叠加层1310至1330。在示例中,每个媒体叠加层1310至1330可配置成例如执行与特定媒体叠加对应的一个或更多个着色器和/或图像处理操作。
170.如媒体叠加层1310中所示,后处理流水线1300接收原始帧1312并且执行基于所选择的第一媒体叠加的后处理操作1314(例如,转换、色彩效果、着色器效果(例如,失真)、脸部效果等),并且输出经处理的帧1316。
171.如媒体叠加层1320中所示,后处理流水线1300接收经处理的帧1316并且执行基于所选择的第二媒体叠加的第二后处理操作1322。第二经处理的帧1324作为输出被提供给与媒体叠加1330对应的后续媒体叠加层。
172.此外,如媒体叠加层1330中所示,后处理流水线1300接收第二经处理的帧1324并且执行基于所选择的第三媒体叠加层的第三后处理操作1332。在另一示例中,媒体叠加层1330改为输出层,其生成流水线输出数据(例如,第二经处理的帧1324)以进行呈现,由此第三后处理操作1332对应于流水线输出数据的操作。
173.图14是根据一些示例实施方式的图形处理流水线(即针对客户端设备102的部件(例如,gpu)实现的后处理流水线1400)的示例的示意图。更具体地,图14的示例示出了图形处理流水线,其中分别对给定输入帧执行图形操作,使得根据所选择的第一媒体叠加来处理输入帧,并且提供同一(原始)输入帧作为用于根据所选择的第二媒体叠加进行处理的输入,并且然后将各个经处理的输入帧合成在单个合成图像中以进行呈现。因此,应当理解,图14与图13的不同之处在于图14中的后处理流水线的每个媒体叠加层应用于原始输入帧。
174.如图所示,客户端设备102被配置成实现后处理流水线1400的各阶段中的一个或更多个,所述各阶段中的一个或更多个被示为与相应的媒体叠加对应的各种媒体叠加层1410至1430。在示例中,每个媒体叠加层1410至1430可配置成例如执行与特定媒体叠加对应的一个或更多个着色器和/或图像处理操作。
175.如媒体叠加层1410中所示,后处理流水线1400接收原始帧1412并且执行第一后处理操作1414(例如,转换、色彩效果、着色器效果(例如,失真)、脸部效果等),并且输出经处理的帧1416。
176.如媒体叠加层1420中所示,后处理流水线1400接收原始帧1412并且执行基于所选择的第二媒体叠加层的第二后处理操作1422,并且输出经处理的帧1424。在继续到媒体叠
加层1430之前,后处理流水线1400生成合成帧1426,该合成帧1426将混合合并或以其他方式组合经处理的帧1416和经处理的帧1424。
177.此外,如媒体叠加层1430中所示,后处理流水线1400接收合成帧1426并且执行基于所选择的第三媒体叠加的第三后处理操作1432。在另一示例中,媒体叠加层1430改为输出层,其生成流水线输出数据(例如,合成帧1426)以进行呈现,由此第三后处理操作1432对应于流水线输出数据的操作。
178.图15是根据一些示例实施方式的经由图形处理流水线(即,以上在图13和图14中描述的后处理流水线)实现的媒体叠加层的堆叠的示例的示意图。
179.如图15的示例所示,可以在计算机处理器1510(例如在由给定电子设备(例如,客户端设备102)提供时)上实现并执行媒体叠加层的堆叠。计算机处理器1510将与第一媒体叠加1501对应的第一媒体叠加层应用于媒体内容。计算机处理器1510将与第二媒体叠加1502对应的第二媒体叠加层应用于媒体内容。计算机处理器1510将与第三媒体叠加1503对应的第三媒体叠加层应用于媒体内容。此外,计算机处理器1510将与第四媒体叠加1504对应的第四媒体叠加层应用于媒体内容。以这种方式,可以将各种媒体叠加堆叠并且应用于媒体内容以包括在消息中。
180.虽然在图15中作为示例描述了四个不同的层,但是应当理解,在不脱离本主题技术的范围的情况下,可以提供更少或更多的层。
181.如先前所讨论的,主题技术的实施方式使得能够递送和有组织地呈现用于后处理媒体内容的媒体叠加以供在计算设备(例如,客户端设备102)处使用。在一些示例中,可以在后处理阶段期间与先前捕获的媒体内容(例如,图像和/或视频)一起显示各个媒体叠加。如本文中进一步描述的,当用户在用户界面内执行特定触摸输入手势(例如,滑动或拖动手势)时,特定媒体叠加被选择并呈现给用户。
182.可以根据媒体叠加的集合内的排序以及根据该媒体叠加的集合的排序来选择特定媒体叠加。可以根据指定分类(例如,过滤器类型、滤镜类型等)内的其他媒体叠加之间的排序、根据跨其他分类的其他媒体叠加的排序或其组合来选择特定媒体叠加。在实施方式中,可以基于同一分类对媒体叠加的集合进行分组以呈现在轮播界面中。还可以选择媒体叠加的集合中的剩余媒体叠加以呈现在轮播界面中,如下所述。
183.在一些实施方式中,给定电子设备(例如,客户端设备102和/或消息服务器系统108)根据正态分布确定每个媒体叠加的排序得分。在一些实施方式中,可以给予相应的媒体叠加(例如,过滤器)“提升(boost)”,以将分布提升n个标准偏差。在示例中,可以基于预定值范围(例如,0至1000)内的预定值(例如,500)为每个媒体叠加分配默认得分(例如,优先级)。在示例中,排序得分可以被认为是各个媒体叠加的相关性的指标。这样的相关性的指标(例如,相关性得分或度量)可以基于包括例如地理位置、时间或日期、在检索的图像数据中识别的对象、使用等的各种信号。基于这样的信号,可以将排序得分调整为更高或更低,以分别指示媒体叠加是否被认为是相对于所检索的图像数据和/或与媒体叠加相关联的分类(例如,类型)更相关或更不相关。
184.在一些实施方式中,可以利用机器学习技术来确定用户界面内的媒体叠加的呈现。电子设备(例如,客户端设备102)可以获知媒体叠加是属于一个分类还是属于另一分类。电子设备可以利用排序方法来评估媒体叠加的与媒体叠加的对应记录的分类(例如,名
称或描述、数值指标、通用唯一标识符(uuid)等)和次序有关的相关性和优先级。媒体叠加的记录可以是包括例如表、列表、数组、矢量、文件等的任何适当的数据结构。在将媒体叠加添加到记录中之后,电子设备可以改变或移动媒体叠加以改变媒体叠加在用户界面内的媒体叠加的呈现中出现的次序。在示例中,电子设备可以从存储中移除较不相关或较低优先级的媒体叠加,例如,增加可用于用户生成的内容的存储。电子设备或服务器可以通过网络优先递送更相关或更高优先级的媒体叠加或媒体叠加的集合,例如,当选择某些媒体叠加时提高用户界面的响应性。
185.媒体叠加的集合可以包括任何数目的媒体叠加。然而,可以理解,在一些实施方式中,基于预定限制来约束被提供用于包括在用户界面中的媒体叠加的数目,以有助于减少计算资源(例如,存储器、显示电源、电池等)的使用。可以根据一个或更多个预定标准(例如,基于以下进一步讨论的媒体叠加类型)来对集合中的媒体叠加进行排列、排序、区分优先级或以其他方式组织。可以根据一个或更多个预定标准(例如,使用等)对媒体叠加的多个集合中的每个媒体叠加集合(例如,组)进行排列、排序、区分优先级或以其他方式组织。如以下进一步讨论的,每个媒体叠加集合可以包括基于媒体叠加类型组织的任何数目的不同媒体叠加。此外,可以根据使用、排序等在每个集合中组织、区分优先级或以其他方布置媒体叠加。
186.在一些实施方式中,电子设备(例如,客户端设备102和/或消息服务器系统108的一个或更多个部件)通过比较或匹配与媒体叠加的集合中的一个或更多个媒体叠加相关联的分类(例如,相同的媒体叠加类型)来选择媒体叠加的集合。
187.在一些实施方式中,与媒体叠加对应的每个媒体叠加与至少一个分类(例如,与给定媒体叠加相关联的类别)相关联。分类可以对应于各种类别(例如,媒体叠加的分类标签或类别指示符),然后这些类别被用于将各个媒体叠加组织(例如,分组)成各种集合(例如,组),以包括在用于呈现(和交互)电子设备的给定用户的用户界面中。如关于图16和图17所讨论的,至少部分地基于这样的分组,用户可以经由用户界面选择多个媒体叠加,以在后处理阶段期间应用于媒体内容。在图18至图25的示例中更详细地讨论媒体叠加的各种分类。
188.此外,在实现方式中,是否选择了媒体叠加以包括在轮播中取决于媒体叠加可应用上下文是否包括指示媒体叠加被认为是捕获后媒体叠加(例如,可以在后处理期间由电子设备预览或呈现以在媒体内容上显示)的信息。因此,媒体叠加可应用上下文可以用于确定媒体叠加可以相对于媒体内容应用为捕获后阶段中的后处理图像操作。在另一示例中,基于以下确定来确定上下文:客户端设备102和/或消息客户端应用104已经访问了在捕获后时间段期间用于进行修改的媒体内容,这又发起用于填充媒体叠加的记录的处理,该记录然后被用于选择用于呈现在轮播中的媒体叠加。
189.图16示出了根据一些实施方式的包括轮播的用户界面的示例,该轮播用于对多个媒体叠加进行选择和堆叠以对消息客户端应用104(或消息系统100)中的媒体内容(例如,图像或视频)应用后处理。
190.在这样的用户界面的实施方式中,可以以轮播布置来呈现可选图形项1650,在轮播布置中,可选图形项1650的一部分或子集在给定计算设备(例如,客户端设备102)的显示屏幕上可见。作为示例,用户可以利用各种输入来以与提供图形项的循环视图的轮播对应的方式将可选图形项旋转到显示屏幕上以及旋转离开显示屏幕。因此,在用户界面中提供
的轮播布置允许多个图形项占据显示屏幕上的特定图形区域。
191.如本文所述,媒体叠加可以被组织成相应的组以包括在轮播布置上,从而使得能够按组旋转通过媒体叠加。此外,可以基于包括例如时间、日期、地理位置、与媒体内容相关联的元数据等的各种信号来选择媒体叠加以包括在内。类似地,可以基于这样的信号对媒体叠加进行分组。此外,在示例中,可以生成得分并且将得分分配给每个媒体叠加,并且至少部分地基于相应的得分,选择媒体叠加的子集以包括在用户界面的轮播布置上。如下所述,在图16的用户界面示例的轮播布置中,从不同的媒体叠加组中选择相应的媒体叠加。
192.在下面的讨论中,可选图形项对应于作为后处理的一部分应用于媒体内容的相应媒体叠加。在后处理期间,先前已经捕获媒体内容,并且然后从存储装置中检索媒体内容。如用户界面1600所示,对应于轮播布置的可选图形项1650包括电子设备(例如,客户端设备102)的显示屏幕中的可选图形项1651。经由用户的触摸输入来选择可选图形项1650。
193.在图16的第二示例中,用户替代地提供与滑动或拖动手势对应的不同触摸输入,该滑动或拖动手势使得能够滚动通过(例如,提供通过用户界面1600中呈现的各种图形项的导航)可选图形项1650,并且响应于滑动或拖动手势来显示第二可选图形项1652。如用户界面1600中所指示,第二可选图形项1652属于与可选图形项1650相同的媒体叠加组。
194.在图16的第三示例中,用户继续滑动或拖动手势,该滑动或拖动手势引起在用户界面1600中显示第三可选图形项1654。在该示例中,第三可选图形项1654也属于与对应于可选图形项1651和第二可选图形项1652的相应媒体叠加相同的媒体叠加组。为了应用对应于第三可选图形项1654的媒体叠加,可以由用户提供另一输入,例如另一触摸输入(例如,敲击或按压)。
195.在第三示例中,用户提供后续输入(例如,敲击或按压)以应用对应于第三可选图形项1654的媒体叠加。作为响应,媒体叠加1656被应用并提供以显示在显示屏幕上的用户界面1600中。在应用媒体叠加1656之后,用户界面1600提供先前选择了第三可选图形项1654的指示(例如,通过使第三可选图形项1654突出显示)。
196.在图16的第四示例中,用户然后提供进一步使得能够滚动通过可选图形项1650的后续滑动或拖动手势。在实施方式中,由于轮播布置的显示区域限制,用户界面将第三可选图形项1654显示为其自身的较小版本,同时还使其他可选图形项从轮播布置隐藏(或消失)。响应于滑动或拖动手势,用户界面1600显示第四可选图形项1658,基于图形指示的该第四可选图形项1658属于与包括对应于先前选择的第三可选图形项1654的媒体叠加的第一组不同的媒体叠加组。用户可以继续滑动或拖动手势(或者替选地,开始新的滑动或拖动手势)以滚动通过其他可选图形项,以用于进一步选择附加的媒体叠加(例如,在不同的媒体叠加组中)。
197.图17示出了根据一些实施方式的用于对多个媒体叠加进行选择和堆叠以对消息客户端应用104(或消息系统100)中的媒体内容(例如,图像或视频)应用后处理的用户界面(例如,轮播)的附加示例。当结合图16的示例提供图17的示例时,参考图16讨论图17。
198.在图17所示的示例中,提供如以上在图16中描述的用于在电子设备(例如,客户端设备102)的显示屏幕上进行显示的用户界面1600。
199.在图17的第一示例中,从图16中讨论的第四示例继续,在可选图形项1750中包括可选图形项1751,可选图形项1750对应于如在用户界面1600中显示的轮播布置。如进一步
所示,先前在图16中讨论的第三可选图形项1654和第四可选图形项1658包括在图17的可选图形项1750中。在该示例中,基于图形指示的可选图形项1751属于与第四可选图形项1658(如上所述未被选择)相同的媒体叠加组。用户提供另外的手势输入(例如,滑动或拖动手势)以滚动通过对应于不同媒体叠加的其他可选图形项1750。
200.在图17的第二示例中,用户继续滑动或拖动手势,该滑动或拖动手势引起在用户界面1600中显示可选图形项1752。基于图形指示的可选图形项1752属于与对应于可选图形项1751和第四可选图形项1658的媒体叠加组不同的媒体叠加组。在实施方式中,由于轮播布置的显示区域限制,用户界面1600显示可选图形项1756,该可选图形项1756表示包括可选图形项1751和第四可选图形项1658的媒体叠加组。此外,在轮播布置中,用户界面1600包括可选图形项1754,该可选图形项1754表示包括可选图形项1651、第二可选图形项1652和第三可选图形项1654(其先前被选择以应用媒体叠加1656)的媒体叠加组。
201.在该第二示例中,用户提供随后的输入(例如,敲击或按压)以应用对应于可选图形项1752的媒体叠加。为了提供不同媒体叠加的分层(例如,堆叠),响应于随后的输入而应用媒体叠加1758,其中提供媒体叠加1758以用于与所显示的媒体叠加1656一起显示在用户界面1600中。在应用媒体叠加1758之后,用户界面1600提供先前选择了可选图形项1752的指示(例如,通过使可选图形项1752突出显示)。
202.下面的讨论涉及根据本主题技术的一些实施方式的不同类型的媒体叠加的示例。在示例中,媒体叠加类型指示可以用于对相关联的媒体叠加进行分组的特定类别。如上所述,然后可以将媒体叠加的这样的分组呈现在轮播布置界面中,其中包括可选图形项以用于选择一个或更多个媒体叠加,所选择的媒体叠加可以作为后处理媒体内容的一部分被堆叠或组合地应用或分层。基于前述排序和/或选择技术,在以上图16和图17中讨论的轮播界面内,可以选择在下面附图的讨论中示出的示例媒体叠加以包括在各个组中。
203.图18示出了可以被选择以在后处理期间应用于媒体内容的媒体叠加的示例。如图所示,在图18的示例中示出了基于地理位置的媒体叠加的集合,包括媒体叠加1810、媒体叠加1820、媒体叠加1830和媒体叠加1840。在至少一些实施方式中,这样的地理位置媒体叠加包括特定于地理位置的静态媒体叠加或者随位置的动态媒体叠加。
204.图19示出了可以被选择以在后处理期间应用于媒体内容的媒体叠加的示例。如图所示,在图19的示例中示出了基于日的媒体叠加的集合,包括媒体叠加1910、媒体叠加1920、媒体叠加1930和媒体叠加1940。在至少一些实施方式中,这样的日媒体叠加包括指示日(例如,一周中的特定日、或假日等)的媒体叠加或者与特定的当前日相关的媒体叠加。
205.图20示出了可以被选择以在后处理期间应用于媒体内容的媒体叠加的示例。如图所示,在图20的示例中示出了基于事件的媒体叠加的集合,包括媒体叠加2010、媒体叠加2020、媒体叠加2030和媒体叠加2040。在至少一些实施方式中,这样的事件媒体叠加包括:针对特定事件的媒体叠加、用于直播故事制作的媒体叠加、体育(例如,体育队等)媒体叠加以及飞行(例如,激活)到更小区域和更短时间帧的媒体叠加。
206.图21示出了可以被选择以在后处理期间应用于媒体内容的媒体叠加的示例。如图所示,在图21的示例中示出了基于时刻的媒体叠加的集合,包括媒体叠加2110、媒体叠加2120、媒体叠加2130和媒体叠加2140。在至少一些实施方式中,这样的时刻媒体叠加包括:针对特定消息的超上下文媒体叠加、针对较短时间帧和/或特定目的飞行(例如,激活)的媒
体叠加、具有包括朋友/社交网络媒体叠加(例如,朋友被用作上下文)、基于时间(早晨/晚上)、基于视觉上下文、深度链接(例如,指定由深度链接定义的app中的位置)等的高级目标条件的媒体叠加。
207.图22示出了可以被选择以在后处理期间应用于媒体内容的媒体叠加的示例。如图所示,在图22的示例中示出了基于装饰性的媒体叠加的集合,包括媒体叠加2210、媒体叠加2220、媒体叠加2230和媒体叠加2240。在至少一些实施方式中,这样的装饰性媒体叠加包括基于非消息的媒体叠加,其中主要目的是装饰、没有单词或短语并且可以在任何时间和/或任何地方飞行,并且在一些情况下也可以适应节日需要飞行。
208.图23示出了可以被选择以在后处理期间应用于媒体内容的媒体叠加的示例。如图所示,在图23的示例中示出了基于氛围的媒体叠加的集合,包括媒体叠加2310、媒体叠加2320、媒体叠加2330和媒体叠加2340。在至少一些实施方式中,这样的氛围媒体叠加包括具有一般的、非上下文表达的媒体叠加,包含通常以情绪/氛围为目标的表达副本,并且可以在任何时间在特定地点或地理位置中飞行。
209.图24示出了可以被选择以在后处理期间应用于媒体内容的媒体叠加的示例。如图所示,在图24的示例中示出了基于个人的媒体叠加的集合,包括媒体叠加2410、媒体叠加2420、媒体叠加2430和媒体叠加2440。在至少一些实施方式中,这样的个人媒体叠加包括对用户个性化的媒体叠加,可以包括表情符号(例如,相应的用户图标或用户化身)、用户名称,或者适合于自拍(例如,使用正面的自拍像)。
210.图25示出了可以被选择以在后处理期间应用于媒体内容的媒体叠加的示例。如图所示,在图25的示例中示出了基于信息模板的媒体叠加的集合,包括媒体叠加2510、媒体叠加2520、媒体叠加2530和媒体叠加2540。在至少一些实施方式中,这样的信息模板媒体叠加包括具有动态文本的组合作为媒体叠加的主要内容的媒体叠加,除了动态文本之外具有最少或没有直接消息,并且可以具有装饰性、最少或没有模板背景。
211.图26是示出根据某些示例实施方式的用以基于对图像数据的至少一个后处理操作而生成消息的方法2600的流程图。方法2600可以体现在计算机可读指令中,所述计算机可读指令用于由一个或更多个计算机处理器执行,使得方法2600的操作可以由消息客户端应用104——特别是针对上面在图6中描述的注释系统206的各个部件——部分地或整体地执行;因此,以下通过参考图6以示例的方式来描述方法2600。然而,应当理解,方法2600的至少一些操作可以被部署在各种其他硬件配置上,并且方法2600不旨在限于消息客户端应用104。
212.在操作2602处,后处理引擎620从存储设备检索第一图像数据。第一图像数据可以是诸如由电子设备在先前时间捕获的照片或视频帧的图像。例如,如以上关于至少图6所述的,第一图像数据由客户端设备102在先前时间捕获、存储到存储设备并且后面由后处理引擎620检索。
213.在操作2604处,后处理引擎620接收与所选择的图像处理操作(例如,媒体叠加)对应的第一元数据。这样的元数据可以存储在客户端设备102(或存储在数据库102中)并且/或者由客户端设备102生成,以使得能够对媒体内容进行后处理(例如,如图6和图7中所描述的)。例如,如之前关于至少图6和图7所描述的,在后处理期间提供(例如,由客户端102和/或消息服务器系统108提供)与要应用于媒体内容(例如,第一图像数据)的媒体叠加对
应的元数据或信息,以使得能够执行所选择的图像处理操作。此外,经由客户端设备的显示器(例如,使用例如至少在图11、图12、图16和图17中描述的滑动手势)来选择所选择的图像处理操作。在实施方式中,所选择的图像处理操作对应于媒体叠加,该媒体叠加基于与其相关联的类别而属于特定媒体叠加组。
214.在操作2606处,后处理引擎620至少部分地基于第一元数据和对所接收到的第一图像数据执行的图像处理操作来生成第二图像数据。例如,如前所述,在至少图9a、图9b、图10a、图10b、图16和图17中,客户端设备102将与所选择的媒体叠加对应的图像处理操作应用于媒体内容(例如,以使得能够在客户端设备102的显示屏幕上呈现所应用的媒体叠加)。呈现引擎630呈现第二图像数据以由客户端设备进行显示,该第二图像数据包括与由所选择的图像处理操作修改的第一图像数据对应的第一图像(如之前在至少图6中所描述的)。
215.在另一示例中,后处理引擎620接收包括与第一图像数据对应的客户端设备102的取向的传感器数据,传感器数据包括与第一图像数据相关联的元数据,其中还基于传感器数据生成第二图像数据,所接收的传感器数据指示客户端设备102的取向。例如,使用具有传感器数据的特定跟踪引擎(例如,由跟踪引擎610提供),后处理引擎620根据传感器数据检测设备取向,并且然后以适应设备取向并且/或者适当地提供第一图像数据的增强的格式生成第二图像数据,以由此生成第二图像数据。在实施方式中,后处理引擎620可以与第一图像数据分开地存储第二图像数据。
216.在另一示例中,第一图像数据包括环境的表示。后处理引擎620基于第一图像数据执行跟踪处理。跟踪处理可以是跟踪在环境的表示中识别的表面、跟踪在环境的表示中识别的面部、使用机器学习模型跟踪对象等。在一个示例实施方式中,后处理引擎620一次执行仅一个跟踪处理。
217.在操作2608处,后处理引擎620生成包括与图像处理操作(例如,媒体叠加)相关的信息的第二元数据。例如,第二元数据包括与第一图像数据相关联的第一标识符、以及与第二图像数据相关联的第二标识符、以及/或者之前关于至少图7描述的其他元数据。此外,在一些实施方式中,第二元数据可以包括用以指示在后处理阶段期间发生的图像处理的以下信息:手势信息(例如,滑动方向)、手势序列计数(例如,滑动序列或系列的数目)、敲击计数(例如,所接收的敲击/触摸输入的数目)、媒体叠加名称、媒体叠加类型(例如,分类指示符)、媒体叠加索引、媒体叠加的数目、媒体叠加得分(例如,相关性指示符)、媒体叠加组等。
218.在操作2610处,共享引擎640生成包括第二元数据、第二图像数据和第一图像数据的消息。例如,这样的消息可以包括之前关于至少图7描述的前述信息中的每一个。
219.在操作2612处,共享引擎640向服务器(例如,消息服务器系统108)发送用于与一个或更多个其他客户端设备共享的消息。例如,共享引擎640发送如之前关于至少图6所描述的这样的消息。
220.图27是示出根据某些示例实施方式的基于对图像数据的后处理操作的分层来生成消息的方法2700的流程图。方法2700可以体现在计算机可读指令中,所述计算机可读指令用于由一个或更多个计算机处理器执行,使得方法2700的操作可以由消息客户端应用104——特别是针对上面在图6中描述的注释系统206的各个部件——部分地或整体地执行;因此,以下通过参考图6以示例的方式来描述方法2700。然而,应当理解,方法2700的至少一些操作可以被部署在各种其他硬件配置上,并且方法2700不旨在限于消息客户端应用
104。
221.在操作2702处,后处理引擎620从存储设备检索第一图像数据。如上所述,在关于至少图6描述的示例中,第一图像数据由客户端设备102在先前时间捕获、存储到存储设备并且后面由后处理引擎620检索。
222.在操作2704处,后处理引擎620检测对与第一图像处理操作对应的第一媒体叠加的选择。例如,如之前在至少图11、图12、图16和图17中所描述的,用户经由输入(例如,触摸输入、滑动手势等)来选择媒体叠加。此外,基于与媒体叠加中的每一个相关联的类别,将所选择的第一媒体叠加与特定媒体叠加组相关联。
223.在操作2706处,后处理引擎620对第一图像数据执行与第一媒体叠加对应的第一图像处理操作以生成第二图像数据。例如,如之前在至少图9a、图9b、图10a和图10b中所描述的,将所选择的媒体叠加应用于媒体内容(例如,以使得能够在客户端设备102的显示屏幕上呈现所应用的媒体叠加)。此外,如之前在至少图13、图14和图15中所描述的,由图形处理流水线的第一层执行第一图像处理操作。
224.在操作2708处,后处理引擎620检测对与第二图像处理操作对应的第二媒体叠加的选择。例如,如之前在至少图16和图17中所描述的,用户可以经由输入(例如,触摸输入、滑动手势等)来选择第二媒体叠加。此外,基于与第二媒体叠加相关联的不同类别,将与第二图像处理操作对应的第二媒体叠加与第二媒体叠加的第二组相关联。
225.在操作2710处,后处理引擎620对第二图像数据执行第二图像处理操作以生成第三图像数据。例如,如之前在至少图16和图17中所描述的,可以将第二媒体叠加应用于之前已经被处理(例如,具有第一媒体叠加)的媒体内容,以向媒体内容提供媒体叠加的分层。此外,如之前在至少图13、图14和图15中所描述的,由图形处理流水线的第二层执行第二图像处理操作。在实施方式中,在执行第一层之后执行第二层。
226.在操作2712处,共享引擎640生成包括第三图像数据的消息。如之前在至少图6、图7、图13、图14、图15、图16和图17中所描述的,可以将多个媒体叠加应用于媒体内容以提供合成图像,该合成图像至少包括所应用的媒体内容的组合。共享引擎640可以将所生成的消息发送至服务器(例如,消息服务器系统108)以与一个或更多个其他客户端设备进行共享。
227.图28是示出根据某些示例实施方式的提供用于后处理操作的轮播界面的方法2800的流程图。方法2800可以包含在计算机可读指令中,所述计算机可读指令用于由一个或更多个计算机处理器执行,使得方法2800的操作可以由消息客户端应用104——特别是针对上面在图6中描述的注释系统206的各个部件——部分地或整体地执行;因此,以下通过参考图6以示例的方式来描述方法2800。然而,应当理解,方法2800的至少一些操作可以被部署在各种其他硬件配置上,并且方法2800不旨在限于消息客户端应用104。
228.在操作2802处,后处理引擎620通过客户端设备从存储设备检索先前由客户端设备(例如,客户端设备102)捕获的第一图像数据。如上所述,在至少图6中描述的示例中,第一图像数据由客户端设备102在先前时间捕获、存储到存储设备并且后面由后处理引擎620检索。在一些实施方式中,然后在客户端设备102的显示屏幕上显示第一图像数据。
229.在操作2804处,后处理引擎620响应于第一图像数据的显示而选择媒体叠加的集合。在示例中,每个相应的媒体叠加与类别指示符相关联。客户端设备102匹配相应的媒体叠加中的类别指示符以基于相应的类别指示符确定媒体叠加的一个或更多个分组。如之前
在至少图16和图17中所描述的,客户端设备102针对所选择的媒体叠加的集合选择分组之一。在另一示例中,客户端设备102选择多组媒体叠加。
230.在实施方式中,每个相应的媒体叠加与可以对应于每个相应的媒体叠加的相关性指标的得分相关联(例如,较高的得分指示较高的相关性,并且较低的得分指示较低的相关性)。如之前所描述的,相关性指标可以基于初始默认得分或值,并且然后基于一个或更多个信号(例如,地理位置、时间或日期、使用、图像数据中的感兴趣对象等)被调整为更高或更低。后处理引擎620基于与每个媒体叠加相关联的相应得分对媒体叠加排序。在该示例中,后处理引擎620选择预定数目的最高排序的媒体叠加作为媒体叠加的集合。在另一实施方式中,由消息服务器系统108的部件替代地执行排序,并且随后可以将基于所确定的排序的所选媒体叠加的集合提供给后处理引擎620,以用于以上述方式进行处理。在已经选择了媒体叠加的单个分组(例如,基于唯一的匹配类别指示符)的示例中,可以对该相同的单个分组内的每个媒体叠加的相应得分执行排序。在已经选择了媒体叠加的多个分组(例如,基于不同的类别指示符)的示例中,可以对媒体叠加的每个相应分组内的每个媒体叠加的相应得分执行排序。
231.在操作2806处,后处理引擎620使得显示包括可选图形项的轮播界面(例如,用户界面1600)。可选图形项中的每个可选图形项对应于媒体叠加的集合中的相应媒体叠加。在实施方式中,至少部分地基于媒体叠加的前述排序而在轮播界面中提供可选图形项,其中排序最高的媒体叠加被选择以用于显示。因此,可以理解,轮播界面中的每个可选图形项可以对应于排序最高的媒体叠加之一。此外,如关于至少图16和图17所描述的,在客户端设备102的显示屏幕上呈现轮播界面。如之前所描述的,可以提供媒体叠加的多个分组以用于在轮播界面中显示,并且基于前述排序提供来自特定分组(例如,基于匹配类别指示符)的相应媒体叠加以用于显示(例如,提供排序最高的媒体叠加以用于显示)。在示例中,用户界面1600提供将所选择的第一可选图形项与未被选择的多个可选图形项中的其他可选图形项区分开的视觉指示符。此外,所选择的第一可选图形项在第一显示区域内,并且第一显示区域与其中呈现多个可选图形项中的未被选择的其他可选图形项的第二显示区域不同。
232.在操作2808处,后处理引擎620从多个可选图形项中接收对第一可选图形项的选择。例如,如之前在至少图16和图17中所描述的,可以由用户经由输入(例如,触摸输入等)来选择对应于特定可选图形项的特定媒体叠加。
233.在操作2810处,后处理引擎620将与所选择的第一可选图形项对应的第一媒体叠加应用于第一图像数据。例如,如之前在至少图16和图17中所描述的,可以将所选择的媒体叠加应用于媒体内容(例如,使得能够在客户端设备102的显示屏幕上呈现所应用的媒体叠加)。
234.图29是示出根据某些示例实施方式的用于确定媒体叠加的集合以填充媒体叠加的集合的方法2900的流程图,媒体叠加的集合可以由客户端电子设备在后处理阶段期间使用以修改媒体内容。方法2900可以包含在计算机可读指令中,所述计算机可读指令用于由一个或更多个计算机处理器执行,使得方法2900的操作可以由消息服务器系统108部分地或整体地执行;因此,以下通过参考消息服务器系统108以示例的方式来描述方法2900。然而,应当理解,方法2900的至少一些操作可以被部署在各种其他硬件配置上,并且方法2900不旨在限于消息服务器系统108。
235.在操作2902处,消息服务器系统108接收对应于媒体叠加的元数据。在示例中,元数据可以存储在可经由数据库服务器118访问的数据库120中。替选地,元数据由客户端102存储(例如,作为与消息客户端应用104相关联的存储装置的一部分)。元数据包括指示媒体叠加被配置成在捕获后阶段中对图像数据的后处理期间被应用为图像处理操作的信息。例如,如之前在至少图6和图7中所描述的,与媒体叠加相关的这样的元数据可以用于实现消息服务器系统108的后处理操作。
236.在操作2904处,消息服务器系统108选择在与媒体叠加对应的元数据中指示的媒体叠加。例如,如之前关于至少图16和图17所描述的,消息服务器系统108通过确定媒体叠加可应用上下文是否包括指示媒体叠加被认为是捕获后媒体叠加(例如,可以在后处理期间由电子设备预览或呈现以在媒体内容上显示)的信息来确定选择了媒体叠加。在一个示例中,消息服务器系统108通过以下操作来确定媒体叠加可应用上下文:检测客户端设备102和/或消息客户端应用104在捕获后时间段中已经访问了用于修改的媒体内容,这又发起动用于填充媒体叠加的记录的操作,该记录然后被用于选择用于在用户界面(例如,用户界面1600)中呈现的媒体叠加。
237.在操作2906处,消息服务器系统108至少部分地基于与相应的媒体叠加相关联的类别指示符,用至少相应的媒体叠加来填充媒体叠加的组。例如,如之前关于至少图16和图17所描述的,消息服务器系统108通过确定媒体叠加的组包括小于与要包括的媒体叠加的最大限制(或上限)对应的特定数目的媒体叠加的集合,来确定要包括在媒体叠加的组中的媒体叠加的数目。此外,消息服务器系统108确定要包括在媒体叠加的组中的媒体叠加的数目,并且至少部分地基于确定媒体叠加的组包括满足媒体叠加的数目的媒体叠加的集合而拒绝包括特定媒体叠加。
238.在操作2908处,消息服务器系统108向客户端设备发送包括与媒体叠加的组相关的信息的第二元数据。例如,第二元数据包括指示媒体叠加组中的每个媒体叠加对应于相同的媒体叠加类型的信息。替选地,所述信息指示来自媒体叠加组的仅媒体叠加的子集对应于相同的媒体叠加类型。此外,在示例中,消息服务器系统108响应于客户端电子设备访问轮播界面(例如,用户界面1600)中的特定可选图形项而发送包括与媒体叠加组相关的信息的第二元数据。
239.图30是示出示例软件架构3006的框图,该示例软件架构3006可以与本文中描述的各种硬件架构结合使用。图30是软件架构的非限制性示例,并且应当理解的是,可以实现许多其他架构以促进本文中描述的功能。软件架构3006可以在诸如图31的机器3100的硬件上执行,机器3100包括处理器3104、存储器3114和(输入/输出)i/o部件3118等。示出了代表性硬件层3052并且该代表性硬件层1152可以表示例如图31的机器3100。代表性硬件层3052包括具有相关联的可执行指令3004的处理单元3054。可执行指令3004表示软件架构3006的可执行指令,包括本文中描述的方法、部件等的实现方式。硬件层3052还包括也具有可执行指令3004的存储器和/或存储模块存储器/存储装置3056。硬件层3052还可以包括其他硬件3058。
240.在图30的示例架构中,软件架构3006可以被概念化为层的堆叠,其中每个层提供特定功能。例如,软件架构3006可以包括诸如操作系统3002、库3020、框架/中间件3018、应用3016和表示层3014的层。在操作上,层内的应用3016和/或其他部件可以通过软件堆栈调
用api调用3008并且接收响应于api调用3008的响应。所示出的层本质上是代表性的,并且并非所有软件架构都具有所有层。例如,一些移动操作系统或专用操作系统可能不提供框架/中间件3018,而其他操作系统可能提供这样的层。其他软件架构可以包括附加层或不同层。
241.操作系统3002可以管理硬件资源并且提供公共服务。操作系统3002可以包括例如核3022、服务3024和驱动器3026。内核3022可以用作硬件与其他软件层之间的抽象层。例如,内核3022可以负责存储器管理、处理器管理(例如,调度)、部件管理、联网、安全设置等。服务3024可以针对其他软件层提供其他公共服务。驱动器3026负责控制底层硬件或与底层硬件对接。例如,取决于硬件配置,驱动器3026包括显示驱动器、摄像装置驱动器、驱动器、闪存驱动器、串行通信驱动器(例如,通用串行总线(usb)驱动器)、驱动器、音频驱动器、电源管理驱动器等。
242.库3020提供由应用3016和/或其他部件和/或层使用的公共基础设施。库3020提供如下功能,该功能允许其他软件部件以比与底层操作系统3002的功能(例如,核3022、服务3024,和/或驱动器3026)直接对接的方式更容易的方式来执行任务。库3020可以包括系统库3044(例如,c标准库),系统库3044可以提供函数例如存储器分配函数、字符串操作函数、数学函数等。另外,库3020可以包括api库3046,例如媒体库(例如,支持诸如mpreg4、h.264、mp3、aac、amr、jpg、png的各种媒体格式的呈现和操纵的库)、图形库(例如,可以用于在显示器上以图形内容呈现2d和3d的opengl框架)、数据库库(例如,可以提供各种关系数据库功能的sqlite)、web库(例如,可以提供web浏览功能的webkit)等。库3020还可以包括各种其他库3048,以向应用3016和其他软件部件/模块提供许多其他api。
243.框架/中间件3018(有时也称为中间件)提供可以由应用3016和/或其他软件组件/模块使用的较高级别的公共基础设施。例如,框架/中间件3018可以提供各种图形用户界面(gui)功能、高级资源管理、高级位置服务等。框架/中间件3018可以提供可以由应用3016和/或其他软件部件/模块使用的广泛的其他api,其中一些可以专用于特定操作系统3002或平台。
244.应用3016包括内置应用3038和/或第三方应用3040。代表性内置应用3038的示例可以包括但不限于联系人应用、浏览器应用、书籍阅读器应用、位置应用、媒体应用、消息应用和/或游戏应用。第三方应用3040可以包括由除特定平台的供应商之外的实体使用android
tm
或ios
tm
软件开发工具包(sdk)开发的应用,并且可以是在诸如ios
tm
、android
tm
、phone的移动操作系统或其他移动操作系统上运行的移动软件。第三方应用3040可以调用由移动操作系统(例如,操作系统3002)提供的api调用3008,以有利于本文中描述的功能。
245.应用3016可以使用内置操作系统功能(例如,核3022、服务3024和/或驱动器3026)、库3020和框架/中间件3018来创建用户接口以与系统的用户交互。替选地或另外地,在一些系统中,可以通过例如表示层3014的表示层发生与用户的交互。在这些系统中,应用/部件“逻辑”可以与应用/部件的与用户交互的各方面分开。
246.图31是示出根据一些示例性实施方式的能够从机器可读介质(例如,机器可读存储介质)读取指令并执行本文所讨论的方法中的任一种或更多种方法的机器3100的部件的框图。具体地,图31示出了呈计算机系统的示例形式的机器3100的示意表示,在该机器3100
中可以执行用于使机器1200执行本文讨论的方法中的任何一种或更多种的指令3110(例如,软件、程序、应用、小程序、app或其他可执行代码)。同样地,指令3110可以被用于实现本文中描述的模块或部件。指令3110将通用的未编程的机器3100转换成被编程为以所描述的方式执行所描述和所示出的功能的特定机器3100。在替选实施方式中,机器3100作为独立设备操作或者可以耦接(例如,联网)至其他机器。在联网部署中,机器3100可以在服务器客户端网络环境中以服务器机器或客户端机器的身份操作,或者在对等(或分布式)网络环境中作为对等机器操作。机器3100可以包括但不限于:服务器计算机、客户端计算机、个人计算机(pc)、平板计算机、膝上型计算机、上网本、机顶盒(stb)、个人数字助理(pda)、娱乐媒体系统、蜂窝电话、智能电话、移动设备、可穿戴设备(例如,智能手表)、智能家居设备(例如,智能电器)、其他智能设备、web家用电器、网络路由器、网络交换机、网络桥接器或者能够顺序地或以其他方式执行指定要由机器3100采取的动作的指令3110的任何机器。此外,虽然仅示出了单个机器3100,但是术语“机器”还应被视为包括单独或联合执行指令3110以执行本文中讨论的任何一种或更多种方法的机器的集合。
247.机器3100可以包括处理器3104、存储器/储存装置3106和i/o部件3118,所述处理器3104、存储器/储存装置3106和i/o部件3118可以被配置成例如经由总线3102彼此通信。存储器/存储装置3106可以包括诸如主存储器或其他存储器存储装置的存储器3114以及存储单元3116,处理器3104能够例如经由总线3102访问存储器3114和存储单元3116两者。存储单元3116和存储器3114存储实施本文中描述的方法或功能中的任何一种或更多种的指令3110。指令3110还可以在其由机器3100执行期间完全地或部分地驻留在存储器3114内、存储单元3116内、处理器3104中的至少一个内(例如,在处理器的高速缓冲存储器内)或其任何合适的组合内。因此,存储器3114、存储单元3116以及处理器3104的存储器是机器可读介质的示例。
248.i/o部件3118可以包括接收输入、提供输出、产生输出、传送信息、交换信息、捕获测量等的各种各样的部件。包括在特定机器3100中的特定i/o部件3118将取决于机器的类型。例如,诸如移动电话的便携式机器可能包括触摸输入设备或其他这样的输入机构,而无头服务器机器可能不包括这样的触摸输入设备。将理解,i/o部件3118可以包括图31中未示出的许多其他部件。i/o部件3118根据功能被分组,仅是为了简化下面的讨论,并且分组决不是限制性的。在各种示例实施方式中,i/o部件3118可以包括输出部件3126和输入部件3128。输出部件3126可以包括视觉部件(例如,显示器,诸如等离子显示面板(pdp)、发光二极管(led)显示器、液晶显示器(lcd)、投影仪或阴极射线管(crt))、听觉部件(例如,扬声器)、触觉部件(例如,振动马达、阻力机构)、其他信号发生器等。输入部件3128可以包括字母数字输入部件(例如,键盘、被配置成接收字母数字输入的触摸屏、光电键盘或其他字母数字输入部件)、基于点的输入部件(例如,鼠标、触摸板、轨迹球、操纵杆、运动传感器或其他定点仪器)、触觉输入部件(例如,物理按钮、提供触摸或触摸手势的位置和/或力的触摸屏或其他触觉输入部件)、音频输入部件(例如,麦克风)等。
249.在另外的示例实施方式中,i/o部件3118可以包括生物计量部件3130、运动部件3134、环境部件3136或位置部件3138等各种其他部件。例如,生物计量部件3130可以包括用于检测表达(例如,手表达、面部表情、声音表达、身体姿势或眼睛跟踪)、测量生物信号(例如,血压、心率、体温、出汗或脑波)、识别人(例如,声音识别、视网膜识别、面部识别、指纹识
别或基于脑电图的识别)等的部件。运动部件3134可以包括加速度传感器部件(例如,加速度计)、重力传感器部件、旋转传感器部件(例如,陀螺仪)等。环境部件3136可以包括例如照明传感器部件(例如,光度计)、温度传感器部件(例如,检测周围温度的一个或更多个温度计)、湿度传感器部件、压力传感器部件(例如,气压计)、听觉传感器部件(例如,检测背景噪声的一个或更多个麦克风)、接近传感器部件(例如,检测附近物体的红外传感器)、气体传感器(例如,为了安全而检测危险气体的浓度或者测量大气中的污染物的气体检测传感器)或者可以提供与周围物理环境对应的指示、测量或信号的其他部件。位置部件3138可以包括定位传感器部件(例如,gps接收器部件)、海拔高度传感器部件(例如,从其中检测可以得到海拔高度的气压的高度计或气压计)、取向传感器部件(例如,磁力计)等。
250.可以使用各种各样的技术来实现通信。i/o部件3118可以包括通信部件3140,该通信部件3140能够操作成分别经由耦接3124和耦接3122将机器3100耦接至网络3132或设备3120。例如,通信部件3140可以包括网络接口部件或其他合适的设备以与网络3132对接。在其他示例中,通信部件3140可以包括有线通信部件、无线通信部件、蜂窝通信部件、近场通信(nfc)部件、部件(例如,低功耗)、部件以及经由其他模态提供通信的其他通信部件。设备3120可以是另一机器或各种外围设备中的任何一个外围设备(例如,经由usb耦接的外围设备)。
251.此外,通信部件3140可以检测标识符或者可以包括能够操作以检测标识符的部件。例如,通信部件3140可以包括射频识别(rfid)标签阅读器部件、nfc智能标签检测部件、光学阅读器部件(例如,用于检测诸如通用产品代码(upc)条形码的一维条形码、诸如快速响应(qr)代码的多维条形码、aztec代码、数据矩阵、数据符号(dataglyph)、最大编码(maxicode)、pdf417、超码(ultra code)、ucc rss-2d条形码和其他光学码的光学传感器)或声学检测部件(例如,用于识别标记的音频信号的麦克风)。另外,可以经由通信部件3140得到各种信息,例如,经由因特网协议(ip)地理位置得到位置、经由信号三角测量得到位置、经由检测可以指示特定位置的nfc信标信号得到位置等。
252.以下讨论涉及贯穿本主题公开内容提及的各种术语或短语。
[0253]“信号介质”是指能够存储、编码或携载由机器执行的指令的任何无形介质,并且包括数字或模拟通信信号或其他无形介质以有助于软件或数据的通信。术语“信号介质”应当被视为包括任何形式的调制数据信号、载波等。术语“调制数据信号”意指使其特性中的一个或更多个以对信号中的信息进行编码的方式来设置或改变的信号。术语“传输介质”和“信号介质”意指相同的介质,并且可以在本公开内容中互换使用。
[0254]“通信网络”是指网络的一个或更多个部分,该网络可以是自组织网络、内联网、外联网、虚拟专用网络(vpn)、局域网(lan)、无线lan(wlan)、广域网(wan)、无线wan(wwan)、城域网(man)、因特网、因特网的一部分、公共交换电话网(pstn)的一部分、普通老式电话服务(pots)网络、蜂窝电话网络、无线网络、网络、另一类型的网络或者两个或更多个这样的网络的组合。例如,网络或网络的一部分可以包括无线网络或蜂窝网络,并且耦接可以是码分多址(cdma)连接、全局移动通信系统(gsm)连接或其他类型的蜂窝或无线耦接。在该示例中,耦接可以实现各种类型的数据传输技术中的任何数据传输技术,例如单载波无线电传输技术(1xrtt)、演进数据优化(evdo)技术、通用分组无线电服务(gprs)技术、增强数据速率的gsm演进(edge)技术、包括3g的第三代合作伙伴计划(3gpp)、第四代无线(4g)网
络、通用移动电信系统(umts)、高速分组接入(hspa)、全球微波接入互操作性(wimax)、长期演进(lte)标准、由各种标准设置组织定义的其他数据传输技术、其他长距离协议或其他数据传输技术。
[0255]“处理器”是指根据控制信号(例如,“命令”、“操作码”、“机器码”等)操纵数据值并且产生被应用以操作机器的对应输出信号的任何电路或虚拟电路(由在实际处理器上执行的逻辑模拟的物理电路)。例如,处理器可以是中央处理单元(cpu)、简化指令集计算(risc)处理器、复杂指令集计算(cisc)处理器、图形处理单元(gpu)、数字信号处理器(dsp)、专用集成电路(asic)、射频集成电路(rfic)或其任何组合。处理器还可以是具有两个或更多个独立处理器(有时称为“核”)的多核处理器,其可以同时执行指令。
[0256]“机器存储介质”是指存储可执行指令、例程和/或数据的单个或多个存储设备和/或介质(例如,集中式或分布式数据库、和/或相关联的缓存和服务器)。因此,上述术语应被视为包括但不限于固态存储器以及光学和磁性介质,包括处理器内部或外部的存储器。机器存储介质、计算机存储介质和/或设备存储介质的具体示例包括:非易失性存储器,包括例如半导体存储器设备,例如可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、fpga和闪存设备;磁盘,例如内部硬盘和可移动磁盘;磁光盘;以及cd-rom和dvd-rom磁盘。术语“机器存储介质”、“设备存储介质”、“计算机存储介质”意指相同的事物,并且在本公开内容中可以互换使用。术语“机器存储介质”、“计算机存储介质”和“设备存储介质”明确地排除了载波、调制数据信号和其他这样的介质,载波、调制数据信号和其他这样的介质中的至少一些被涵盖在术语“信号介质”中。
[0257]“部件”是指具有以下边界的设备、物理实体或逻辑:该边界由功能或子例程调用、分支点、api或被提供用于对特定处理或控制功能进行划分或模块化的其他技术来定义。部件可以经由其接口与其他部件组合以执行机器处理。部件可以是被设计用于与其他部件一起使用的经封装的功能硬件单元并且通常执行相关功能的特定功能的程序的一部分。部件可以构成软件部件(例如,在机器可读介质上实施的代码)或硬件部件。“硬件部件”是能够执行某些操作的有形单元,并且可以以某种物理方式来配置或布置。在各种示例实施方式中,一个或更多个计算机系统(例如,独立计算机系统、客户端计算机系统或服务器计算机系统)或计算机系统的一个或更多个硬件部件(例如,处理器或处理器组)可以通过软件(例如,应用或应用部分)被配置为用于执行如本文中描述的某些操作的硬件部件。也可以机械地、电子地或其任何合适的组合来实现硬件部件。例如,硬件部件可以包括被永久地配置成执行某些操作的专用电路系统或逻辑。硬件部件可以是专用处理器,例如现场可编程门阵列(fpga)或专用集成电路(asic)。硬件部件还可以包括通过软件临时配置成执行某些操作的可编程逻辑或电路。例如,硬件部件可以包括由通用处理器或其他可编程处理器执行的软件。一旦通过这样的软件进行配置,则硬件部件变成被唯一地定制成执行所配置的功能并且不再是通用处理器的特定机器(或机器的特定部件)。将理解的是,机械地、在专用和永久配置的电路系统中、或在临时配置的电路系统(例如,由软件配置)中实现硬件部件的决定可以由成本和时间考虑来驱动。因此,短语“硬件部件”(或者“硬件实现的部件”)应当被理解成包含有形实体,即为被物理构造、永久配置(例如,硬连线)或短暂配置(例如,编程)成以某种方式操作或者执行本文中描述的某些操作的实体。考虑硬件部件被临时配置(例如,被编程)的实施方式,无需在任一时刻对硬件部件中的每一个进行配置或实例化。例如,
在硬件部件包括通过软件配置而成为专用处理器的通用处理器的情况下,可以在不同时间将通用处理器配置成各自不同的专用处理器(例如,包括不同的硬件部件)。软件相应地配置一个或多个特定处理器以例如在一个时刻处构成特定硬件部件,并且在不同的时刻处构成不同的硬件部件。硬件部件可以向其他硬件部件提供信息以及从其他硬件部件接收信息。因此,所描述的硬件部件可以被认为是通信上耦接的。在同时存在多个硬件部件的情况下,可以通过在两个或更多个硬件部件之间或之中(例如,通过适当的电路和总线)的信号传输来实现通信。在其中多个硬件部件在不同时间处被配置或实例化的实施方式中,可以例如通过将信息存储在多个硬件部件访问的存储器结构中并且在该存储器结构中检索信息来实现这样的硬件部件之间的通信。例如,一个硬件部件可以执行操作,并且将该操作的输出存储在其通信地耦接到的存储器设备中。然后,其他硬件部件可以在随后的时间访问存储器装置以检索所存储的输出并对其进行处理。硬件部件还可以发起与输入设备或输出设备的通信,并且可以对资源进行操作(例如,信息的收集)。在本文中描述的示例方法的各种操作可以至少部分地由被临时地配置(例如,由软件)或永久地配置以执行相关操作的一个或更多个处理器来执行。无论是被临时地配置还是永久地配置,这样的处理器可以构成进行操作以执行本文中描述的一个或更多个操作或功能的处理器实现的部件。如本文中使用的,“处理器实现的部件”是指使用一个或更多个处理器实现的硬件部件。类似地,本文中描述的方法可以至少部分地由处理器实现,其中特定的一个或更多个处理器是硬件的示例。例如,方法的至少一些操作可以由一个或更多个处理器1004或者处理器实现的部件执行。此外,一个或更多个处理器还可以进行操作以支持“云计算”环境中的相关操作的执行或者操作为“软件即服务”(saas)。例如,操作中的至少一些操作可以由计算机组(作为包括处理器的机器的示例)执行,其中,这些操作能够经由网络(例如,因特网)并且经由一个或更多个适当的接口(例如,api)进行访问。某些操作的执行可以分布在处理器之间,不仅仅驻留在单个机器内,而是可以被部署在若干机器上。在一些示例实施方式中,处理器或处理器实现的部件可以位于单个地理位置中(例如,在家庭环境、办公室环境或服务器群内)。在其他示例实施方式中,处理器或处理器实现的部件可以跨若干地理位置分布。
[0258]“载波信号”是指能够存储、编码或携载由机器执行的指令的任何无形介质,并且包括数字或模拟通信信号或其他无形介质以有助于这样的指令的通信。指令可以经由网络接口设备使用传输介质在网络上发送或接收。
[0259]“计算机可读介质”是指机器存储介质和传输介质两者。因此,术语包括存储设备/介质和载波/调制数据信号两者。术语“机器可读介质”、“计算机可读介质”和“设备可读介质”意指相同的事物,并且可以在本公开内容中可互换地使用。
[0260]“客户端设备”是指与通信网络对接以从一个或更多个服务器系统或其他客户端设备获得资源的任何机器。客户端设备可以是但不限于移动电话、桌上型计算机、膝上型计算机、便携式数字助理(pda)、智能电话、平板计算机、超级本、上网本、多个膝上型计算机、多处理器系统、基于微处理器或可编程消费电子产品、游戏控制台、机顶盒或用户可以用于访问网络的任何其他通信设备。在本公开内容中,客户端设备也被称为“电子设备”。
[0261]“短暂消息”是指在时间有限的持续时间内可访问的消息。短暂消息可以是文本、图像、视频等。短暂消息的访问时间可以由消息发送者设置。替选地,访问时间可以是默认设置或者由接收者指定的设置。无论设置技术如何,该消息都是暂时的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1