一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

从捕获的视频数据输出扭曲图像的制作方法

2021-11-27 00:29:00 来源:中国专利 TAG:


1.本公开总体上涉及从捕获的图像数据输出对象的扭曲图像(warped image)序列。
2.背景
3.对于许多行业来说,在线购物已经取代了实体购物体验,主要是因为购物体验的便利性。有了连网设备,消费者可以直接从在线卖家那里浏览、购买和运送数百万件商品到他们家,而不必离开他们的家。在实体商店中,消费者可以查看产品展示并与之进行物理交互。相比之下,传统的在线卖家经由上传的图片和文本描述来展示他们的产品库存。在线购物的可及性、可负担性和便利性导致了数百万新的和二手的产品从各种卖家(从数百万美元的零售商到个人不等)在线出售。这种多样性创造了丰富的选择,允许消费者在做出购买决定之前仔细评估一种或更多种产品。对他们的产品提供更多细节的卖家可能对关心所购买产品的质量的消费者更有吸引力。
4.移动计算设备(例如智能手机、平板计算机或膝上型计算机)可以包括用于确定它的位置、方向或定向的功能,例如gps接收器、罗盘、陀螺仪或加速度计。这种设备还可以包括用于无线通信(例如蓝牙通信、近场通信(nfc)、或红外(ir)通信、或与无线局域网(wlan)或蜂窝电话网络的通信)的功能。这种设备还可以包括一个或更多个摄像机、扫描仪、触摸屏、麦克风或扬声器。移动计算设备还可以执行软件应用,例如游戏、web浏览器或社交网络应用。使用社交网络应用,用户可以与他们的社交网络中的其他用户关连(connect)、通信和分享信息。
5.特定实施例的概述
6.本文描述的特定实施例涉及一种用于生成扭曲图像序列的方法,该扭曲图像序列旨在供在线卖家使用以提供可用产品的交互式实际视图。不同于上传产品的静止图像或用户捕获的视频,特定实施例使用来自捕获图像的捕获序列的一个或更多个摄像机位置来确定平滑视图路径,该平滑视图路径表示虚拟摄像机围绕对象的路径。利用一个或更多个摄像机位置和三维对象特征,计算系统扭曲一个或更多个图像以表示来自沿着视图路径定位的一个或更多个虚拟摄像机位置的视角。这导致扭曲图像序列,该扭曲图像序列可以被输出以供在无线设备上查看和交互。
7.特定实施例还提供了一个或更多个过程,用于进一步提高输出的扭曲图像序列的质量和制作水准(production value)。这些过程可以包括间隙(gap)检测、离群点(outlier)检测、裁剪(crop)或修复(inpaint)图像序列。所收集的捕获图像序列中的不准确性(由技术限制或用户错误引起)可能会降低质量和成功生成扭曲图像序列的可能性。执行这些过程中的一个或更多个,以通过移除或调整捕获的图像序列和相关联的数据(包括一个或更多个摄像机位置和三维对象特征),来提高可靠性和质量。
8.本文公开的实施例仅仅是示例,并且本公开的范围不限于它们。特定实施例可以包括本文公开的实施例的组件、元件、特征、功能、操作或步骤中的全部、一些,或不包括这些组件、元件、特征、功能、操作或步骤。根据本发明的实施例在所附权利要求中具体公开,涉及方法、存储介质、系统和计算机程序产品,其中在一个权利要求类别(例如方法)中提到
的任何特征,也可以在另一个权利要求类别(例如系统)中要求保护。在所附权利要求中的从属性或往回引用仅为了形式原因而被选择。然而,也可以要求保护由对任何先前权利要求的有意往回引用(特别是多个从属关系)而产生的任何主题,从而权利要求及其特征的任何组合被公开了并且可以被要求保护,而不管所附权利要求中选择的从属关系如何。可以被要求保护的主题不仅包括如在所附权利要求中阐述的特征的组合,而且还包括在权利要求中的特征的任何其他组合,其中,在权利要求中提到的每个特征可以与在权利要求中的任何其他特征或其他特征的组合相结合。此外,本文描述或描绘的实施例和特征中的任一个可以在单独的权利要求中和/或以与本文描述或描绘的任何实施例或特征的任何组合或以与所附权利要求的任何特征的任何组合被要求保护。
9.附图简述
10.本专利或申请文件包含以彩色展示的至少一个附图。具有彩色附图的本专利或专利申请公布的副本经请求并支付必要的费用后将由专利局提供。
11.图1示出了用于捕获和输出扭曲图像序列的示例过程。
12.图2示出了客户端设备210上的gui的示例线框,用于捕获对象的图像序列,以用于输出扭曲图像序列。
13.图3a示出了对应于对象的捕获图像序列中每个图像的一个或更多个摄像机位置的示例空间分布。
14.图3b示出了一个或更多个摄像机位置的空间分布中的间隙的示例。
15.图3c示出了计算系统调整一个或更多个摄像机位置的姿态(pose)以闭合一个或更多个间隙的示例。
16.图3d示出了在针对一个或更多个间隙进行调整之后,摄像机位置的经调整的空间分布。
17.图4示出了点云,并将表示对象特征的三维位置的一个或更多个点分组到捕获图像序列的示例图像中的一个或更多个聚类(cluster)中。
18.图5示出了利用一个或更多个控制点来制定视图路径。
19.图6示出了沿着视图路径生成虚拟摄像机的一个或更多个摄像机位置。
20.图7a示出了每个虚拟摄像机位置的一组焦点,该组焦点针对对应于焦点的路径的平滑度和紧密度进行优化。
21.图7b示出了每个虚拟摄像机位置的一组焦点,该组焦点针对对应于焦点的路径的平滑度以及虚拟摄像机位置与它们相应的焦点之间的要接近预定目标距离的距离进行优化。
22.图8表示位于视图路径上的虚拟摄像机位置的放大视图。
23.图9a示出了将所选择的参考摄像机位置中描绘的对象特征的三维位置投影到网格(mesh)上的示例。
24.图9b示出了扭曲网格,使得参考摄像机位置的投影点匹配虚拟摄像机位置的投影点。
25.图10示出了基于参考摄像机位置和虚拟摄像机位置将对象特征的一组或更多组三维位置投影到网格上。
26.图11a示出了无线设备上的gui的示例线框,用于查看输出的扭曲图像序列并与之
交互。
27.图11b示出了无线设备上的gui的示例线框,具有经由用户与无线设备的gui的交互而改变的输出的扭曲图像序列。
28.图12示出了用于从捕获图像序列输出扭曲图像序列的示例方法。
29.图13示出了与社交网络系统相关联的示例网络环境。
30.图14示出了示例计算机系统。
31.示例实施例的描述
32.与实体商店不同(在实体商店中,产品被放在货架上),用户在线购买产品时会受到由卖家提供的产品图像和描述的限制。这些通常限制了消费者在在线环境中检查产品的能力。例如,潜在的购买者可能希望从多个角度与产品交互,例如在购买之前通过旋转产品来检查其质量。这在购买二手产品时尤其有用,因为从多个角度查看二手产品可能允许潜在买家检查从固定图像中看不到的磨损和损坏。
33.在线卖家通常希望向消费者提供其产品的尽可能多的细节,同时最小化这样做的成本。虽然许多在线零售商使用静止图像和文本描述来描述他们的产品,但一些在线零售商已经为在线消费者开发了产品的交互式描述。用于在线提供产品的这些交互式描述的传统方法阻止了对在线卖家的挑战,尤其是那些资源有限的卖家。仅仅上传由摄像机捕获的对象的视频通常看起来不专业,因为从诸如手机摄像机或网络摄像机的常规装备上传的视频可能遭受例如当视点在整个场景中改变时的突然的、不和谐的移动、时间不规则性(例如,视频可能花费更长的时间来捕获对象的一部分,同时快速扫视(panning over)对象的其他部分),或者当视频在整个场景中移动时无法将感兴趣的对象保持在画面的中心。带有这些缺陷的视频可能会显得不专业,从而对卖家产生负面影响。
34.为了克服这些缺陷,卖家经常通过使用专业摄像机装备和操作者、理想的照明环境、昂贵的建模软件和熟练的计算机图形技术人员的某种组合来创建产品的可旋转描绘,以便创建具有高质量制作水准的视频,或者可替换地,产品的交互式三维模型。虽然吸引人,但制作这种媒体所需的资源往往使这一过程对个体卖家或小零售商来说过于昂贵。另外,这些交互式描绘通常是产品的理想化计算机渲染的3d模型,而不是消费者将购买的实际产品的图像。
35.本文描述的特定实施例涉及通过普通消费者装备捕获和输出扭曲图像序列,以提高在线卖家在在线市场中向消费者提供其产品的专业外观的交互式媒体的能力。图1示出了用于捕获和输出扭曲图像序列的示例过程100,其可以包括一个或更多个捕获过程和用于创建扭曲图像序列的一个或更多个捕获后(post capture)过程。在适当的情况下,特定实施例可以重复图1中描绘的一个或更多个步骤。尽管本公开将图1中的特定步骤描述和示出为以特定顺序发生,但是本公开设想了图1的任何适当步骤以任何合适的顺序发生。此外,尽管本公开描述并示出了用于从捕获图像序列输出扭曲图像序列的示例过程包括图1的特定过程,但是本公开设想了用于从捕获图像序列输出扭曲图像序列的任何合适的方法包括任何合适的步骤,其在适当的情况下可以包括图1的全部步骤、一些步骤,或者不包括图1的步骤。此外,尽管本公开描述并示出了执行图1的特定步骤的特定组件、设备或系统,但是本公开设想了执行图1的任何合适步骤的任何合适组件、设备或系统的任何合适组合。
36.示例过程100可以由包括摄像机和相关联的用户界面105(“ux”或“gui”)的计算系
统来执行。在特定实施例中,计算系统可以是例如移动计算系统,例如智能手机、平板计算机或膝上型计算机。移动计算系统可以包括用于确定它的位置、方向或定向的功能,例如gps接收器、罗盘、陀螺仪或加速度计。这种设备还可以包括用于无线通信(例如蓝牙通信、近场通信(nfc)、或红外(ir)通信、或与无线局域网(wlan)或蜂窝电话网络的通信)的功能。这种设备还可以包括一个或更多个摄像机、扫描仪、触摸屏、麦克风或扬声器。移动计算系统还可以执行软件应用,例如游戏、web浏览器或社交网络应用。使用社交网络应用,用户可以与他们的社交网络中的其他用户关连、通信和分享信息。
37.示例过程100开始于用于捕获图像序列以输出扭曲图像序列的一系列过程。摄像机和相关联的用户界面105捕获研究对象(例如,对象)的图像序列。在特定实施例中,捕获图像序列可以包括一种或更多种方法,例如但不限于,同时定位和映射(“slam”)技术110,当摄像机和相关联的用户界面105在整个场景中移动时,该方法跟踪摄像机和相关联的用户界面105的位置并映射其姿态。当捕获图像序列中的每个图像时,slam110允许计算系统映射与用户界面105相关联的一个或更多个摄像机位置。在特定实施例中,捕获图像序列还可以包括用于进展跟踪115的方法。进展跟踪115可以包括例如用户界面105上的一个或更多个指示符,以在捕获图像序列时通知用户摄像机的适当移动方向。在特定实施例中,捕获图像序列还可以包括用于编码120所捕获的图像序列的方法。这一系列处理的最终结果是原始捕获125,其包括图像序列和相关联的图像数据,它们可用于输出研究对象的扭曲图像序列。
38.在获得图像序列的原始捕获125之后,示例过程100可以继续一个或更多个捕获后过程,以渲染扭曲图像序列。在特定实施例中,计算系统可以执行间隙检测130。间隙检测130可包括基于本文详述的标准来识别和调整一个或更多个摄像机位置的姿态。在特定实施例中,计算系统可以进行离群点检测135,以便如本文所详述的识别和移除从图像序列创建的三维点云中的一个或更多个离群点。在特定实施例中,捕获后过程还可以包括从捕获的图像序列自动修剪140一个或更多个图像。自动修剪140可以包括基于本文描述的一个或更多个标准从图像序列移除一个或更多个图像。
39.在特定实施例中,过程100还可以包括路径平滑145,如本文所详述的,由此计算系统基于一个或更多个摄像机位置渲染平滑的视图路径。在特定实施例中,可以使用对应于本文描述的一个或更多个摄像机位置的一个或更多个控制点来生成该视图路径。在特定实施例中,该视图路径可以拟合预定形状(例如,弧形或半圆形)或数学方程(例如,n次多项式方程)。在特定实施例中,计算系统还可以基于一个或更多个焦点来生成聚焦路径,该一个或更多个焦点表示虚拟摄像机将聚焦到的空间中的三维点,如本文所详述的。
40.在特定实施例中,过程100还可以包括网格扭曲(mesh warp)150,如本文所详述的,网格扭曲150包括计算系统扭曲图像序列中与所选择的第一摄像机位置相关联的图像。通过利用第一摄像机位置、沿着平滑虚拟摄像机路径定位的第二虚拟摄像机的位置以及在所选图像中描绘的对象特征的三维位置,计算系统可以通过扭曲网格来调整图像,使得图像模拟沿着平滑虚拟摄像机路径定位的第二虚拟摄像机的视点。计算系统可以对捕获的图像序列中的每个图像重复该过程,从而产生扭曲图像序列。
41.在特定实施例中,如本文所详述的,过程100还可以包括渲染扭曲图像序列155,并通过裁剪160和修复165对扭曲图像序列进行一个或更多个调整。在特定实施例中,这些调
整是通过识别输出的扭曲图像序列中每个图像的缩放因子来确定的,因为每个图像以唯一的方式扭曲。该缩放因子可以通过识别满足扭曲图像序列的每个图像的目标分辨率所需的缩放因子来确定。如本文所详述的,基于缩放因子,可以相应地进行裁剪160和修复165。
42.在裁剪和修复之后,计算系统可以将扭曲图像序列编码170成特定的文件格式。过程100的最终结果是输出文件175,其包括研究对象的输出扭曲图像序列。文件175可以包括适于查看的任何格式,包括例如.mp4、.mov、.wmv、.flv或.avi。在特定实施例中,可以输出文件175,以便在与客户端设备相关联的用户界面上查看。该用户界面可以包括允许用户与文件175上输出的扭曲图像序列进行交互(包括例如旋转扭曲图像的研究对象)的一个或更多个元素。
43.图2示出了无线设备210上的gui的示例线框,用于捕获对象的图像序列,以用于输出扭曲图像序列。例如,卖家可能有兴趣在在线市场上列出用于转售的对象220(例如,空气曲棍球桌)。使用在无线设备210上运行的移动应用,用户可以从一个或更多个摄像机位置捕获对象220的图像序列。在特定实施例中,无线设备210的gui可以包括一个或更多个用户指令230,以在弯曲路径中移动无线设备210来捕获图像序列。这些可以包括例如一个或更多个指示符,例如视觉图标(例如,箭头、在期望的捕获方向上移动的无线设备210的图标、或类似的方向指示符)、触觉反馈、声音、或类似的通知,用于向无线设备210的用户提供指令以正确捕获图像序列。gui还可以包括视频捕获按钮240以及一个或更多个指示符或网格线,以帮助用户在捕获过程中保持对象220居中。尽管未示出,但是gui还可以包括用于传统摄像机应用功能的选项,例如摄像机闪光灯、镜头变焦以及在无线设备210上进行前向摄像机和后向摄像机之间的切换。尽管未示出,但是gui还可以包括向无线设备210的用户提供指令的一个或更多个文本指示符(例如,“在对象周围缓慢移动”)。
44.在特定实施例中,计算系统可以在捕获图像序列的同时跟踪无线设备210的进展。在特定实施例中,gui还可以包括一个或更多个指示符或通知,以在捕获图像序列时基于该进展跟踪通知用户无线设备210的正确移动。这对于没有经验的用户尤其有用,没有经验的用户可能不熟悉成功捕获图像序列以进行图像扭曲所需的无线设备210的适当移动。
45.进展跟踪可以包括例如,计算系统根据本文描述的用于生成平滑视图路径的一个或更多个方法,在捕获图像序列的同时尝试生成中间平滑视图路径。在特定实施例中,计算系统可以尝试在图像序列中的每第n个收集到的图像之后生成中间平滑视图路径。在特定实施例中,如果计算系统能够根据本文的方法生成中间视图路径,则计算系统可以计算并经由gui上的一个或更多个指示符或通知来指示捕获的图像序列中的至少一个图像已经从特定视点被捕获。
46.利用传统的无线设备来捕获图像数据比零售商使用的传统方法提供了许多好处。相对于昂贵的摄像机装备以及图形和建模软件,无线设备210相对来说是负担得起的,被卖家和消费者广泛拥有,并且为大多数卖家和消费者提供了更大的实用性。为了渲染扭曲图像的序列,用户仅从无线设备210捕获对象220(例如,空气曲棍球桌)的图像序列。装备和劳动力方面的最小支出允许卖家以低成本、低努力和低时间花费制作他们出售的产品的扭曲图像的交互式序列。
47.作为另一个示例,从捕获的图像数据而不是模型化的图像创建扭曲图像序列,允许更准确地描绘可供销售的对象220。许多零售商使用的3d模型只是产品的描绘,而不是对
象的被捕获的真实图像。虽然这对于购买新产品的一些购买者来说是可以接受的,但是许多二手产品的购买者更喜欢查看他们正在购买的实际商品,因为这允许购买者在做出购买决定之前检查商品的磨损或损坏。
48.图3a示出了对应于对象220(被描绘为空气曲棍球桌)的捕获图像序列中每个图像的一个或更多个摄像机位置320的示例空间分布。在该示例中,从例如在x

y平面上的对象220上方观察对应于图像序列中每个图像的每个摄像机位置320的空间分布。对于对象220的捕获图像序列中的每个图像,计算系统可以确定在该图像中描绘的对象特征的一个或更多个三维位置310,以及无线设备210的摄像机在捕获该图像时的摄像机位置320。
49.在特定实施例中,捕获后过程还可以包括从捕获的图像序列自动修剪140一个或更多个图像。自动修剪140可以包括基于一个或更多个标准从捕获的图像序列中移除一个或更多个图像。作为示例,一个或更多个重复图像是由用户在捕获图像序列时移动无线设备210的行进路径引起的。例如,用户可以追溯摄像机位置的空间分布的路径的一个或更多个部分,以确保从一个或更多个摄像机视点320收集对象220的足够多的图像。在该示例中,计算系统可以确定从相同的摄像机位置320捕获了多个图像,并且从该多个图像中选择最佳图像,同时移除从相同的摄像机位置320捕获的其他重复图像。作为另一个示例,一个或更多个重复图像是由用户将无线设备210保持在静止位置一段时间引起的。这通常发生在捕获过程的开始或结束。在该示例中,计算系统可以确定从相同的摄像机位置320捕获了多个图像,并且从该多个图像中选择最佳图像,同时移除从相同的摄像机位置320捕获的其他重复图像。
50.对于图像序列中的每个图像,在特定实施例中,在捕获该图像时,计算系统可以确定无线设备210的摄像机的对应摄像机位置320。摄像机位置320可以包括,例如但不限于,姿态,姿态包括在捕获图像序列中的该图像时,位于无线设备210上的摄像机的三维位置(x,y,z,q等坐标)和定向(例如,无线设备210是否面向对象220)。在特定实施例中,每个摄像机位置320的该姿态信息可以,例如但不限于,通过使用绝对现实世界坐标系来确定,或者相对于场景内包含的一个或更多个其他摄像机位置320或一个或更多个对象220来确定。
51.在特定实施例中,当无线设备210在整个场景中移动时,摄像机位置可以通过跟踪无线设备210的位置并映射其姿态的一种或更多种方法来确定,该方法例如但不限于,同时定位和映射(“slam”)技术110。这些技术可以利用来自无线设备210的数据和来自图像序列中一个或更多个图像的数据来确定当图像被捕获时无线设备210的对应摄像机位置320。
52.在特定实施例中,对应于对象220的捕获图像序列中的每个图像的一个或更多个摄像机位置320的空间分布的期望路径可以基于来自无线设备210上的gui的用户指令230,并且可以包括例如围绕对象220的弧形或半圆形。捕获图像的用户指令230可以包括从空间上分布在特定形状或几何路径上的摄像机位置320捕获图像序列中的一个或更多个图像。在其他实施例中,每个摄像机位置320的空间分布可以由无线设备210的用户确定,而无需关于特定形状或几何路径的指导或用户指令230。
53.在特定实施例中,计算系统可以检测一个或更多个间隙,该一个或更多个间隙可以识别与摄像机位置的空间分布的路径的第一连续子集相关联的第一组摄像机位置和与第二连续子集相关联的第二组摄像机位置之间的不规则性。间隙对于输出扭曲图像序列是有问题的,因为它们可能由于路径的第一连续子集和路径的第二连续子集之间的跳跃而导
致视点的突然改变。图3b示出了一个或更多个摄像机位置320的空间分布中的间隙的示例。由于空间分布摄像机位置的路径的一个或更多个连续子集的交叉或空间重叠,可能出现重叠间隙330。在另一示例中,当摄像机位置的空间分布的路径的第一连续子集和第二连续子集从不相交时,或者当摄像机位置的空间分布的路径的第一连续子集偏离摄像机位置的空间分布的路径的第二连续子集最小距离时,可能出现平行间隙340。在特定实施例中,计算系统可以通过确定摄像机视点之间的距离超过最小距离来识别一个或更多个间隙。在特定实施例中,该最小距离可以是绝对距离(例如,超过6英寸的任何距离),或者它可以是相对距离(例如,比每个摄像机位置320之间的平均距离大两倍的任何距离)。
54.一个或更多个间隙可能由用户在捕获图像序列时移动无线设备210的行进路径引起。例如,用户可以尝试追溯摄像机位置的空间分布的路径的一个或更多个部分,以确保从一个或更多个摄像机视点320收集到对象220的足够多的图像。然而,用户可能不经意地穿越与摄像机位置的空间分布的第一路径略有不同的第二行进路径,导致摄像机位置320的空间分布包括一个或更多个重叠间隙330。
55.作为另一个示例,一个或更多个间隙可能是由定位和映射技术中的限制(例如由slam导致的重新定位)引起的。这些限制可能导致一个或更多个摄像机位置320中的一个或更多个姿态不准确性。这些一个或更多个姿态不准确性的影响是无线设备210突然从一个三维位置“跳跃”到另一个三维位置的空间分布。这可能导致摄像机位置320的空间分布包括一个或更多个平行间隙340。
56.在一些示例中,计算系统可以调整与图像序列的连续子集相关联的一个或更多个摄像机位置320的姿态,以闭合间隙。图3c示出了计算系统调整一个或更多个摄像机位置320的姿态以闭合一个或更多个间隙的示例。例如,计算系统可以识别摄像机位置的空间分布的路径的一个或更多个连续子集,该一个或更多个连续子集包括如本文所述的间隙的一部分。计算系统可以调整一个或更多个摄像机位置320的姿态,使得包括该连续子集的摄像机位置的一个或更多个姿态从原始摄像机位置350移动到经间隙调整的摄像机位置360。在特定实施例中,可以调整这些间隙,使得摄像机位置的空间分布符合特定形状或几何路径,并且因此摄像机视点之间的定向是一致的。图3d示出了在针对一个或更多个间隙进行调整之后,摄像机位置320的经调整的空间分布。最终结果是由计算系统识别的一个或更多个摄像机位置320的连续或接近连续的空间分布。
57.在特定实施例中,计算系统可以从捕获的图像序列的一个或更多个图像生成点云。图4示出了点云,并将表示对象特征的三维位置310的一个或更多个点分组到图像序列的示例图像400中的一个或更多个聚类420中。使用slam或类似技术,该点云可以包括例如包含在图像400内的一个或更多个对象特征的三维位置310,对象特征为例如包含在图像400内的对象220的角或特定表面。由于slam或类似技术的不准确性,表示三维位置310的一个或更多个点可能不准确地定位在点云内。如果这些不准确性是浅的(例如,位于太靠近摄像机位置320的图像深度处),则计算系统可能特别地受到这些不准确性的影响,因为它们会遮挡场景并妨碍正确的图像扭曲。
58.为了实现正确的图像扭曲,计算系统可以识别并移除表示对象特征的一个或更多个不准确三维位置310的一个或更多个离群点430。在特定实施例中,计算系统可以通过对图像序列中描绘的对象特征的一个或更多个三维位置310进行分组并创建聚类420来过滤
点云。这些聚类可以利用任何基于密度的聚类技术生成,例如dbscan算法。在特定实施例中,这些聚类可以对应于例如对象220的一个或更多个特征,例如桌子的角或特定表面。
59.在特定实施例中,计算系统可以确定不位于一个或更多个聚类420内的一个或更多个离群点430。在特定实施例中,一个或更多个离群点430可能距一个或更多个聚类420超过阈值距离。在特定实施例中,一个或更多个离群点430可能无法离开摄像机位置320超过最小阈值距离(例如太浅)。计算系统可以识别并随后从点云中移除一个或更多个离群点430。
60.在特定实施例中,计算系统可以基于与图像序列相关联的摄像机位置320来确定多个控制点510。在特定实施例中,控制点510可以包括与图像序列的连续子集相关联的一个或更多个摄像机位置320。在特定实施例中,控制点510可以包括由一个或更多个间隙调整产生的、与图像序列的连续子集相关联的一个或更多个经调整的摄像机位置360。计算系统可以识别准确表示摄像机位置的连续或接近连续的空间分布所需的任意数量的控制点。
61.使用一个或更多个控制点510,计算系统将基于与图像序列相关联的摄像机位置320和经调整的摄像机位置360来确定虚拟摄像机的视图路径520。图5示出了利用一个或更多个控制点510来制定虚拟摄像机的视图路径520。在特定实施例中,确定虚拟摄像机的视图路径520包括使用多个控制点510生成样条。在特定实施例中,控制点定义了类似于边界的框架,视图路径520必须在该框架之间穿过。在特定实施例中,视图路径520可以可选地与一个或更多个控制点510或一个或更多个摄像机位置320相交。
62.在特定实施例中,视图路径520可以表示虚拟摄像机,例如,从与任何摄像机位置320相似但不同的视角查看对象220的视角。在特定实施例中,视图路径520由平滑样条限定,平滑样条的至少一部分可以根据一个或更多个几何形状(例如但不限于,弧形或半圆形)来拟合。在特定实施例中,至少一部分视图路径520可以根据一个或更多个数学方程(例如但不限于n次多项式方程)来拟合。这导致平滑的视图路径520,从而提供空间稳定性,并且避免在虚拟摄像机的位置在整个场景中移动时的突然的、不和谐的移动。视图路径520允许计算系统渲染扭曲图像序列,当所渲染的视图围绕对象220旋转时,该扭曲图像序列在时间上稳定并且在空间上平滑。
63.视图路径520可用于确定一个或更多个虚拟摄像机位置610。图6示出了沿着视图路径520为虚拟摄像机生成一个或更多个虚拟摄像机位置610。虚拟摄像机位置610可以包括姿态,该姿态包括虚拟摄像机的三维位置和定向。在特定实施例中,一个或更多个虚拟摄像机位置610可以与沿着视图路径520定位的一个或更多个摄像机位置320相交。在特定实施例中,一个或更多个虚拟摄像机位置610可以沿着视图路径520以预定间隔分开,从而提供时间稳定性。通过以规则的预定间隔进行内插,计算系统可以归一化输出的扭曲图像序列的速度,从而在扭曲图像序列中的每个扭曲图像之间提供平滑过渡。这些虚拟摄像机位置610表示沿着视图路径520的位置,在这些位置处,计算系统生成一个或更多个扭曲图像,这些扭曲图像被用来生成输出的扭曲图像序列。
64.在特定实施例中,计算系统可以为一个或更多个虚拟摄像机位置610中的每一个生成对应的焦点710。图7a示出了每个虚拟摄像机位置的一组焦点,该组焦点针对对应于焦点的聚焦路径720的平滑度和聚焦路径720的紧密度进行了优化。对于一个或更多个虚拟摄像机位置610中的每一个,计算系统可以识别对应的焦点710,该焦点710表示位于对应的虚
拟摄像机位置610处的虚拟摄像机将聚焦到的空间中的三维点(例如,虚拟摄像机位置处610的虚拟摄像机将定位其自身,使得从虚拟摄像机位置610处的虚拟摄像机捕获的图像将具有在图像的中心捕获的对应焦点710)。在特定实施例中,计算系统可以生成对应于每个焦点710的聚焦路径720。
65.在特定实施例中,部分基于优化对应于焦点710的聚焦路径720的平滑度来确定每个虚拟摄像机位置610的对应焦点710。在特定实施例中,计算系统试图识别对应于焦点710的聚焦路径720,该聚焦路径720可以进行平滑拟合,例如,根据一个或更多个几何形状(例如,弧形或半圆形),或者根据一个或更多个数学方程(例如,n次多项式方程)拟合。在特定实施例中,聚焦路径720可以试图形成相对于视图路径520的一致几何形状。这导致对应于焦点710的平滑的聚焦路径720,提供了空间稳定性并避免了当虚拟摄像机在整个场景中围绕对象220移动时,焦点中突然的、不和谐的移动。
66.在特定实施例中,每个虚拟摄像机位置610的对应焦点710部分基于优化聚焦路径720的紧密度来进一步确定。图7a示出了部分基于优化聚焦路径720的紧密度而优化的一组焦点710。尽管由于其紧密度而未被描绘,但是图7a中的焦点710可以包括连接对应焦点710的聚焦路径720。作为紧密度优化的一部分,计算系统寻求识别保持聚焦路径720尽可能短,同时保持该聚焦路径720的平滑度的对应焦点710。这种优化对于捕获小对象的图像序列特别有用,在捕获小对象的图像序列时,无线设备210的用户在以圆形路径移动无线设备210时能够容易地保持图像序列中的每个图像在对象的中心位置上聚焦,同时保持与对象220的一致距离。
67.在特定实施例中,计算系统可能无法基于紧密度来优化对应的聚焦路径720。这是由于例如紧密聚焦路径720在空间上过于靠近视图路径520(或者在一些示例中,与视图路径520交织),导致不稳定的虚拟摄像机定向(例如,虚拟摄像机可能远离对象220定向的一个或更多个虚拟视点610)。在这些实施例中,部分地基于优化对应于焦点710的聚焦路径720的平滑度并且优化每个虚拟摄像机位置610与它们相应的焦点710之间的距离以接近预定目标距离来确定每个虚拟摄像机位置610的对应焦点710。
68.图7b示出了针对每个虚拟摄像机位置610的一组焦点710,该组焦点710针对对应于焦点710的聚焦路径720的平滑度并且针对虚拟摄像机位置610与它们相应的焦点710之间的要接近预定目标距离的距离进行了优化。该优化在确定一个或更多个焦点710时(例如,寻求最小化对应于焦点710的路径的长度)不考虑紧密度。通过针对视图路径520与聚焦路径720之间的预定目标距离(例如,1米)进行优化,计算系统可以消除视图路径520与聚焦路径720之间交织的发生。这对于捕获大对象的图像序列特别有用,在捕获大对象的图像序列时,无线设备210的用户难以保持无线设备210上的摄像机在对象220的中心位置上聚焦。这种优化对于在有限的真实空间(其中当无线设备210捕获图像序列时,无线设备210的用户很难将无线设备210保持在与对象一致的距离处)中捕获对象的图像序列也是有用的。这种优化对于没有经验的用户也是有用的,没有经验的用户可能难以以圆形路径围绕对象220移动无线设备210。
69.计算系统随后将利用诸如网格扭曲的过程为每个虚拟摄像机位置610生成扭曲图像。每个扭曲图像复制从以对应焦点710为中心的虚拟摄像机位置610捕获的图像。在特定实施例中,这将导致扭曲图像的一个或更多个区域,而不影响图像的一个或更多个其他区
域。对于每个虚拟摄像机位置610,计算系统选择与图像序列相关联的摄像机位置作为对应的参考摄像机位置810。图8示出了位于视图路径520上的虚拟摄像机位置610的放大视图,该虚拟摄像机位置610具有对应的参考摄像机位置810。在特定实施例中,参考摄像机位置810是与图像序列相关联的摄像机位置320之一。在特定实施例中,通过识别最接近虚拟摄像机位置610的摄像机位置320(例如,位于距虚拟摄像机位置610的最小物理距离处)来选择参考摄像机位置810。对于每个参考摄像机位置810,计算系统将识别在参考摄像机位置810处捕获的图像。在特定实施例中,参考摄像机位置810可以对应于一个或更多个虚拟摄像机位置610。
70.通过利用与所选择的参考摄像机位置相关联的图像、参考摄像机位置810、对应的虚拟摄像机位置610以及在与所选择的参考摄像机位置相关联的图像中描绘的对象特征的三维位置310来进行网格扭曲。图9a示出了利用网格将图像的一个或更多个对象特征的三维位置投影到二维框架上的示例。在特定实施例中,网格扭曲包括使用点云来生成网格910,网格910对应于与所选择的参考摄像机位置810相关联的图像。在特定实施例中,该网格910可以包括例如线和对应的网格节点920。
71.计算系统接下来可以至少基于参考摄像机位置810,将图像中描绘的一个或更多个对象特征的三维位置310(被表示为x
i
)投影到二维框架上,该二维框架可以由网格划分成栅格(grid)。在特定实施例中,用于扭曲的一个或更多个对象特征的一个或更多个三维位置均被确定为在一个或更多个聚类420之一的阈值距离内。二维参考特征点930(被表示为p
i
)由公式p
i
=c x
i
确定,其中c表示参考摄像机位置810。然后,一个或更多个二维参考特征点930可以利用网格910投影到框架上。
72.计算系统接下来可以至少基于虚拟摄像机位置610,将图像中描绘的一个或更多个对象特征的三维位置(被表示为x
i’)投影到二维框架上,该二维框架可以由网格划分成栅格。在特定实施例中,用于扭曲的一个或更多个对象特征的一个或更多个三维位置均被确定为在一个或更多个聚类420之一的阈值距离内。投影的虚拟特征点940(被表示为p
i’)由公式p
i’=c’x
i’确定,其中c'表示虚拟摄像机位置610。然后,一个或更多个二维投影虚拟特征点940可以用网格910投影到框架上。
73.在特定实施例中,计算系统可以基于与所选择的参考摄像机位置810相关联的图像、二维参考特征点930和二维投影虚拟特征点940来生成扭曲网格。图10示出了基于参考摄像机位置810和虚拟摄像机位置610将对象特征的一组或更多组三维位置投影到网格上。每个二维参考特征点930(以粉红色描绘)与其所在的网格920的节点之间都存在空间关系。在特定实施例中,可以通过基于该空间关系为网格内的每个节点分配加权因子(由w
i
表示)来进行网格扭曲。在该示例中,每个二维参考特征点930(以粉红色描绘)的位置可以由公式p
i
=∑w
i
g
i
表示,并且每个二维投影虚拟特征点940(以紫色描绘)的公式可以由公式pi’=∑w
i
g
i’表示。利用这种空间关系,计算系统可以扭曲网格,使得参考摄像机位置810的二维参考特征点930(以粉红色描绘)匹配虚拟摄像机位置610的二维投影虚拟特征点940(以紫色描绘)。
74.在特定实施例中,系统然后可以扭曲对应于参考摄像机位置810的每个图像,使得它模拟从虚拟摄像机位置610捕获的图像。图9b示出了扭曲网格,使得参考摄像机位置810的二维参考特征点930匹配虚拟摄像机位置610的二维投影虚拟特征点940。在特定实施例
中,这可能导致来自单个输入帧的多个输出帧可能以不同方式扭曲。在特定实施例中,针对对应的虚拟摄像机位置610扭曲与所选择的参考摄像机位置810相关联的图像还使用对应于虚拟摄像机位置610的焦点710。
75.在特定实施例中,计算系统可以对沿着视图路径520定位的每个虚拟摄像机位置610重复这些步骤中的一个或更多个,从而产生与位于视图路径520上的每个虚拟视点610相关联的扭曲图像序列。在特定实施例中,输出的扭曲图像序列的每秒帧数可以不同于捕获图像序列的每秒帧数。
76.在特定实施例中,计算系统可以例如通过缩放、裁剪或修复一个或更多个扭曲图像来调整扭曲图像的序列,从而进一步生成提高制作水准并吸引用户的平滑虚拟摄像机路径。在特定实施例中,这些一个或更多个调整是通过识别输出的扭曲图像序列中每个图像的缩放因子(因为每个图像以唯一的方式被扭曲),并且确定扭曲图像序列的最差(例如,最大)缩放因子来确定的。该因子可以通过识别满足扭曲图像序列的每个图像的目标分辨率所需的最小缩放因子来确定。
77.在特定实施例中,最差缩放因子被确定为低于预定最小阈值。在该示例中,计算系统可以根据输出的扭曲图像序列中每个图像的缩放因子来缩放扭曲图像序列。计算系统还可以裁剪扭曲图像中的一个或更多个缩放图像。这产生了符合预定目标分辨率和平滑虚拟摄像机路径的扭曲图像序列。
78.在特定实施例中,最差缩放因子被确定为在预定的可接受范围内(例如,等于预定最小阈值和失败阈值或在这两个阈值之间)。在该示例中,计算系统可以根据输出的扭曲图像序列中每个图像的缩放因子来缩放扭曲图像序列。在特定实施例中,计算系统可以将缩放因子锁定在用于缩放的最小阈值。在特定实施例中,在缩放了扭曲图像序列之后,计算系统可以识别扭曲图像序列的一个或更多个缩放图像上可能由大的缩放因子导致的缺失像素信息。例如,缩放图像可能会导致图像外边界上的像素信息缺失。为了补救这种缺失像素信息,计算系统可以随后在一个或更多个缩放图像上修复一个或更多个缺失像素信息。可以通过任何常规方法(例如criminisi算法)进行修复。
79.在特定实施例中,如果缩放因子超过预定的失败阈值,则计算系统可能无法渲染输出的扭曲图像序列。在该示例中,计算系统可以经由无线设备210的gui提供错误消息,指示捕获的图像序列不成功,并提示用户再次尝试捕获。
80.在特定实施例中,计算系统可以在输出之前将扭曲图像序列编码成特定的文件格式。扭曲图像序列可以被编码并在包括任何适于查看的格式(包括例如,.mp4、.mov、.wmv、.flv或.avi)的文件中输出。在特定实施例中,可以输出包括扭曲图像序列的文件,以便在与客户端设备相关联的用户界面上查看。
81.在特定实施例中,扭曲图像序列可由在线平台(例如在线零售商的网站或社交网络系统)的一个或更多个用户经由无线设备210上的用户界面来访问。图11a示出了无线设备210上的gui的示例线框,用于查看输出的扭曲图像序列并与之交互。利用无线设备210,用户可以经由gui查看输出的扭曲图像序列。在特定实施例中,无线设备210的gui可以与,例如但不限于,在线市场或社交网络系统相关联。在特定实施例中,无线设备210的gui可以包括输出的扭曲图像序列1110、允许客户端设备的用户与输出的扭曲图像序列1110交互的一个或更多个元素1120,例如但不限于箭头。在特定实施例中,这些交互可以包括,例如但
不限于,旋转或放大输出的扭曲图像序列1110。在特定实施例中,无线设备210的gui还可以包括在输出的扭曲图像序列1110中描绘的对象220的一个或更多个描述1130,描述1130在在线购物环境中可能是有用的,其为例如名称、价格和购买后对象220的交付方法。尽管未示出,描述1130还可以包括,例如但不限于,关于卖家的信息(例如,联系信息或评级)、对象220的尺寸或重量、或对象220的状况(例如,二手的或新的)。图11b示出了无线设备210上的gui的示例线框,具有经由用户与无线设备210的gui的交互而改变的输出的扭曲图像序列1140。在该示例中,经改变的、输出的扭曲图像序列1140已经经由与无线设备210的用户的交互而被旋转。如本文前面所提到的,这些交互可以包括,例如但不限于,旋转或放大输出的扭曲图像序列。
82.在特定实施例中,无线设备210的用户界面可以包括当与输出的扭曲图像序列1110交互时的一个或更多个视觉效果,例如但不限于,滚动反弹(例如,当用户到达扭曲图像序列的末端时,输出的扭曲图像序列弹回)或动量滚动(例如,在来自用户的交互之后,输出的扭曲图像序列以好像摩擦正在减慢它的方式保持移动)。
83.图12示出了用于从捕获图像序列输出扭曲图像序列的示例方法1200。该方法可以在步骤1210开始,在该步骤中,计算系统使用摄像机捕获图像序列。在特定实施例中,计算系统包括无线设备上的摄像机和相关联的gui。在特定实施例中,无线设备的gui可以包括一个或更多个用户指令,以在弯曲路径中移动无线设备来捕获图像序列。
84.在步骤1220,计算系统为图像序列中的每个图像确定(1)该图像中描绘的对象特征的三维位置和(2)摄像机在捕获该图像时的第一摄像机位置。对象特征的三维位置可以对应于对象的特定区域,例如桌子的角或特定表面。摄像机位置可以包括,例如但不限于,姿态,姿态包括在捕获图像序列中的图像时,位于无线设备210上的摄像机的三维位置和定向(例如,无线设备210是否面向对象220)。
85.在步骤1230,计算系统基于与图像序列相关联的第一摄像机位置来确定虚拟摄像机的视图路径。在特定实施例中,确定虚拟摄像机的视图路径包括使用多个控制点生成样条。该样条可以是平滑的,从而提供空间稳定性,并且避免在虚拟摄像机在整个场景中移动时的位置的突然的、不和谐的移动。
86.在步骤1240,计算系统确定虚拟摄像机的第二摄像机位置,第二摄像机位置沿着视图路径以预定间隔分开。在特定实施例中,虚拟摄像机位置可以包括姿态,姿态至少由虚拟摄像机的三维位置和定向组成。虚拟摄像机的这些第二摄像机位置表示沿着视图路径的位置,在这些位置处,计算系统生成用来生成扭曲图像序列的一个或更多个扭曲图像。
87.在步骤1250,对于每个第二视点,计算系统(1)选择与图像序列相关联的第一摄像机位置之一,以及(2)使用所选择的第一摄像机位置、第二摄像机位置和在所选择的图像中描绘的对象特征的三维位置来扭曲与所选择的第一摄像机位置相关联的图像。在特定实施例中,通过识别位于最小物理距离虚拟摄像机位置处的第一摄像机位置来选择与图像序列相关联的第一摄像机位置。
88.在步骤1260,计算系统输出扭曲图像序列。扭曲图像序列可以在包括任何适于查看的格式(包括例如,.mp4、.mov、.wmv、.flv或.avi)的文件中输出。在特定实施例中,扭曲图像序列可由在线平台(例如在线零售商的网站或社交网络系统)的一个或更多个用户经由无线设备上的用户界面来访问。在特定实施例中,无线设备的gui可以包括允许客户端设
备的用户与输出的扭曲图像序列进行交互的一个或更多个元素。这些交互可以包括,例如但不限于,旋转或放大输出的扭曲图像序列。
89.在适当的情况下,特定实施例可以重复图12方法的一个或更多个步骤。尽管本公开将图12方法的特定步骤描述和示出为以特定的顺序发生,但是本公开设想了图12方法的任何合适的步骤以任何合适的顺序发生。此外,尽管本公开描述并示出了用于从捕获图像序列输出扭曲图像序列的示例方法包括图12方法的特定步骤,但是本公开设想了用于从捕获图像序列输出扭曲图像序列的任何合适的方法包括任何合适的步骤,其可以在适当的情况下包括图12方法的全部步骤、一些步骤或不包括图12方法的步骤。此外,尽管本公开描述并示出了执行图12方法的特定步骤的特定组件、设备或系统,但是本公开设想了执行图12方法的任何合适步骤的任何合适的组件、设备或系统的任何合适的组合。
90.图13示出了与社交网络系统相关联的示例网络环境1300。网络环境1300包括通过网络1310连接到彼此的客户端系统1330、社交网络系统1360和第三方系统1370。尽管图13示出了客户端系统1330、社交网络系统1360、第三方系统1370和网络1310的特定布置,但是本公开设想了客户端系统1330、社交网络系统1360、第三方系统1370和网络1310的任何合适的布置。作为示例而不是作为限制,客户端系统1330、社交网络系统1360和第三方系统1370中的两个或更多个可以直接连接到彼此,绕过网络1310。作为另一示例,客户端系统1330、社交网络系统1360和第三方系统1370中的两个或更多个可以全部或部分地在物理上或逻辑上彼此位于同一位置。此外,尽管图13示出了特定数量的客户端系统1330、社交网络系统1360、第三方系统1370和网络1310,但是本公开设想了任何合适数量的客户端系统1330、社交网络系统1360、第三方系统1370和网络1310。作为示例而不是作为限制,网络环境1300可以包括多个客户端系统1330、社交网络系统1360、第三方系统1370和网络1310。
91.本公开设想了任何合适的网络1310。作为示例而不是作为限制,网络1310的一个或更多个部分可以包括自组织网络、内联网、外联网、虚拟专用网络(vpn)、局域网(lan)、无线lan(wlan)、广域网(wan)、无线wan(wwan)、城域网(man)、互联网的一部分、公共交换电话网(pstn)的一部分、蜂窝电话网、或这些中的两个或更多个的组合。网络1310可以包括一个或更多个网络1310。
92.链路1350可以将客户端系统1330、社交网络系统1360和第三方系统1370连接到通信网络1310或连接到彼此。本公开设想了任何合适的链路1350。在特定实施例中,一个或更多个链路1350包括一个或更多个有线(例如数字用户线路(dsl)或有线数据服务接口规范(docsis))、无线(例如wi

fi或全球微波接入互操作性(wi

max))或光(例如同步光网络(sonet)或同步数字体系(sdh))链路。在特定实施例中,一个或更多个链路1350各自包括自组织网络、内联网、外联网、vpn、lan、wlan、wan、wwan、man、互联网的一部分、pstn的一部分、基于蜂窝技术的网络、基于卫星通信技术的网络、另一链路1350、或两个或更多个这种链路1350的组合。链路1350不必在整个网络环境1300中相同。一个或更多个第一链路1350可以在一个或更多个方面上不同于一个或更多个第二链路1350。
93.在特定实施例中,客户端系统1330可以是包括硬件、软件或嵌入式逻辑组件、或两个或更多个这样的组件的组合,并且能够执行由客户端系统1330实现或支持的适当功能的电子设备。作为示例而不是作为限制,客户端系统1330可以包括计算机系统,例如台式计算机、笔记本或膝上型计算机、上网本、平板计算机、电子书阅读器、全球定位系统设备、照相
机、个人数字助理(pda)、手持电子设备、蜂窝电话、智能手机、增强/虚拟现实设备、其他合适的电子设备或其任何合适的组合。本公开设想了任何合适的客户端系统1330。客户端系统1330可以使在客户端系统1330处的网络用户能够访问网络1310。客户端系统1330可以使它的用户能够与在其他客户端系统1330处的其他用户进行通信。
94.在特定实施例中,客户端系统1330可以包括web浏览器1332,并且可以具有一个或更多个附加件、插件或其他扩展件。在客户端系统1330处的用户可以输入统一资源定位符(url)或将web浏览器1332引导到特定的服务器(例如服务器1362或与第三方系统1370相关联的服务器)的其他地址,并且web浏览器1332可以生成超文本传输协议(http)请求并将http请求传递到服务器。服务器可以接受该请求,并响应于该请求向客户端系统1330传送一个或更多个超文本标记语言文件。客户端系统1330可以基于来自服务器的html文件来显现网页用于呈现给用户。本公开设想了任何合适的网页文件。作为示例而不是作为限制,可以根据特定的需要从html文件、可扩展超文本标记语言(xhtml)文件或可扩展标记语言(xml)文件来显现网页。这样的页面还可以执行脚本,标记语言和脚本的组合等。在本文,在适当的情况下,对网页的引用包括一个或更多个相应的网页文件(浏览器可以使用这些网页文件来显现网页),反之亦然。
95.在特定实施例中,社交网络系统1360可以是可以托管在线社交网络的网络可寻址计算系统。社交网络系统1360可以生成、存储、接收并发送社交网络数据(例如,用户简档数据、概念简档数据、社交图信息或与在线社交网络相关的其他合适的数据)。社交网络系统1360可以由网络环境1300的其他组件直接地或经由网络1310来访问。作为示例而不是作为限制,客户端系统1330可以使用web浏览器1332或与社交网络系统1360相关联的原生(native)应用(例如,移动社交网络应用、消息传送应用、另一合适的应用或其任何组合)直接地或经由网络1310来访问社交网络系统1360。在特定实施例中,社交网络系统1360可以包括一个或更多个服务器1362。每个服务器1362可以是单一服务器(unitary server)或跨越多台计算机或多个数据中心的分布式服务器。服务器1362可以具有各种类型,例如且没有限制,web服务器、新闻服务器、邮件服务器、消息服务器、广告服务器、文件服务器、应用服务器、交换服务器、数据库服务器、代理服务器、适合于执行本文描述的功能或过程的另一服务器、或者其任何组合。在特定实施例中,每个服务器1362可以包括硬件、软件或嵌入式逻辑组件、或用于执行由服务器1362实现或支持的适当功能的两个或更多个这样的组件的组合。在特定实施例中,社交网络系统1360可以包括一个或更多个数据储存器1364。数据储存器1364可以用于存储各种类型的信息。在特定实施例中,可以根据特定的数据结构来组织存储在数据储存器1364中的信息。在特定实施例中,每个数据储存器1364可以是关系数据库、纵列(columnar)数据库、相关性数据库或其他合适的数据库。尽管本公开描述或示出了特定类型的数据库,但是本公开设想了任何合适类型的数据库。特定实施例可以提供使客户端系统1330、社交网络系统1360或第三方系统1370能够管理、检索、修改、添加或删除存储在数据储存器1364中的信息的接口。
96.在特定实施例中,社交网络系统1360可以在一个或更多个数据储存器1364中存储一个或更多个社交图。在特定实施例中,社交图可以包括多个节点——其可以包括多个用户节点(每个对应于特定用户)或多个概念节点(每个对应于特定概念)——以及连接节点的多条边。社交网络系统1360可以向在线社交网络的用户提供与其他用户通信和互动的能
力。在特定实施例中,用户可以经由社交网络系统1360加入在线社交网络,且然后将关连(例如,关系)添加到社交网络系统1360中的他们想要关连到的多个其他用户。在本文,术语“朋友”可以指社交网络系统1360的任何其他用户,用户经由社交网络系统1360与任何其他用户形成关连、关联(association)或关系。
97.在特定实施例中,社交网络系统1360可以向用户提供对由社交网络系统1360支持的各种类型的项目或对象采取动作的能力。作为示例而不是作为限制,项目和对象可以包括社交网络系统1360的用户可以属于的组或社交网络、用户可能感兴趣的事件或日历条目、用户可以使用的基于计算机的应用、允许用户经由服务来购买或销售商品的交易、用户可以执行的与广告的互动、或其他合适的项目或对象。用户可以与能够在社交网络系统1360中或者由第三方系统1370的外部系统表示的任何事物进行互动,第三方系统1370与社交网络系统1360分离并且经由网络1310耦合到社交网络系统1360。
98.在特定实施例中,社交网络系统1360能够链接各种实体。作为示例而不是作为限制,社交网络系统1360可以使用户能够彼此互动以及从第三方系统1370或其他实体接收内容,或者允许用户通过应用编程接口(api)或其他通信渠道与这些实体互动。
99.在特定实施例中,第三方系统1370可以包括一种或更多种类型的服务器、一个或更多个数据储存器、一个或更多个接口(包括但不限于api)、一个或更多个web服务、一个或更多个内容源、一个或更多个网络或任何其他合适的部件(例如,服务器可以与这些部件通信)。第三方系统1370可以由与操作社交网络系统1360的实体不同的实体进行操作。然而,在特定实施例中,社交网络系统1360和第三方系统1370可以结合彼此来操作以向社交网络系统1360或第三方系统1370的用户提供社交网络服务。在这个意义上,社交网络系统1360可以提供平台或骨干网,其他系统(例如第三方系统1370)可以使用该平台或骨干网来在整个互联网上向用户提供社交网络服务和功能。
100.在特定实施例中,第三方系统1370可以包括第三方内容对象提供者。第三方内容对象提供者可以包括可以被传递到客户端系统1330的内容对象的一个或更多个源。作为示例而不是作为限制,诸如,内容对象可以包括关于用户感兴趣的事情或活动的信息,例如电影放映时间、电影评论、餐馆评论、餐馆菜单、产品信息和评论或其他合适的信息。作为另一示例而不是作为限制,内容对象可以包括激励内容对象(例如优惠券、折扣券、礼品券或其他合适的激励对象)。
101.在特定实施例中,社交网络系统1360还包括用户生成的内容对象,其可以增强用户与社交网络系统1360的互动。用户生成的内容可以包括用户可以添加、上传、发送或“发布”到社交网络系统1360的任何内容。作为示例而不是作为限制,用户将帖子从客户端系统1330传送到社交网络系统1360。帖子可以包括数据,例如状态更新或其他文本数据、位置信息、照片、视频、链接、音乐或其他类似数据或媒体。内容还可以由第三方通过“通信渠道”(例如新闻提要或流)来添加到社交网络系统1360。
102.在特定实施例中,社交网络系统1360可以包括各种服务器、子系统、程序、模块、日志和数据储存器。在特定实施例中,社交网络系统1360可以包括下列项中的一项或更多项:web服务器、动作记录器、api请求服务器、相关性和排名引擎、内容对象分类器、通知控制器、动作日志、第三方内容对象暴露日志、推理模块、授权/隐私服务器、搜索模块、广告定位模块(advertisement

targeting module)、用户界面模块、用户简档储存器、关连储存器
(connection store)、第三方内容储存器或位置储存器。社交网络系统1360还可以包括合适的部件,例如网络接口、安全机构、负载平衡器、故障转移服务器、管理和网络操作控制台、其他合适的部件、或其任何合适的组合。在特定实施例中,社交网络系统1360可以包括用于存储用户简档的一个或更多个用户简档储存器。用户简档可以包括例如,传记信息、人口统计信息、行为信息、社交信息或其他类型的描述性信息(例如工作经历、教育历史、爱好或偏好、兴趣、喜好或位置)。兴趣信息可以包括与一个或更多个类别相关的兴趣。类别可以是一般的或特定的。作为示例而不是作为限制,如果用户“赞(like)”关于一种品牌的鞋的文章,该类别可以是品牌,或者“鞋”或“衣服”的一般类别。关连储存器可以用于存储关于用户的关连信息。关连信息可以指示具有相似或共同的工作经历、组成员资格、爱好、教育历史或者以任何方式相关或共享共同属性的用户。关连信息还可以包括在不同用户和内容(内部和外部)之间的用户定义的关连。web服务器可以用于经由网络1310将社交网络系统1360链接到一个或更多个客户端系统1330或一个或更多个第三方系统1370。web服务器可以包括邮件服务器或用于在社交网络系统1360和一个或更多个客户端系统1330之间接收并按规定路线发送消息的其他消息传送功能。api请求服务器可以允许第三方系统1370通过调用一个或更多个api来访问来自社交网络系统1360的信息。动作记录器可以用于从web服务器接收关于用户在社交网络系统1360上或之外的动作的通信。结合动作日志,可以维护用户暴露于第三方内容对象的第三方内容对象日志。通知控制器可以向客户端系统1330提供关于内容对象的信息。信息可以作为通知被推送到客户端系统1330,或者信息可以响应于从客户端系统1330接收的请求而从客户端系统1330中被拉取。授权服务器可以用于实施社交网络系统1360的用户的一个或更多个隐私设置。用户的隐私设置确定与用户相关联的特定信息可以如何被分享。授权服务器可以例如通过设置适当的隐私设置来允许用户选择加入或选择退出使他们的动作由社交网络系统1360记录或者与其他系统(例如,第三方系统1370)分享。第三方内容对象储存器可以用于存储从第三方(例如第三方系统1370)接收的内容对象。位置储存器可以用于存储从与用户相关联的客户端系统1330接收的位置信息。广告定价模块可以组合社交信息、当前时间、位置信息或其他合适的信息以用通知的形式向用户提供相关广告。
103.图14示出了示例计算机系统1400。在特定实施例中,一个或更多个计算机系统1400执行本文描述或示出的一个或更多个方法的一个或更多个步骤。在特定实施例中,一个或更多个计算机系统1400提供本文描述或示出的功能。在特定实施例中,在一个或更多个计算机系统1400上运行的软件执行本文描述或示出的一个或更多个方法的一个或更多个步骤,或者提供本文描述或示出的功能。特定实施例包括一个或更多个计算机系统1400的一个或更多个部分。在本文,在适当的情况下,对计算机系统的引用可以包括计算系统,反之亦然。此外,在适当的情况下,对计算机系统的引用可以包括一个或更多个计算机系统。
104.本公开设想了任何合适数量的计算机系统1400。本公开设想了计算机系统1400采取任何合适的物理形式。作为示例而不是作为限制,计算机系统1400可以是嵌入式计算机系统、片上系统(soc)、单板计算机系统(sbc)(例如,模块上计算机(com)或模块上系统(som))、台式计算机系统、膝上型或笔记本计算机系统、交互式信息亭、大型机、计算机系统网状网、移动电话、个人数字助理(pda)、服务器、平板计算机系统、增强/虚拟现实设备、或
者这些系统的两个或更多个的组合。在适当的情况下,计算机系统1400可以包括一个或更多个计算机系统1400;是整体式的或分布式的;跨越多个位置;跨越多台机器;跨越多个数据中心;或者驻留在云中,云可以包括在一个或更多个网络中的一个或更多个云组件。在适当的情况下,一个或更多个计算机系统1400可以在没有实质性空间或时间限制的情况下执行本文描述或示出的一个或更多个方法的一个或更多个步骤。作为示例而不是作为限制,一个或更多个计算机系统1400可以实时地或以批处理模式来执行本文描述或示出的一个或更多个方法的一个或更多个步骤。在适当的情况下,一个或更多个计算机系统1400可以在不同的时间或在不同的位置处执行本文描述或示出的一个或更多个方法的一个或更多个步骤。
105.在特定实施例中,计算机系统1400包括处理器1402、存储器1404、存储装置1406、输入/输出(i/o)接口1408、通信接口1410和总线1412。尽管本公开描述并示出了具有在特定布置中的特定数量的特定组件的特定计算机系统,但是本公开设想了具有在任何合适布置中的任何合适数量的任何合适组件的任何合适的计算机系统。
106.在特定实施例中,处理器1402包括用于执行指令(例如构成计算机程序的那些指令)的硬件。作为示例而不是作为限制,为了执行指令,处理器1402可以从内部寄存器、内部高速缓存、存储器1404或存储装置1406中检索(或取回)指令;将他们解码并执行它们;以及然后将一个或更多个结果写到内部寄存器、内部高速缓存、存储器1404或存储装置1406。在特定实施例中,处理器1402可以包括用于数据、指令或地址的一个或更多个内部高速缓存。在适当的情况下,本公开设想了处理器1402包括任何合适数量的任何合适的内部高速缓存。作为示例而不是作为限制,处理器1402可以包括一个或更多个指令高速缓存、一个或更多个数据高速缓存、以及一个或更多个转译后备缓冲器(tlb)。在指令高速缓存中的指令可以是在存储器1404或存储装置1406中的指令的副本,并且指令高速缓存可以加速处理器1402对那些指令的检索。在数据高速缓存中的数据可以是:在存储器1404或存储装置1406中的数据的副本,用于使在处理器1402处执行的指令进行操作;在处理器1402处执行的先前指令的结果,用于由在处理器1402处执行的后续指令访问或者用于写到存储器1404或存储装置1406;或其他合适的数据。数据高速缓存可以加速由处理器1402进行的读或写操作。tlb可以加速关于处理器1402的虚拟地址转译。在特定实施例中,处理器1402可以包括用于数据、指令或地址的一个或更多个内部寄存器。在适当的情况下,本公开设想了处理器1402包括任何合适数量的任何合适的内部寄存器。在适当的情况下,处理器1402可以包括一个或更多个算术逻辑单元(alu);是多核处理器;或者包括一个或更多个处理器1402。尽管本公开描述并示出了特定的处理器,但是本公开设想了任何合适的处理器。
107.在特定实施例中,存储器1404包括用于存储用于使处理器1402执行的指令或用于使处理器1402操作的数据的主存储器。作为示例而不是作为限制,计算机系统1400可以将指令从存储装置1406或另一个源(例如,另一个计算机系统1400)加载到存储器1404。处理器1402然后可以将指令从存储器1404加载到内部寄存器或内部高速缓存。为了执行指令,处理器1402可以从内部寄存器或内部高速缓存中检索指令并将它们解码。在指令的执行期间或之后,处理器1402可以将一个或更多个结果(其可以是中间结果或最终结果)写到内部寄存器或内部高速缓存。处理器1402然后可以将这些结果中的一个或更多个写到存储器1404。在特定实施例中,处理器1402仅执行在一个或更多个内部寄存器或内部高速缓存中
或在存储器1404(而不是存储装置1406或其他地方)中的指令,并且仅对在一个或更多个内部寄存器或内部高速缓存中或在存储器1404(而不是存储装置1406或其他地方)中的数据进行操作。一个或更多个存储器总线(其可以各自包括地址总线和数据总线)可以将处理器1402耦合到存储器1404。如下所述,总线1412可以包括一个或更多个存储器总线。在特定实施例中,一个或更多个存储器管理单元(mmu)驻留在处理器1402和存储器1404之间,并且便于由处理器1402请求的对存储器1404的访问。在特定实施例中,存储器1404包括随机存取存储器(ram)。在适当的情况下,该ram可以是易失性存储器。在适当的情况下,该ram可以是动态ram(dram)或静态ram(sram)。此外,在适当的情况下,该ram可以是单端口ram或多端口ram。本公开设想了任何合适的ram。在适当的情况下,存储器1404可以包括一个或更多个存储器1404。尽管本公开描述并示出了特定的存储器,但是本公开设想了任何合适的存储器。
108.在特定实施例中,存储装置1406包括用于数据或指令的大容量存储装置。作为示例而不是作为限制,存储装置1406可以包括硬盘驱动器(hdd)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(usb)驱动器、或这些中的两个或更多个的组合。在适当的情况下,存储装置1406可以包括可移动或不可移动(或固定)介质。在适当的情况下,存储装置1406可以在计算机系统1400的内部或外部。在特定实施例中,存储装置1406是非易失性固态存储器。在特定实施例中,存储装置1406包括只读存储器(rom)。在适当的情况下,该rom可以是掩模编程rom、可编程rom(prom)、可擦除prom(eprom)、电可擦除prom(eeprom)、电可变rom(earom)、或闪存、或这些中的两个或更多个的组合。本公开设想了采用任何合适的物理形式的大容量存储装置1406。在适当的情况下,存储装置1406可以包括便于在处理器1402和存储装置1406之间的通信的一个或更多个存储装置控制单元。在适当的情况下,存储装置1406可以包括一个或更多个存储装置1406。尽管本公开描述并示出了特定的存储装置,但是本公开设想了任何合适的存储装置。
109.在特定实施例中,i/o接口1408包括为在计算机系统1400和一个或更多个i/o设备之间的通信提供一个或更多个接口的硬件、软件或两者。在适当的情况下,计算机系统1400可以包括这些i/o设备中的一个或更多个。这些i/o设备中的一个或更多个可以实现在人和计算机系统1400之间的通信。作为示例而不是作为限制,i/o设备可以包括键盘、小键盘、麦克风、监视器、鼠标、打印机、扫描仪、扬声器、静态摄像机、触笔、平板计算机、触摸屏、跟踪球、视频摄像机、另一个合适的i/o设备、或这些中的两个或更多个的组合。i/o设备可以包括一个或更多个传感器。本公开设想了任何合适的i/o设备以及用于它们的任何合适的i/o接口1408。在适当的情况下,i/o接口1408可以包括使处理器1402能够驱动这些i/o设备中的一个或更多个的一个或更多个设备或软件驱动器。在适当的情况下,i/o接口1408可以包括一个或更多个i/o接口1408。尽管本公开描述并示出了特定的i/o接口,但是本公开设想了任何合适的i/o接口。
110.在特定实施例中,通信接口1410包括提供用于在计算机系统1400和一个或更多个其他计算机系统1400或一个或更多个网络之间的通信(例如,基于包的通信)的一个或更多个接口的硬件、软件或两者。作为示例而不是作为限制,通信接口1410可以包括用于与以太网或其他基于有线的网络进行通信的网络接口控制器(nic)或网络适配器,或用于与无线网络(例如wi

fi网络)进行通信的无线nic(wnic)或无线适配器。本公开设想了任何合适的网络和用于它的任何合适的通信接口1410。作为示例而不是作为限制,计算机系统1400可
以与自组织网络、个域网(pan)、局域网(lan)、广域网(wan)、城域网(man)或互联网的一个或更多个部分、或这些中的两个或更多个的组合进行通信。这些网络中的一个或更多个的一个或更多个部分可以是有线的或无线的。作为示例,计算机系统1400可以与无线pan(wpan)(例如,蓝牙wpan)、wi

fi网络、wi

max网络、蜂窝电话网络(例如,全球移动通信系统(gsm)网络)、或其他合适的无线网络、或这些中的两个或更多个的组合进行通信。在适当的情况下,计算机系统1400可以包括用于这些网络中的任一个的任何合适的通信接口1410。在适当的情况下,通信接口1410可以包括一个或更多个通信接口1410。尽管本公开描述并示出了特定的通信接口,但是本公开设想了任何合适的通信接口。
111.在特定实施例中,总线1412包括将计算机系统1400的组件耦合到彼此的硬件、软件或两者。作为示例而不是作为限制,总线1412可以包括加速图形端口(agp)或其他图形总线、扩展工业标准体系结构(eisa)总线、前端总线(fsb)、hypertransport(ht)互连、工业标准体系结构(isa)总线、infiniband互连、低引脚数(lpc)总线、存储器总线,微通道体系结构(mca)总线、外围部件互连(pci)总线、pci

express(pcie)总线、串行高级技术附件(sata)总线、视频电子标准协会本地(vlb)总线、或任何其他合适的总线、或这些中的两个或更多个的组合。在适当的情况下,总线1412可以包括一个或更多个总线1412。尽管本公开描述并示出了特定总线,但是本公开设想了任何合适的总线或互连。
112.在本文,在适当的情况下,一个或更多个计算机可读非暂时性存储介质可以包括一个或更多个基于半导体的或其他集成电路(ic)(例如,现场可编程门阵列(fpga)或专用ic(asic))、硬盘驱动器(hdd)、混合硬盘驱动器(hhd)、光盘、光盘驱动器(odd)、磁光盘、磁光盘驱动器、软盘、软盘驱动器(fdd)、磁带、固态驱动器(ssd)、ram驱动器、安全数字(secure digital)卡或驱动器、任何其他合适的计算机可读非暂时性存储介质、或这些中的两个或更多个的任何合适组合。在适当的情况下,计算机可读非暂时性存储介质可以是易失性的、非易失性的或者易失性和非易失性的组合。
113.本文中,除非另有明确指示或通过上下文另有指示,否则“或”是包括一切的而非排他性的。因此在本文,除非另有明确指示或通过上下文另有指示,否则“a或b”意指“a、b或两者”。此外,除非另有明确指示或通过上下文另有指示,否则“和”既是联合的又是各自的。因此在本文,除非另有明确指示或通过上下文另有指示,否则“a和b”意指“a和b,联合地或各自地”。
114.本公开的范围包括本领域中的普通技术人员将理解的对本文描述或示出的示例实施例的所有改变、替换、变化、变更和修改。本公开的范围不限于本文描述或示出的示例实施例。此外,尽管本公开将本文的相应实施例描述并示为包括特定的组件、元件、特征、功能、操作或步骤,但是这些实施例中的任何一个可以包括本领域中的普通技术人员将理解的在本文任何地方描述或示出的任何组件、元件、特征、功能、操作或步骤的任何组合或置换。此外,在所附权利要求中对适合于、被布置成、能够、被配置成、实现来、可操作来、或操作来执行特定功能的装置或系统或装置或系统的组件的引用包括该装置、系统、组件,无论它或那个特定功能是否被激活、开启或解锁,只要该装置、系统或组件是这样被调整、被布置、使能够、被配置、被实现、可操作的、或操作的。此外,尽管本公开将特定实施例描述或示为提供特定优点,但是特定实施例可以提供这些优点中的一些、全部或不提供这些优点。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献