首页 / 专利库 / 信号处理 / 滤波器 / 线性滤波器 / 低通滤波器 / 用于变换图像的系统和方法

用于变换图像的系统和方法

阅读:1发布:2020-07-22

专利汇可以提供用于变换图像的系统和方法专利检索,专利查询,专利分析的服务。并且获得利用移动设备捕捉的图像的系统、方法和计算机可读介质。获得捕捉图像的时刻或该时刻附近的移动设备的运动 传感器 数据。旋转 角 基于运动 传感器数据 计算,并且图像基于旋转角变换。在另一方面中, 用户界面 使得用户能够控制图像变换。用户界面使得用户能够以两个以上的粒度控制图像在显示器上旋转。旋转点可以是用户定义的。经旋转的图像可以缩放至适合用于显示经变换的图像的查看框。,下面是用于变换图像的系统和方法专利的具体信息内容。

1.一种计算机实现方法,包括:
计算机系统获取利用移动设备捕捉的图像;
由所述计算机系统获取与在捕捉所述图像的时刻相关的所述移动设备的运动传感器数据,其中,所述运动传感器数据用于确定在捕捉所述图像的时刻所述移动设备相对于基准轴的倾斜;
由所述计算机系统基于所述运动传感器数据确定与在捕捉所述图像的时刻相关的旋转;并且
由所述计算机系统基于所述旋转角变换所述图像。
2.根据权利要求1所述的方法,其中,变换所述图像包括:基于所述旋转角旋转所述图像。
3.根据权利要求2所述的方法,其中,变换所述图像包括:基于所述移动设备的用户界面的查看框的尺寸缩放所述图像。
4.根据权利要求1所述的方法,进一步包括:在所述移动设备上显示经变换的所述图像。
5.根据权利要求1所述的方法,其中,确定所述旋转角由所述移动设备执行。
6.根据权利要求1所述的方法,其中,变换所述图像由所述移动设备执行。
7.根据权利要求1所述的方法,其中,获取运动传感器数据包括:对于来自所述移动设备上的陀螺仪的数据进行取样。
8.根据权利要求7所述的方法,其中,所取样的数据由低通滤波器过滤以减少噪声。
9.根据权利要求1所述的方法,其中,获取运动传感器数据包括:对于来自所述移动设备上的加速计的数据进行取样。
10.根据权利要求1所述的方法,进一步包括:
基于与在捕捉所述图像的时刻相关的旋转角,提供用户输入元件以允许用户选择自动变换所述图像;并且
接收对于自动变换所述图像的选择,其中,变换所述图像响应于所述选择的接收。
11.根据权利要求1所述的方法,进一步包括:
在所述图像变换之前将所获取的图像显示在所述移动设备的显示器上;并且在所述图像变换之后,经变换的图像代替所获取的图像显示在所述显示器上。
12.根据权利要求1所述的方法,进一步包括:
将所述旋转角与预先确定的阈值角度进行比较;并且
在所述旋转角不超过所述预先确定的阈值角度时,显示经变换的图像。
13.根据权利要求1所述的方法,进一步包括:
显示用户界面,所述用户界面包括第一控制元件,所述第一控制元件使能以第一粒度的用户控制旋转经变换的图像;
接收应用于所述第一控制元件的第一用户输入;并且
基于所述第一用户输入以所述第一粒度旋转经变换的图像。
14.根据权利要求13所述的方法,进一步包括:
在所述用户界面中显示第二控制元件,所述第二控制元件使能以第二粒度的用户控制旋转经变换的图像;
接收应用于所述第二控制元件的第二用户输入;并且
基于所述第二用户输入以所述第二粒度旋转经变换的图像。
15.根据权利要求14所述的方法,其中,所述第一控制元件和所述第二控制元件在第一方向上从基准位置的运动在第一旋转方向上旋转所述图像,并且所述第一控制元件和所述第二控制元件在第二方向上从所述基准位置的运动在第二旋转方向上旋转所述图像。
16.根据权利要求1所述的方法,进一步包括:
显示使得用户能够定义旋转点的用户界面,其中,绕所述旋转点旋转经变换的图像;
接收应用于所述用户界面的第一用户输入以定义旋转点;
接收定义旋转方向和粒度的、应用于所述用户界面的第二用户输入;并且根据基于所述第一用户输入和所述第二用户输入的所述旋转方向和粒度绕所述旋转点旋转经变换的图像。
17.根据权利要求1所述的方法,其中,所述移动设备是移动电话
18.根据权利要求1所述的方法,其中,变换所述图像由社交网络系统执行。
19.一种通信系统,包括:
至少一个处理器;以及
存储器,存储被配置为指示所述至少一个处理器进行以下各项的指令:
获取利用移动设备捕捉的图像;
获取与在捕捉所述图像的时刻相关的针对所述移动设备的运动传感器数据,其中,所述运动传感器数据用于确定在捕捉所述图像的时刻所述移动设备相对于基准轴的倾斜;
基于所述运动传感器数据确定与在捕捉所述图像的时刻相关的旋转角;并且基于所述旋转角变换所述图像。
20.一种存储计算机可执行指令的非临时性计算机存储介质,所述计算机可执行指令在被执行时,使计算机系统进行计算机实现方法,所述方法包括:
获取利用移动设备捕捉的图像;
获取与在捕捉所述图像的时刻相关的针对所述移动设备的运动传感器数据,其中,所述运动传感器数据用于确定在捕捉所述图像的时刻所述移动设备相对于基准轴的倾斜;
基于所述运动传感器数据确定与在捕捉所述图像的时刻相关的旋转角;并且基于所述旋转角变换所述图像。

说明书全文

用于变换图像的系统和方法

技术领域

[0001] 本发明涉及通常在图像处理领域的计算机实现的方法和系统以及计算机可读介质。

背景技术

[0002] 现在,人们具有可以用来拍摄图片的多种选择。除专用于获取胶片或数字形式的图像的传统的照相机之外,诸如智能手机的许多移动设备也能够拍摄图片。例如,移动设备可以包括照相机和使得用户能够利用移动设备上的照相机拍摄图片的图像捕捉软件。这些图像可以存储至移动设备并随后查看。此外,一些互联网社交网络使得用户能够在线共享照片。这些照片共享社交网络的会员可以利用他们的移动设备拍摄图片并将图片上传至照片共享社交网络以便让其他人看到。
[0003] 图像在被捕捉到之后可以修改。例如,移动设备或支持社交网络的系统可以提供滤镜或其他类型的编辑工具以允许手动改动图像。有时,使用这些编辑工具,图像的拥有者可以选择修改图像以提供美学改善。在其他情况下,编辑工具可以允许图像的拥有者修改图像的被认为不希望的其他方面。

发明内容

[0004] 本发明具体地提供用于变换图像以解决倾斜的技术。在本公开的各个方面中,提供获得利用移动设备来捕捉图像的系统、方法和计算机可读介质。图像优选地由内置于移动设备中的照相机捕捉。没有任何限制,移动设备尤其是移动通信设备,优选地,电子移动通信设备,例如移动电话,尤其是智能电话或用于无线通信的任何其他手持移动通信设备。
[0005] 还获得在捕捉图像的时刻或该时刻附近的移动设备的运动传感器数据。为了该目的,移动设备可以包括监测移动设备的运动和方位并输出对应的运动传感器数据的至少一个运动传感器。运动传感器可以例如测量加速和/或旋转力或速度。在实施方式中,运动传感器数据的获取包括从陀螺仪中取样数据。取样数据可以通过低通滤波器过滤以减少噪声。在实施方式中,运动传感器数据的获取包括从移动设备上的加速计中取样数据。
[0006] 旋转基于运动传感器数据计算,并且图像基于旋转角变换。
[0007] 在实施方式中,图像的变换包括基于计算的旋转角旋转图像。图像的变换还可以包括或者可替换地基于移动设备的用户界面的查看框的尺寸缩放图像。
[0008] 在实施方式中,变换的图像显示在移动设备上。
[0009] 在实施方式中,确定旋转角由移动设备执行。
[0010] 在实施方式中,图像的变换由移动设备执行。
[0011] 在实施方式中,提供允许用户选择图像的自动变换的用户输入元件,并且接收对于图像的自动变换的选择。图像的变换响应于接收的选择。
[0012] 在实施方式中,在图像被变换之前,获取的图像显示在移动设备的显示器上。在变换之后,经变换的图像图像代替所获取的图像显示在显示器上。
[0013] 在实施方式中,将旋转角与预先确定阈值角度相比较。在旋转角不超过预先确定的阈值角度时,显示变换图像。
[0014] 在实施方式中,显示的用户界面包括第一控制元件,其使能在第一粒度下的用户控制的变换图像的旋转。接收应用于第一控制元件的第一用户输入,并且基于第一用户输入在第一粒度下旋转经变换的图像。
[0015] 在实施方式中,显示在用户界面中的使能在第二粒度下的用户控制的变换图像的旋转的第二控制元件。接收应用于第二控制元件的第二用户输入,并且基于第二用户输入以第二粒度旋转经变换的图像。
[0016] 在实施方式中,第一控制元件和第二控制元件在第一方向上从基准位置的运动在第一旋转方向上旋转图像,并且第一控制元件和第二控制元件在第二方向上从基准位置的运动在第二旋转方向上旋转图像。
[0017] 在实施方式中,用户界面使得用户能够定义旋转点,变换图像绕该旋转点旋转。接收应用于用户界面的定义旋转点的第一用户输入。接收应用于用户界面的定义旋转方向和粒度的第二用户输入。经变换的图像根据基于第一用户输入和第二用户输入的旋转方向和粒度绕旋转点旋转。
[0018] 在实施方式中,图像的变换由社交网络系统执行。
[0019] 从附图和以下详细描述中,本发明的许多其他特征和实施方式将变得显而易见。

附图说明

[0020] 图1示出根据本公开的实施方式的示例移动设备。
[0021] 图2示出根据本公开的实施方式的在图1中示出的示例图像变换模
[0022] 图3示出根据本公开的实施方式的用于基于运动传感器数据来变换图像的示例过程。
[0023] 图4A示出根据本公开的实施方式的显示变换之前的图像的示例用户界面。
[0024] 图4B示出根据本公开的实施方式的在图像旋转之后的图4A中示出的示例用户界面。
[0025] 图4C示出根据本公开的实施方式的在图像缩放并旋转之后的图4A中示出的示例用户界面。
[0026] 图5A示出根据本公开的实施方式提供用户对变换图像的控制的示例用户界面。
[0027] 图5B示出根据本公开的实施方式的在图像变换之后在图5A中示出的示例用户界面。
[0028] 图6A示出根据本公开的实施方式的示例控制元件。
[0029] 图6B示出根据本公开的实施方式的示例控制元件。
[0030] 图7示出根据本公开的实施方式的用于变换图像的示例过程。
[0031] 图8示出根据本公开的实施方式的将图像绕用户定义的旋转点变换的示例过程。
[0032] 图9A示出根据本公开的实施方式的显示在进行图8中的过程之前的图像的示例用户界面。
[0033] 图9B示出根据本公开的实施方式的显示根据图8的过程变换的图像的图9A的示例用户界面。
[0034] 图10是根据本公开的实施方式的用于变换图像的示例系统的网络图。
[0035] 图11示出了根据本发明的实施方式的可用于实现在本文中描述的一个或多个实施方式的计算机系统的实例。
[0036] 描述本发明的各种实施方式的附图仅为了说明的目的,其中附图使用相同参考数字确定相同元件。本领域技术人员通过下面的讨论可以容易认识到在不偏离在此所述的本发明的原理的情况下可以采用在附图中说明的结构和方法的替换实施方式。

具体实施方式

[0037] 图像变换
[0038] 通过照相机(包括内置于移动设备中的照相机)捕捉的图像可能会有某些缺点。缺点会反映图像捕捉过程中的不规律性和其他因素。例如,在照相机在图像捕捉的时刻期间倾斜时,得到的捕捉图像会反映照相机的倾斜。在个人以不符合图像对准期望的方式控制照相机位置时会出现倾斜。倾斜图像是美学上不希望有的或者不忠实于图像中描绘的内容的真实性。
[0039] 照相机可以布置在移动设备内。在实施方式中,移动设备的倾斜可基于移动设备的轴与基准轴的偏差。在移动设备的纵轴(或横轴)没有与垂直基准轴或平基准轴对准(即,并行)时,可以认为移动设备是倾斜的。图像捕捉期间倾斜的移动设备会使得捕捉图像在显示在移动设备的查看框内时看起来是倾斜的。
[0040] 应当理解,虽然移动设备的倾斜在本公开中可以描述为基于移动设备的纵轴与垂直基准轴的偏差,但移动设备的倾斜还可以基于移动设备的横轴与垂直基准轴的偏差。例如,在移动设备的横轴(或纵轴)没有与垂直基准轴或水平基准轴对准(即,并行)时,可以认为移动设备是倾斜的。
[0041] 为了解决上述缺点,本公开的系统、方法和计算机可读介质的各种实施方式可以涉及使用移动设备的能力矫正出现的倾斜图像。移动设备可以包括监测移动设备的运动和方位的运动传感器。运动传感器可以例如测量沿着x-轴、y-轴和z-轴的加速力和旋转力。示例运动传感器可以包括例如陀螺仪和加速计。从一个或多个运动传感器产生的运动传感器数据可以用于确定移动设备相对于基准轴的倾斜(或者倾度)。
[0042] 可以获得利用移动设备捕捉的图像,以及反映在捕捉图像的时刻或时刻附近的移动设备位置的移动设备的运动传感器数据。然后可以基于运动传感器数据计算对于校正倾斜图像所必需的旋转角,并且可以基于旋转角变换图像。
[0043] 例如,移动设备可以包括照相机和使得用户能够利用移动设备上的照相机拍摄图片的图像捕捉软件。如果用户在保持移动设备倾斜时拍摄图片,那么捕捉的图像在显示在移动设备上的查看框内时将会是相应地倾斜的。本公开的实施方式使得用户能够变换(例如,旋转)图像以使图像变直或者另外校正移动设备和得到的图像的倾斜。以这种方法,例如可以在将捕捉的图像存储在移动设备上或者将其上传至远程设备(诸如使用户能够在线存储并共享照片的社交网络系统的远程服务器)之前,使图像变直。在一个实施方式中,图像捕捉软件可以是社交网络系统的移动应用的一部分,用户可以将其下载至移动设备以使得用户能够捕捉图像并将它们在线发布至社交网络系统。例如,基于运动传感器的倾斜校正可以被包括为移动应用的一部分,并使得用户能够校正捕捉图像的倾斜。在一个实施方式中,在获得图像之后倾斜校正可以在没有用户确认的情况下自动发生。在另一个实施方式中,倾斜校正在变换图像之前需要用户发起或确认。
[0044] 图1示出根据本公开的实施方式的示例移动设备。移动设备100被示出为包括照相机105、图像捕捉模块110、运动传感器115、图像变换模块120、显示器125以及处理设备130。应当理解,示出的部件不旨在限制,而且为了避免使本公开的细节不清楚,移动设备100的其他部件没有示出-例如,操作系统、扬声器、麦克、输入控制元件(例如,触摸屏键盘、数字键盘等)、通信端口、收发器、存储器等。示例移动设备100可以包括,但不限于,智能电话、平板电脑笔记本电脑个人数字助理(PDA)、移动电话等,如结合附图11论述的。
[0045] 照相机105布置在移动设备100上并且使得用户能够利用移动设备105捕捉图像。照相机105可以例如包括透镜和图像传感器,该图像传感器用于产生代表由照相机105拍摄的图像(例如,图片)的图像数据。例如,图像传感器可以包括,但不限于,电荷耦合器件(CCD)图像传感器或互补金属化物半导体(CMOS)传感器,用于捕捉光并将其转变为电信号。可以包括额外的电气电路以将来自图像传感器的电信号转变为代表图像的数字信号
[0046] 图像捕捉模块110结合照相机105运行以使得能够捕捉图像。例如,图像捕捉模块110可以控制图像捕捉期间照相机105的操作。图像捕捉模块110还可以例如产生用户界面或取景器以允许用户使用移动设备100上的照相机105拍摄图片。
[0047] 运动传感器115布置在移动设备100上并且提供移动设备100的运动传感器数据。术语“运动传感器数据”在本文中广义地使用并且通常涉及有关移动、位置、方位、速度等的数据。运动传感器115可以包括加速计、陀螺仪或者可以产生运动传感器数据的任何其他类型的工具或资源。例如,运动传感器115可以基于加速力(例如,来自加速计),沿着三个轴的旋转力(例如,来自陀螺仪),加速力和旋转力的组合等。应当理解,运动传感器115不旨在限于单个运动传感器,而是可以包括多于一个运动传感器(例如,加速计和陀螺仪)。
[0048] 图像变换模块120通过旋转所捕捉的图像来变换该捕捉图像,并且在有些情况下,加之缩放该图像。在一个实施方式中,变换基于从运动传感器115得来的运动传感器数据。在获得捕捉图像以及移动设备100在捕捉图像的时刻或该时刻附近的移动设备100的运动传感器数据之后,图像变换模块120确定旋转该捕捉图像以对于校正捕捉图像时移动设备
100的倾斜所必需的旋转角。例如,图像变换模块120可以使用移动设备100的操作系统的应用编程接口(API)接收并处理运动传感器数据。例如,移动设备100的操作系统的构架可以使能应用(诸如实现本公开的倾斜校正的实施方式的应用)以便接收来自设备硬件的运动传感器数据并处理那些数据。
[0049] 在实施方式中,图像变换模块120可以指定参照系,然后可以通过运动传感器115将移动设备的方位或运动与那个参照系相比较。运动传感器数据可以在不同的实施方式中改变形式-例如,向量、原始加速度值、相对于一个或多个基准轴的角度值等。移动设备100的倾斜可以基于运动传感器数据来确定并且用于计算校正倾斜图像所必需的旋转角。在实施方式中,图像变换模块120可以指定参照系的单个轴,并且仅相对于该单个轴的运动传感器数据被用于确定移动设备100的倾斜并变换该倾斜的图像。
[0050] 在实施方式中,图像变换模块120提供用户界面上的控制元件以使得用户能够控制图像变换。基于通过控制元件应用的所接收的用户输入,图像被相应地旋转和缩放。在另一个实施方式中,图像变换模块120可以基于运动传感器数据变换图像,并且提供控制元件以使得用户能够控制变换。例如,图像变换模块120可以首先基于运动传感器数据变换图像,并且此后基于通过用户界面应用的用户输入来变换图像,或者反之亦然。
[0051] 显示器125可以基于任何种类的技术,诸如液晶显示器(LCD)、有机发光二极管(OLED)、电子纸等。在一个实施方式中,显示器125是使得用户输入能够经由显示器接收的触摸屏显示器。
[0052] 处理设备130可操作地耦接至照相机105、运动传感器115和显示器125,并且结合图像捕捉模块110和图像变换模块120操作以进行在本公开中的描述的各种技术。术语“处理设备”在本文中广义地使用并且可以包括一个或多个处理器、微处理器、微控制器等。有关示例处理设备的额外的细节在图11中描述。
[0053] 应当理解,一个或多个功能部件可以结合至单个部件。例如,图像捕捉模块110和图像变换模块120可结合成单个模块。在有些情况下,图像捕捉模块110和图像变换模块120可以在制造的时候完全地或部分地体现在移动设备100上的软件和/或硬件中。在有些情况下,例如图像捕捉模块110和图像变换模块120可以完全地或部分地体现在可下载至移动设备100的软件程序中(例如,移动应用)。此外,在有些情况下,图像捕捉模块110和图像变换模块120可以与使得图像能够在线共享的社交网络系统结合运转或成为该社交网络系统的部分。
[0054] 图2示出根据本公开的实施方式的示例性图像转换模块。图像变换模块120包括倾斜确定模块205,其确定用于校正捕捉图像的倾斜的旋转角。因为由移动设备100上的照相机105捕捉的图像将反映在捕捉图像时(例如,在用户拍摄图片时)的移动设备100的倾斜,移动设备100的倾斜可以用于确定利用倾斜的移动设备100捕捉的图像的倾斜。倾斜确定模块205基于在捕捉图像的时刻或该时刻附近的移动设备100的运动传感器数据确定校正移动设备100的倾斜所必需的旋转角。在所示的实施方式中,倾斜确定模块205包括取样器、滤波器215、运动传感器数据存储库220、定时模块225以及角度确定模块230。
[0055] 取样器210被配置为取样由运动传感器115(例如,陀螺仪)产生的运动传感器数据。例如,取样器210可以以预先确定的取样速率取样运动传感器数据,诸如每秒30个样本。应当理解,可以实现其他取样速率。
[0056] 滤波器215被配置为接收并过滤从取样器210取样的运动传感器数据。例如,在实施方式中,滤波器215可以是过滤掉高频噪声的低通滤波器以产生更清晰的信号。例如,在一个实施方式中,可以实现卡尔曼滤波器。平均技术或其它平滑算法可以实现为使数据信号平滑并且使得数据信号更稳定-例如,减少运动传感器数据中的噪声。
[0057] 运动传感器数据存储库220被配置为接收并存储来自取样器210和滤波器215的运动传感器数据。运动传感器数据存储库220可以包括可存储运动传感器数据的例如一个或多个易失性存储器(例如,RAM、SRAM等)和非易失性存储器(例如,NVRAM或闪速存储器、硬盘驱动器等)以便稍后的检索。在有些情况下,运动传感器数据存储库220可以在更临时的形式的存储器中维护,诸如数据缓冲器。例如,数据缓冲器可被配置为保持一定量的运动传感器数据,并且在移动设备100进入图像捕捉模式时,取样器210开始取样运动传感器数据,然后该运动传感器数据可以由滤波器215过滤并由数据缓冲器220接收。
[0058] 角度确定模块230被配置为接收来自运动传感器数据存储库220的运动传感器数据并确定移动设备100的倾斜,进而可以确定校正在移动设备100倾斜时捕捉的图像所必需的旋转角。例如,角度确定模块230可以接收来自运动传感器数据存储库220的运动传感器数据并且基于运动传感器数据计算捕捉图像时移动设备100的倾斜,提供旋转角以校正倾斜图像。
[0059] 定时模块225被用于确定合适的运动传感器数据,在此基础上计算倾斜。例如,定时模块225可以用于确定用于计算倾斜的一组运动传感器数据。在实施方式中,定时模块225识别移动设备100何时进入图像捕捉模式(例如,激活照片捕捉用户界面以便用户拍摄图片)以及何时捕捉图像(例如,用户拍摄图片)。在此情况下,例如,角度确定模块230将角度基于从进入图像捕捉模式的时刻直至图像捕捉的时刻取样并过滤的整组运动传感器数据。在实施方式中,角度确定模块230可以将角度基于其他时段或其他事件的出现。
[0060] 在实施方式中,取样器210可以在定时模块225指示已经进入图像捕捉模式时开始取样运动传感器数据。在实施方式中,取样器210可能已经在取样运动传感器数据,并且定时模块225将该组运动传感器数据的第一个样本识别为对应于进入图像捕捉模式的时刻的样本。
[0061] 在实施方式中,取样器210可以在定时模块225指示已经捕捉图像时停止取样运动传感器数据。在实施方式中,其中取样器210在已经捕捉图像之后继续取样,定时模块225可以识别该组的最后的样本-例如,对应于捕捉图像的时刻的样本。
[0062] 在另一个实施方式中,定时模块225可以识别合适的运动传感器数据以用于使角度确定基于在图像捕捉之前(即,接近图像捕捉的时刻)的预先确定的时段或数量的样本。角度确定模块230使用预先确定的时段内的对应的运动传感器数据组以计算倾斜并且确定旋转角以校正倾斜图像。例如,在用户捕捉图像时,从捕捉的时刻的最后的30个样本可以用于角度确定。相似地,例如,从图像捕捉的时刻起最后的2秒的取样运动传感器数据可以用于角度确定。应当理解,预先确定的时间和样本的数量是示例性的并且不旨在限制。在其他实施方式中,可以实施其他预先确定的时间和样本。还应当理解单个样本也可以用于计算旋转角-例如,对应于捕捉图像的时刻的单个样本。此外,应当理解,在其他实施方式中,可以实现确定旋转角计算的运动传感器数据的特定组的其他方法。
[0063] 旋转模块235、缩放模块240和成模块250结合运转以便在显示捕捉和变换的图像的用户界面的查看框内旋转和缩放图像。旋转模块235基于由角度确定模块230确定的旋转角旋转捕捉图像。例如,旋转模块235可以使用旋转角创建旋转变换(例如,以矩阵的形式)以便操作系统用于相应地旋转图像。
[0064] 缩放模块240可以基于为校正捕捉图像的倾斜所确定的旋转角缩放图像。缩放模块240可以基于由成帧模块245显示的查看框的尺寸确定缩放因数。例如,可以缩放图像以避免在旋转图像时查看框内产生空白空间。在一个实施方式中,缩放模块240将旋转图像缩放了移去查看框中的空白所必需的最小量。在实施方式中,成帧模块245可以基于旋转角修改查看框的大小。例如,如果放大图像以移去查看框中的空的空白将致使图像不清楚(例如,如果图像具有低分辨率),那么成帧模块245收缩查看框以移去否则在旋转图像时会产生的空的空白。
[0065] 在所示的实施方式中,图像变换模块120还包括用户控制的旋转模块250。用户控制的旋转模块250提供使得用户能够控制图像的旋转的用户界面。以这种方法,例如用户可以通过相应地手动旋转图像来校正倾斜图像。
[0066] 在实施方式中,用户控制的旋转模块250提供使得用户能够根据多于一个粒度级别控制图像的旋转的用户界面。例如,用户界面可以包括:第一控制元件,使能在第一粒度下的用户控制的图像旋转,以及第二控制元件,使能在第二粒度下的用户控制的图像旋转。第二粒度可以例如以比第一粒度更慢的速度旋转图像以使得用户能够更准确的旋转。在实施方式中,第一控制元件和第二控制元件同时显示为可以相对于基准位置移动的转盘以分别顺时针或逆时针旋转图像。基于接收的用户对于第一控制元件和第二控制元件德输入,用户控制的旋转模块250分别基于第一粒度和第二粒度在由成帧模块245提供的查看框内旋转图像。
[0067] 虽然在示出的实施方式包括倾斜确定模块205和用户控制的旋转模块250两者,但应当理解,在其他实施方式中,可以在没有另一个的情况下,或是实现倾斜确定模块205或是实现用户控制的旋转模块20。
[0068] 图3示出根据本公开的实施方式的用于基于运动传感器数据变换图像的示例过程。在过程300的框305,获得由移动设备捕捉的图像。例如,在实施方式中,图像可以使用照相机和移动设备上的图像捕捉程序捕捉。例如,在图2中示出的图像捕捉模块110可以为用户呈现利用移动设备100上的照相机105拍摄图片的用户界面。
[0069] 在框310,获得移动设备在捕捉的时刻或该时刻附近的运动传感器数据。例如,在实施方式中,图像变换模块120获取基于捕捉图像的时刻期间的移动设备100的倾斜的运动传感器数据。例如,在用户进入移动设备100上的图像捕捉模式时,取样器210开始从移动设备100上实现的陀螺仪或其他运动传感器取样运动传感器数据。然后取样的运动传感器数据可以例如由滤波器215过滤并由运动传感器数据存储库220存储。在实施方式中,运动传感器数据被取样、过滤并存储,直至用户拍摄图片。取样、过滤或存储的运动传感器数据量以及取样、过滤或存储运动传感器数据所经的时段可以以各种方式确定。
[0070] 在框315,基于运动传感器数据计算旋转角。例如,在实施方式中,在图2中示出的角度确定模块230确定旋转角以校正图像的倾斜。角度确定模块230从运动传感器数据存储库220接收运动传感器数据并确定移动设备的倾斜。倾斜可以确定旋转图像的旋转角以校正在捕捉图像时移动设备100的倾斜。
[0071] 在一个实施方式中,在变换图像之前,将旋转角与预先确定阈值相比较。预先确定的阈值例如可以代表在图像的倾斜被假定为由用户想要的情况下-例如,美学上地或相反故意地倾斜所处的阈值。如果校正倾斜图像的旋转角超过预先确定的阈值,那么不旋转图像来校正倾斜。例如,阈值可以是45度,或者任何其他预先确定的阈值。在有些情况下,预先确定的阈值可以由维护图像的社交网络系统、上传或将查看图像的用户或者两者选择。在有些情况下,提供至用户的信息指示校正超过阈值的倾斜所必需的图像旋转。在有些情况下,请求用户确认或验证以确定是否应当与大于阈值的旋转角无关地进行图像变换。
[0072] 在框320,图像基于计算的旋转角变换。例如,图2的旋转模块235产生旋转变换以将捕捉图像旋转了由角度确定模块230计算的旋转角。在实施方式中,捕捉图像还基于旋转角缩放。例如,图2的缩放模块240确定缩放所捕捉的图像以填满用户界面上显示的查看框所必需的缩放因数。
[0073] 在框325,显示经变换的图像。例如,图2的成帧模块可以结合旋转模块、缩放模块和图像捕捉程序操作以将经变换的图像在移动设备的显示器上呈现的用户界面的查看框内渲染。在有些情况下,捕捉图像显示在查看框中随后由变换图像替代。
[0074] 在实施方式中,用户可以将变换图像保存或以其他方式存储至移动设备100上的存储器中或者将变换图像传送至远程服务器以便存储在社交网络系统内。在有些情况下,捕捉图像可以保存在移动设备100上和/或传送至远程设备。在有些情况下,运动传感器数据和/或最终计算的用于校正倾斜图像的旋转角可以与捕捉图像一起保存-例如,作为与图像数据一起包括的元数据。
[0075] 在一个实施方式中,例如图像的变换在与获取该图像(例如,利用照相机105捕捉图像并且利用运动传感器115提供运动传感器数据)的同一移动设备100上进行。例如,移动设备100的用户可以使用移动设备100(例如,智能电话)拍摄图片,并且移动设备100可以基于在捕捉图像时移动设备100的运动传感器数据计算校正任何倾斜所必需的旋转角。
[0076] 在另一个实施方式中,除捕捉图像的移动设备100以外的设备可以获取所捕捉的图像和运动传感器数据,然后进行倾斜校正。例如,台式计算机或其他远程设备(例如,服务器)可以与移动设备100有线或无线通信并且从捕捉图像的移动设备100接收所捕捉的图像和运动传感器数据。台式计算机或其他远程设备然后可以基于运动传感器数据计算旋转角并变换图像。在有些情况下,台式计算机或其他远程设备可以经由互联网或者从诸如闪速存储器、CD-ROM等的便携式存储设备接收所捕捉的图像和运动传感器数据。在有些情况下,运动传感器数据可以与(例如,元数据内的)图像数据一起存储在图像文件中并存储在设备上(例如,捕捉图像的移动设备100或其他远程设备)。
[0077] 图4A和图4B示出根据本公开的实施方式的分别显示变换之前和之后的图像的示例用户界面。用户界面400示出为显示在移动设备的显示器405上。用户界面400包括用于显示捕捉和变换的图像的查看框410。用户界面400还包括控制元件415,该控制元件使得用户能够对发起或以其他方式激活图像变换进行控制,如在这里描述的。还可以显示一个或多个额外的控制元件420,如所示的,以允许或使得用户能够对捕捉图像进行一个或多个变换。示例额外的控制元件420可以进行各种变换,诸如剪切图像、锐化图像、修改图像的对比度等。在其他实施方式中,还可以实现任何种类的额外的变换。
[0078] 包括房子的捕捉图像425显示在查看框410中。捕捉图像425是在移动设备100倾斜时拍摄的,并且描绘的房子的图像在查看框410内相应地示出为倾斜的。移动设备100的纵轴440示出为虚线。轴线430代表在图像捕捉的时候的垂直基准轴。
[0079] 捕捉图像425在查看框410中显示为捕捉图像的边界435A与查看框410对齐。应当理解,在其他实施方式中,边界435A可以大于或小于查看框410。因为房子的捕捉图像425是在移动设备倾斜时拍摄的,所以捕捉图像425在查看框410内示出为倾斜显示的。如所示的,角度A代表捕捉图像倾斜的角度,并且相应地校正倾斜所必需的旋转角(即,逆时针旋转角度A)。
[0080] 图4B示出将捕捉图像425绕中心点C逆时针旋转了角度A之后的捕捉图像。边界435A代表将捕捉图像旋转角度A之后的捕捉图像425的边界。因为已经将捕捉图像425旋转,所以捕捉图像的边界435A不再与查看框410对齐,从而产生了查看框410内的没有图像内容的空白445。因为已经将捕捉图像425旋转角度A,所以现在垂直基准轴430与移动设备100的纵轴440对齐,校正了查看框410内的捕捉图像425。
[0081] 在实施方式中,除旋转捕捉图像425之外,捕捉图像425变换还包括缩放捕捉图像425。以这种方法,例如捕捉图像425可以被适当地缩放以增加边界的大小以便填满空白
445。图4C示出在已经将捕捉图像425逆时针旋转角度A并且缩放以填满由捕捉图像425的旋转而产生的空白445之后的捕捉图像425。边界435C代表增加以适合边界内的整个查框410使得查看框410中没有空白445之后的边界435A。缩放可以与捕捉图像的旋转同时进行,或可以顺次进行。
[0082] 图5A和图5B示出根据本公开的实施方式的使得用户能够控制捕捉图像的变换的示例用户界面。图5A示出在显示捕捉图像之前的示例用户界面,图5B示出在变换捕捉图像之后的示例用户界面。
[0083] 用户界面500示出为显示在移动设备的显示器505上。用户界面500包括用于显示所捕捉的图像或经变换的图像或者显示两者的查看框510。用户界面500还包括向用户提供对捕捉图像的变换进行控制的变换控制元件560、575A、575B、580A、580B和580C。网格550显示在查看框510中以为用户提供垂直基准和水平基准。
[0084] 在图5A中,捕捉图像525显示在查看框510中。用户可以使用变换控制元件560、575A、580A、580B和580C控制捕捉图像525的变换。例如,在实施方式中,用户界面500可以显示在触摸屏显示器上,具有触摸激活的或者其他另外触摸控制的变换控制元件560、575A、
575B、580A、580B和580C。
[0085] 变换控制元件560为用户提供对捕捉图像525的变换进行控制。变换控制元件560包括:第一控制元件565,向用户提供以第一粒度对旋转捕捉图像进行控制;以及第二控制元件570,向用户提供以第二粒度对旋转捕捉图像进行控制。例如,具有精细粒度的控制元件向用户提供对捕捉图像525的旋转进行更精细地调整的控制。在所示的实施方式中,捕捉图像绕查看框510的中心点C旋转。此外,在实施方式中,捕捉图像被另外缩放以避免在查看框内的没有图像内容的空白。
[0086] 与具有更大的粒度的第二控制元件移动的距离相比,用户滑动或以其他方式移动具有更精细的粒度的第一控制元件的相同或相似距离或度数可能与更小度数的旋转相关。例如,在所示的实施方式中,控制元件565和570体现为可以由用户沿着弧形从默认位置顺时针或逆时针移动的转盘(例如,经由触摸转盘并将其顺时针或逆时针滑动),其中控制元件570具有比控制元件565更精细的粒度。默认位置是转盘垂直的情况下的弧形的中心,并且对应于捕捉图像未被旋转的初始位置。随着用户在顺时针方向上移动控制元件565或570时,捕捉图像525以相应的粒度顺时针旋转。相似地,如果用户在逆时针方向上移动控制元件565或570时,那么捕捉图像525以相应的粒度逆时针旋转。以这种方法,与控制元件565沿着对应的弧形移动相似的度数相比,控制元件570沿着对应的弧形从默认位置移动一定数量的度数,使得捕捉图像旋转更小的度数。例如,控制元件565从默认位置移动90度可以使捕捉图像旋转45度,而控制元件570从默认位置移动90度可以使捕捉图像旋转15度。应当理解,这些值是示例性的并且不应当被解释为限制。此外,在另一个实施方式中,控制元件565可被设为与控制元件570相比具有更精细的粒度控制。
[0087] 用户界面500还包括变换控制元件575A和575B,该变换控制元件体现为显示在显示器505上的用户控制的按钮。在用户点击或以其他方式激活控制元件575A和575B时,则捕捉图像相应地顺时针或者逆时针旋转。例如,点击控制元件575A可以使捕捉图像逆时针旋转预定数量的度数,并且点击或以其他方式激活控制元件575B可以使捕捉图像顺时针旋转预定的度数。
[0088] 用户界面500还包括向用户提供对控制元件565的粒度进行控制的变换控制元件580A、580B和580C。例如,在用户选择580A时,控制元件565横跨转盘的完全移动(例如,90度)使得捕捉图像旋转45度。相似地,在用户选择580B时,控制元件565横跨转盘的完全移动(例如,90度)使得捕捉图像旋转35度。相似地,在用户选择580C时,控制元件565横跨转盘的完全移动(例如,90度)使得捕捉图像在相应的方向上旋转15度。在实施方式中,除控制元件
565的总体粒度之外,还可以利用选择控制元件580A、580B和580C分别改变控制元件570的总体粒度。例如,在为控制元件565而设置的示例中,控制元件570的粒度对于控制元件
580A、580B和580C可以分别是15度、10度和5度。应当理解,这些值是示例性的并且不应当被解释为限制。在其他实施方式中也可以实现其他值。
[0089] 图5B示出在捕捉图像525已基于应用于控制元件565和570的用户输入旋转和缩放之后的捕捉图像525。例如,用户可以首先使用控制元件565使捕捉图像旋转至大约水平位置(例如,没有倾斜),并且此后使用具有更精细的粒度控制元件570以更好的精确度使倾斜的图像水平。应当理解,这个使用顺序是示例性的,而且在有些情况下,用户可以以与示例中提供的不同的顺序使用控制元件565和570。此外,在某些情况下,用户可以仅使用控制元件565和570中的一个使倾斜图片水平。
[0090] 在另一个实施方式中,控制元件560可以包括除弧形类型运动之外的另一个类型的用户运动或输入。例如,在实施方式中,控制元件的运动可以是线性的。图6A示出根据一个实施方式的作为线性的示例控制元件。控制元件665A和670A示出为在默认位置并且可以由用户线性移动至右边或左边以使得捕捉图像能够顺时针或逆时针旋转。控制元件670A,例如可以按照比控制元件665A更精细的粒度旋转捕捉图像。
[0091] 在又一个实施方式中,控制元件可以基于诸如单次点击的用户控制的参数或提供其他输入的控制元件实现。例如,图6B示出以可以由用户点击的按钮的形式的示例控制元件665B和670B。点击控制元件665B、670B可以使得捕捉图像旋转一定量。控制元件670B可以具有与控制元件665B相比与更小度数的旋转相关的更精细粒度控制。例如,单次点击控制元件665B会引起5度的倾斜,并且单次点击控制元件670B会引起2度的倾斜。在某些情况下,用户可以使控制元件保持在按下的状态以连续旋转捕捉图像。在此情况下,与更大粒度的控制元件相比,更精细粒度的控制元件以更低的速度(例如,每秒旋转的度数)旋转捕捉图像。
[0092] 图7示出根据本公开的实施方式的用于变换图像的示例过程。在过程700的框705,诸如在图5A、图5B、图6A和图6B中描述的那些的用户界面显示在移动设备的显示器上。在框710,捕捉图像显示在用户界面的查看框中。在框715,接收应用于第一控制元件的用户输入使得用户能够根据第一粒度变换捕捉图像。在框720,基于与第一控制元件相关联的用户输入变换捕捉图像,并且当变换时相应地显示在查看框中。例如,利用在图5A和图5B中示出的实施方式,当基于用户输入在第一粒度下旋转时,捕捉图像的旋转可以显示在查看框510中。
[0093] 在框725,接收应用于第二控制元件的用户输入。除第一控制元件之外,第二控制元件也显示在用户界面上。第二控制元件使得用户能够根据第二粒度(其不同于第一控制元件的粒度)变换捕捉图像。在框730,基于接收的对于第二控制元件的用户输入来变换所捕捉的图像,并且当变换时相应地显示在查看框中。例如,利用在图5A和图5B中示出的实施方式,当基于用户输入在第二粒度下旋转时,捕捉图像的旋转可以显示在查看框510中。
[0094] 在框735,一旦完成变换(例如,用户通过按压对应的按钮指示变换完成),则变换图像被最终定稿-例如,保存或另外存储至设备的存储器中或者经由互联网传送至远程服务器以便存储在社交网络系统内。在有些情况下,捕捉图像可以保存在设备上并传送至远程设备。
[0095] 应当理解,图3和图7中描述的过程可以结合进行。例如,在实施方式中,提供用户界面500并且在根据图3中的过程300变换所捕捉的图像之后进行过程700。以这种方法,用户可以选择进行自动图像变换以校正倾斜,并且此后呈现用户界面500以使得能够进一步手动的,用户控制的变换。在实施方式中,在从过程300得到的变换图像与用户界面500一起显示在显示器上时,控制元件565和570可以放置在默认位置(例如,垂直方位)。在另一个实施方式中,从过程300得到的变换图像与用户界面500一起显示在显示器上,控制元件565和570可以定位为反映捕捉图像的倾斜角度。以这种方法,用户可以通过将控制元件565和570移动至默认位置将图像返回至其变换前的状态。
[0096] 在以上所示的实施方式中,捕捉图像绕查看框510的中心C旋转。在其他实施方式中,捕捉图像可以绕旋转点(其不是查看框的中心)旋转。图8示出根据本公开的实施方式的将捕捉图像绕用户选择的旋转点变换的示例过程。图9A示出根据本公开的实施方式的显示在进行图8中的过程之前的图像的示例用户界面。图9B示出根据本公开的实施方式的显示根据图8的过程变换的图像的图9A的示例用户界面。图8、图9A和图9B在这里一起描述。
[0097] 在过程800的框805,用户界面902显示在设备(例如,移动设备)的显示器905上,并且捕捉图像显示在用户界面902的查看框910中。在图9A中示出的捕捉图像,房子920被示为偏离查看框910的中心C。
[0098] 在框810,接收针对旋转点的用户选择的用户输入。例如,用户可以触摸查看框910中的点P以确定旋转点,如由图9A和图9B中的圈起的参考标号1表现的。在实施方式中,旋转点可以在用户界面上指出-例如,作为点或其他参考。
[0099] 在框815,接收针对指示旋转粒度的用户输入。例如,在实施方式中,旋转粒度通过用户将他的手指滑动远离用户定义的旋转点P至粒度选择点来定义,如图9A和图9B中的圈起的参考标号2表现的。旋转粒度基于手指远离旋转点滑动的距离来计算。例如,在一个实施方式中,与距旋转点更小的距离的粒度选择点产生的粒度相比,距旋转点更大距离的粒度选择点产生更精细的粒度。在又一个实施方式中,与距旋转点更小的距离产生的粒度相比,距旋转点的更大的距离产生较不精细的粒度。随着用户将他的手指滑动远离旋转点,线925可以实时显示从旋转点至用户的手指的位置。
[0100] 在框820,接收用于指示旋转方向和旋转度数的用户输入。例如,在一个实施方式中,旋转方向通过用户相对于旋转点顺时针或逆时针滑动他的手指来定义,如由图9B中的圈起的参考标号3表现的。方向可以由手指滑动的顺时针或逆时针方向来定义-例如,顺时针则顺时针旋转捕捉图像,逆时针则逆时针旋转捕捉图像。此外,旋转的度数可以由手指滑动至顺时针方向或逆时针方向的距离来定义。
[0101] 在框825,捕捉图像基于指出的粒度和旋转方向绕旋转点旋转。如在图9B中所示的,用户的手指已逆时针滑动至由圈起的参考标号3表现的点,直至图像被旋转至描绘的方位。
[0102] 在实施方式中,捕捉图像随着用户的手指的滑动而在显示器上旋转。在所示的实施方式中,线925被显示为从旋转点至粒度选择点,并且随着用户将他的手指在逆时针方向上滑动至圈起的参考标号3,在旋转至描绘的位置时,线的长度保持固定。
[0103] 在实施方式中,在选择旋转点、粒度选择点和旋转的方向和度数的同时需要用户持续保持他的手指在显示器上。如果,例如,用户将他的手指抬起离开显示器,那么用户必须重复这个信息的选择。
[0104] 在一个实施方式中,所捕捉的图像在进行旋转的同时被缩放以消除旋转图像和查看框之间的任何空白,如在这里更详细地论述的。
[0105] 社交网络系统-示例实现方式
[0106] 图10是根据本公开的实施方式的用于变换图像的示例系统1000的网络图。系统1000包括一个或多个用户设备1010、一个或多个外部系统1020、社交网络系统1030以及网络1050。在实施方式中,结合上面描述的实施方式讨论的社交网络系统可以实现为社交网络系统1030。为了说明的目的,由图10显示的系统1000的实施方式包括单个外部系统1020和单个用户设备1010。然而,在其他实施方式中,系统1000可以包括更多的用户设备1010和/或更多的外部系统1020。在某些实施方式中,社交网络系统1030由社交网络运营商操作,而外部系统1020与社交网络系统1030分开,这是因为这些系统可以由不同的实体操作。
然而,在各种实施方式中,社交网络系统1030和外部系统1020结合操作,以将社交网络服务提供给社交网络系统1030的用户(或成员)。在这个意义上,社交网络系统1030提供平台或骨干,其他系统(例如,外部系统1020)可以使用该平台或骨干来通过互联网将社交网络服务和功能提供给用户。用户设备1010包括一个或多个计算设备,其可以从用户接收输入并且通过网络1050发送和接收数据。在一个实施方式中,用户设备1010是传统的计算机系统,例如,执行Microsoft Windows兼容操作系统(OS)、Apple OS X和/或Linux分布。在另一个实施方式中,用户设备1010可以是具有计算机功能的设备,例如,智能电话、平板电脑、个人数字助理(PDA)、移动电话等。用户设备1010被配置为通过网络1050进行通信。用户设备
1010可以执行应用,例如,允许用户设备1010的用户与社交网络系统1030交互的浏览器应用。在另一个实施方式中,用户设备1010通过由用户设备1010的本地操作系统(例如,iOS和ANDROID)提供的应用编程接口(API)与社交网络系统1030交互。用户设备1010被配置为使用有线和/或无线通信系统通过可以包括局域网和/或广域网的任何组合的网络1050,与外部系统1020和社交网络系统1030通信。
[0107] 在一个实施方式中,网络1050使用标准的通信技术和协议。因此,网络1050可以包括使用以太网、702.11、全球微波接入互操作性(WiMAX)、3G、4G、CDMA、GSM、LTE、数字用户线路(DSL)等技术的链路。类似地,网络1050上使用的联网协议可包括多协议标签交换(MPLS)、传输控制协议/互联网协议(TCP/IP)、用户数据报协议(UDP)、超文本传递协议(HTTP)、简易邮件传递协议(SMTP)和文件传递协议(FTP)等。可以使用包括超文本标记语言(HTML)和可扩展标记语言(XML)的技术和/或格式表示通过网络1050交换的数据。此外,可以使用诸如安全套接层(SSL)、传递层安全(TLS)以及互联网协议安全(IPsec)等传统的加密技术来将所有或一些链路加密。
[0108] 在一个实施方式中,通过使用浏览器应用1012,处理从外部系统1020以及从社交网络系统1030接收的标记语言文档1014,用户设备1010可以显示来自外部系统1020和/或来自社交网络系统1030的内容。标记语言文档1014识别内容和描述该内容的格式或呈现的一个或多个指令。通过执行包含在标记语言文档1014内的指令,浏览器应用1012使用由标记语言文档1014描述的格式或呈现来显示所识别的内容。例如,标记语言文档1014包括指令,用于产生和显示具有多个帧的网页,这些帧包括从外部系统1020和社交网络系统1030中检索的文本和/或图像数据。在各种实施方式中,标记语言文档1014包括数据文件,其包括可延伸标记语言(XML)数据、可扩展超文本标记语言(XHTML)数据或其他标记语言数据。此外,标记语言文档1014可以包括JavaScript对象表示法(JSON)数据、具有填充的JSON(JSONP)以及JavaScript数据,以便于在外部系统1020与用户设备1010之间的数据交换。在用户设备1010上的浏览器应用1012可以使用JavaScript编译器来将标记语言文档1014解码。
[0109] 标记语言文档1014还可以包括或者链接至应用或应用框架,例如,FLASHTM或UnityTM应用程序、SilverLightTM应用程序框架等。
[0110] 在一个实施方式中,用户设备1010还包括一个或多个小程序1016,其包括表示用户设备1010的用户是否登录到社交网络系统1030的数据,该小程序能够实现修改从社交网络系统1030传送给用户设备1010的数据。
[0111] 外部系统1020包括一个或多个网络服务器,其包括使用网络1050传送给用户设备1010的一个或多个网页1022a、1022b。外部系统1020与社交网络系统1030分开。例如,外部系统1020与第一域相关联,而社交网络系统1030与单独的社交网络域相关联。包含在外部系统1020内的网页1022a、1022b包括标记语言文档1014,其识别内容并且包括规定所识别的内容的格式或呈现的指令。
[0112] 在实施方式中,移动设备100可以实现为用户设备1010。例如,用户设备1010可以是包括图像捕捉模块1054和图像变换模块1052的移动设备。在实施方式中,图像捕捉模块1054和图像变换模块1052可以分别实现为图像捕捉模块110和图像变换模块120。用户设备
1010还可以包括未示出的其他部件,诸如运动传感器、照相机、显示器以及处理装置。用户设备1010可以执行在这里论述的图像变换。
[0113] 社交网络系统1030包括用于社交网络的一个或多个计算设备,其中,社交网络包括多个用户并且为社交网络的用户提供与社交网络的其他用户通信并交互的能力。在某些情况下,社交网络可以由图谱表示,即,包括边线和节点的数据结构。其他数据结构也可以用于表示社交网络,包括但不限于数据库、对象、类别、meta元素、文件或任何其他数据结构。社交网络系统1030可以由操作员监管、管理或控制。社交网络系统1030的操作员可以是人类、自动化应用或用于管理内容、调节政策以及在社交网络系统1030内收集使用度量的一系列应用。可以使用任何类型的操作员。
[0114] 用户可以加入社交网络系统1030然后添加与他们希望连接的任意数量的社交网络系统1030的其他用户的连接。如此处使用的,术语“好友”指社交网络系统1030中用户经由社交网络系统1030与其形成连接、关联、或者关系的任何其他用户。例如,在实施方式中,如果社交网络系统1030中的用户表示为社交图谱中的节点,那么术语“好友”可以指两个用户节点之间形成并直接连接这两个用户节点的边线。
[0115] 用户可明确添加连接或者社交网络系统1030可基于用户的共同特征(例如,是同一所教育机构的校友的用户)自动创建连接。例如,第一用户特别选择特定的其他用户作为好友。社交网络系统1030中的连接通常是双向的,但不必如此,因此,术语“用户”和“好友”取决于参照系。社交网络系统1030的用户之间的连接通常是双边的(“双向的”),或者“相互的”,但连接同样可以是单边的,或者“单向的”。例如,如果Bob和Joe是社交网络系统1030的两个用户并且连接至彼此,那么Bob和Joe是彼此的连接。另一方面,如果Bob希望连接至Joe以观看由Joe传送至社交网络系统1030的数据,但是Joe不希望形成相互连接,所以可以建立单边连接。用户之间的连接可以是直接连接;然而,社交网络系统1030的一些实施方式允许通过一个或多个连接等级或分离程度的间接的连接。
[0116] 除了建立和保持用户之间的连接并且允许用户之间进行交互之外,社交网络系统1030向用户提供对社交网络系统1030支持的各类项进行动作的能力。这些项目可以包括:
社交网络系统1030的用户可以属于的群或网(即,人、实体和概念的社交网)、用户可能感兴趣的事件或日历条目、用户可以经由社交网络系统1030使用的基于计算机的应用、允许用户经由社交网络系统1030提供的服务或者通过社交网络系统1030购买或出售物品的交易、以及用户可以在社交网络系统1030上或者在社交网络系统1030外进行的与广告的交互。这些仅是用户可进行动作的社交网络系统1030的项目的几个实例,并且许多其他实例也是可能的。用户可以与能够在社交网络系统1030内或者在外部系统1020内表示的、与社交网络系统1030分开的或者通过网络1050与社交网络系统1030耦接的任何事物交互。
[0117] 社交网络系统1030还能够链接各种实体。例如,社交网络系统1030能够允许用户通过API、网络服务或其他通信信道彼此以及与外部系统1020或其他实体交互。社交网络系统1030生成和维护“社交图谱”,社交图谱包括由多个边线互连的多个节点。在社交图谱内的每个节点可以表示可以作用于另一个节点和/或可以由另一个节点作用的实体。社交图谱可以包括各种类型的节点。节点的类型的实例包括用户、非人类实体、内容项目、网页、组群、活动、消息、概念、以及可以由社交网络系统1030中的对象表示的任何其他事情。在社交图谱中的两个节点之间的边线可以表示在这两个节点之间的特定类型的连接或关联性,这可以因节点关系或者因由一个节点在另一个节点上进行的活动而产生。在某些情况下,在节点之间的边线可以加权。边线的权重可以表示与边线相关联的属性,例如,在节点之间的连接或关联性的强度。不同类型边线可以具有不同的权重。例如,可以给在一个用户“点赞”另一个用户时创建的边线提供一个权重,同时可以给在用户与另一个用户交好友时创建的边线提供一个不同的权重。
[0118] 举例来说,当第一用户将第二用户识别为好友时,社交图谱中生成将表示第一用户的节点与表示第二用户的第二节点连接的边线。由于各种节点彼此相关或交互,所以社交网络系统1030修改连接各种节点的边线以反映关系和互动。
[0119] 社交网络系统1030还包括增强用户与社交网络系统1030之间交互的用户生成内容。用户生成的内容可以包括用户可以增加、上传、发送或“发布”到社交网络系统1030中的任何事物。例如,用户将帖子从用户设备1010传送至社交网络系统1030。帖子可以包括数据(例如,状态更新或其他文本数据)、位置信息、图像(例如,照片)、视频、链接、音乐或其他相似的数据和/或媒体。第三方也可以将内容添加至社交网络系统1030。内容“项目”表示为社交网络系统1030中的对象。以这种方法,鼓励社交网络系统1030的用户通过各种通信渠道发布文本和各种类型的媒体的内容项目,来彼此通信。这种通信增加了用户彼此的交互,并且增加了用户与社交网络系统1030交互的频率
[0120] 社交网络系统1030包括网络服务器1032、API请求服务器1034、用户简档存储器1036、连接存储器1038、动作记录器1040、活动日志1042、授权服务器1044、和图像引入模块
1046。在本发明的实施方式中,社交网络系统1030可以包括各种应用的额外的、更少的、或不同的部件。为了不使该系统的细节模糊,未示出诸如网络接口、安全机构、负载平衡器、故障转移服务器、管理和网络操作控制台等的其他部件。
[0121] 用户简档存储器1036维护关于用户账户的信息,包括传记、人口或其他类型的描述信息,例如,用户声明的或者社交网络系统1030推断的工作经历、教育背景、爱好或偏好、位置等。将该信息储存在用户简档存储器1036内,以便唯一地识别每个用户。社交网络系统1030还在连接存储器1038中储存描述在不同的用户之间的一个或多个连接的数据。连接信息可以指示具有相似的或共同的工作经历、团体成员、爱好或教育背景的用户。此外,社交网络系统1030包括在不同的用户之间的用户定义连接,允许用户规定他们与其他用户的关系。例如,用户定义连接允许用户生成平行于用户的现实生活关系的与诸如好友、同事、伙伴等其他用户的关系。用户可从预定的连接类型中选择,或者根据需要定义他们自己的连接类型。与社交网络系统1030中诸如非个人实体、储存区(bucket)、集群中心(cluster centers)、图像、兴趣、页面、外部系统、概念等的其他节点的连接也可存储在连接存储器
1038中。
[0122] 社交网络系统1030维护关于用户可以与之交互的对象的数据。为了维持该数据,用户简档存储器1036和连接存储器1038存储通过社交网络系统1030维持的对应类型对象的实例。每种对象类型均具有适合于存储适于该对象类型的信息的信息字段。例如,用户简档储存器1036包括具有适合于描述用户的账户和与用户的账户相关的信息的字段的数据结构。在创建特定类型的新对象时,社交网络系统1030初始化对应类型的新数据结构,将唯一对象标识符分配给该数据结构,并且根据需要,开始将数据添加至对象。这种情况可能发生在,例如,用户变成社交网络系统1030的用户时,社交网络系统1030在用户简档存储器1036中生成用户简档的新事例时、将唯一标识符分配给用户账户时、以及开始使用用户提供的信息来填充用户账户的字段时。
[0123] 连接存储器1038包括适合于描述用户到其他用户的连接、到外部系统1020的连接、或者到其他实体的连接的数据结构。连接存储器1038还可以使连接类型与用户的连接相关联,用户的连接可以与用户的隐私设置一起用于管制对关于该用户的信息的访问权。在本发明的实施方式中,用户简档存储器1036和连接存储器1038可以实现为联合数据库。
[0124] 存储在连接存储器1038、用户简档存储器1036、以及活动日志1042中的数据能够使社交网络系统1030生成这样一种社交图谱,即,使用节点来识别各种对象并且使用连接节点的边线来识别不同对象之间的关系。例如,如果在社交网络系统1030中第一用户与第二用户创建连接,则来自用户简档存储器1036中的第一用户和第二用户的用户账户可用作社交图谱中的节点。连接存储器1038储存的第一用户与第二用户之间的连接是在与第一用户和第二用户相关联的节点之间的边线。继续这个实例,然后,第二用户可以在社交网络系统1030内给第一用户发送消息。发送消息(可被存储)的动作是社交图谱中表示第一用户与第二用户的两个节点之间的另一边线。此外,消息本身可被识别并且包括在社交图谱中作为连接到表示第一用户和第二用户的节点的另一节点。
[0125] 在另一实例中,第一用户可在由社交网络系统1030维护的图像中(或者,可替换地,在由社交网络系统1030外部的另一系统维护的图像中)给第二用户加标签。图像本身可表示为社交网络系统1030中的节点。该加标签动作可在第一用户与第二用户之间创建边线并且在各个用户与图像之间创建边线,该图像也是社交图谱中的节点。在又一实例中,如果用户确认参加某事件,则用户和该事件是从用户简档存储器1036中获得的节点,其中,对该事件的参加是可从活动日志1042中检索到的节点之间的边线。通过生成并维护社交图谱,社交网络系统1030包括描述多种不同类型的对象以及这些对象之间的交互和连接的数据,从而提供社交相关信息的丰富来源。
[0126] 网络服务器1032经由网络1050将社交网络系统1030链接至一个或者多个用户设备1010和/或一个或者多个外部系统1020。网络服务器1032为网页以及网页相关的其他内容(例如,Java、JavaScript、Flash、XML等)服务。网络服务器1032可包括用于接收和在社交网络系统1030与一个或者多个用户设备1010之间路由消息的邮件服务器或者其他消息功能。该消息可以是即时消息、队列消息(例如,电子邮件)、文本和SMS消息或者任何其他合适的消息格式。
[0127] API请求服务器1034允许一个或者多个外部系统1020和用户设备1010通过调用一个或者多个API功能来访问来自社交网络系统1030中的信息。API请求服务器1034还可以允许外部系统1020通过调用API来将信息发送至社交网络系统1030。在一个实施方式中,外部系统1020通过网络1050将API请求发送至社交网络系统1030,并且API请求服务器1034接收API请求。API请求服务器1034通过调用与API请求相关联的API来处理该请求,以生成适当的响应,API请求服务器1034通过网络1050将该响应传送至外部系统1020。例如,API请求服务器1034响应于API请求来收集与用户相关联的数据,诸如已经登录到外部系统1020中的用户连接,并且将收集的数据传送至外部系统1020。在另一实施方式中,用户设备110以与外部系统1020相同的方式通过API与社交网络系统1030进行通信。
[0128] 动作记录器1040能够从网络服务器1032接收有关用户在社交网络系统1030上和/或社交网络系统1030外的动作的通信。动作记录器1040利用有关用户动作的信息填充活动日志1042,从而能够使社交网络系统1030发现其用户在社交网络系统1030中和在社交网络系统1030之外所采取的各种动作。特定用户对社交网络系统1030中另一节点采取的任何动作可以通过在活动日志1042中或者相似数据库中或者其他数据存储库中维护的信息而与每个用户的账户相关联。所识别并且储存的用户在社交网络系统1030内采取的行动的实例可以包括例如增加与另一个用户的连接,将消息发送给另一个用户,从另一个用户读取消息,查看与另一个用户相关联的内容,参加另一个用户发布的事件,发布图像,尝试发布图像,或者与另一个用户或另一个对象交互的其他动作。当用户在社交网络系统1030内采取动作时,该动作被记录在活动日志1042中。在一个实施方式中,社交网络系统1030将活动日志1042维护为条目的数据库。当在社交网络系统1030内采取动作时,将有关该动作的条目添加至活动日志1042。活动日志1042可以被称为动作日志。
[0129] 此外,用户动作可与社交网络系统1030之外的实体内发生的概念和动作相关联,诸如独立于社交网络系统1030的外部系统1020。例如,活动记录器1040可以从网络服务器1032接收描述用户与外部系统1020的交互的数据。在该实例中,外部系统1020根据社交图谱中的结构化的动作和对象报告用户的交互。
[0130] 用户与外部系统1020交互的动作的其他实例包括:用户表明对外部系统1020或另一个实体有兴趣,用户发布论述外部系统1020或外部系统1020以内的网页1022a的评论至社交网络系统1030,用户发布与外部系统1020相关联的统一资源定位符(URL)或其他标识符至社交网络系统1030,或者由用户进行的与外部系统1020相关的任何其他动作。因此,活动日志1042可包括描述社交网络系统1030的用户与独立于社交网络系统1030的外部系统1020之间的交互的动作。
[0131] 授权服务器1044强制执行社交网络系统1030中用户的一个或多个隐私设置。用户的隐私设置确定如何分享与用户相关的特定信息。隐私设置包括与用户相关联的特定信息的规范以及可以分享信息的一个实体或多个实体的规范。可与其分享信息的实体的实例可包括其他用户、应用、外部系统1020、或者可潜在访问该信息的任何实体。用户可以分享的信息包括用户账户信息,例如,简档照片、与用户相关联的电话号码、用户的连接、用户采取的动作(例如,添加连接)、改变用户简档信息等。可以不同的粒度级别提供隐私设置规范。例如,隐私设置可以确定与其他用户分享的特定信息;隐私设置确定工作电话号码或相关信息的具体设置,如,包括简档照片、住宅电话号码、和身份的个人信息。可替换地,隐私设置可以适用于与用户相关联的所有信息。还可以通过各种粒度等级规定可以访问特定信息的这组实体的规范。可以分享信息的各种组的实体可以包括(例如)用户的所有好友、好友的所有好友、所有应用或者所有外部系统1020。一个实施方式允许这组实体的规范包括实体的列表。例如,用户可提供允许访问特定信息的外部系统1020的列表。另一实施方式允许该规范包括一组实体,以及不允许访问该信息的例外。例如,用户可允许所有外部系统1020访问用户的工作信息,但是规定不允许访问该工作信息外部系统1020的列表。某些实施方式将不被允许访问某些信息的例外的列表称为“黑名单”。阻止属于由用户规定的黑名单的外部系统1020访问在隐私设置中规定的信息。信息的规范的粒度、和分享信息的实体的规范的粒度的各种组合是可能的。例如,所有的个人信息可以与好友分享,而所有工作信息可以与好友的好友分享。
[0132] 授权服务器1044包括逻辑以确定用户的好友、外部系统1020、和/或其他应用和实体是否能够访问与用户相关联的某些信息。外部系统1020需要授权服务器1044的授权以访问用户的更多私人的和敏感的信息,如的用户的工作电话号码。授权服务器1044基于用户的隐私设置来确定是否允许另一用户、外部系统1020、应用、或另一实体访问与该用户相关联的信息,包括有关用户采取的动作的信息。
[0133] 社交网络系统1030可以包括图像模块1046。图像模块1046可以与用户设备1010通信以将一个或多个图像从用户设备上传至社交网络系统1030。例如,图像模块1046可以接收由用户设备1010捕捉并变换的变换图像。此外,图像模块1046可以实现图像变换模块1052的功能。在实施方式中,本文中描述的图像变换技术可以由图像模块1046和图像变换模块1052的合适的组合进行。例如,基于运动传感器数据以及如在这里论述的由移动设备
100提供的其他信息,对于倾斜图像的旋转角的计算可以由图像模块1046、图像变换模块
1052或者两者进行。
[0134] 上述过程和特征可以通过多种机器和计算机系统架构并且在多种网络和计算环境中实现。图11示出了根据本发明的实施方式的可用于实现在本文中描述的一个或多个实施方式的计算机系统1100的实例。例如,计算机系统1100可以表示在图10中示出的用户设备1010和/或移动设备100。
[0135] 计算机系统1100包括使得计算机系统1100执行本文中讨论的过程和特征的一系列指令。计算机系统1100可以连接(例如,联网)至其他机器。在网络部署中,计算机系统1100可运行在服务器-客户端网络环境中的服务器机器或客户端机器的能力范围内,或作为对等机器运行在对等(或分布式)网络环境中。在本发明的实施方式中,计算机系统1100可以是社交网络系统1030、用户设备1010、以及外部系统1020、或者其部件。在本发明的实施方式中,计算机系统1100可以是在构成所有或一部分社交网络系统1030的多个服务器中的一个服务器。
[0136] 计算机系统1100包括处理器1102、缓存1104以及一个或多个可执行的模块和驱动器,其储存在计算机可读介质上,针对在本文中描述的过程和特征。此外,计算机系统1100包括高性能输入/输出(I/O)总线1106和标准I/O总线1108。主桥1110使处理器1102与高性能I/O总线1106耦接,而I/O总线桥1112使这两个总线1106和1108彼此耦接。系统存储器1114和一个或多个网络接口1116耦接至高性能I/O总线1106。计算机系统1100可进一步包括视频存储器和耦接至视频存储器(未示出)的显示设备。大容量存储器1118和I/O端口
1120耦接到标准I/O总线1108。计算机系统1100可以可选地包括键盘和点控设备、显示设备、或耦接至标准I/O总线1108的其他输入/输出设备(未显示)。总之,这些元件旨在表示计算机硬件系统的广义分类,其中包括但不限于基于由加利福尼亚圣克拉拉因特尔公司制造的x86-兼容处理器和基于由加利福尼亚森尼韦尔超微半导体(AMD)公司制造的兼容处理器的计算机系统以及任何其他合适的处理器。
[0137] 操作系统管理和控制计算机系统1100的操作,包括至软件应用的数据的输入和来自软件应用的数据的输出(未示出)。操作系统提供在系统上执行的软件应用与系统的硬件部件之间的接口。可以使用任何合适的操作系统,诸如,LINUX操作系统、从加利福尼亚库比蒂诺(Cupertino)苹果电脑公司可商购的Apple Macintosh操作系统、UNIX操作系统、操作系统、BSD操作系统等。可能存在其它实施方式。
[0138] 下面将更为详细地描述计算机系统1100的元件。具体地,网络接口1116提供计算机系统1100和任何大范围网络之间的通信,如以太网(例如,IEEE 802.3)网络、底板(backplane)等。大容量存储器1118提供执行以上确定的各个计算系统实现的上述过程和特征的数据和编程指令的永久存储器,而系统存储器1114(例如,DRAM)提供当由处理器1102执行时的数据和编程指令的临时存储器。I/O端口1120可以是提供可以耦接至计算机系统1100的另外的外围设备之间的通信的一个或多个串行和/或并行通信端口。
[0139] 计算机系统1100可以包括各种系统架构,并且可以重新布置计算机系统1100的各种部件。例如,缓存1104可以与处理器1102一起在芯片上。可替换地,缓存1104和处理器1102可以包装在一起作为“处理器模块”,处理器1102称为“处理器核”。此外,本发明的某些实施方式可既不需要也不包括所有以上部件。例如,耦接至标准I/O总线1108的外围设备可耦接至高性能I/O总线1106。此外,在一些实施方式中,可以仅存在单个总线,计算机系统
1100的部件耦接至单个总线。而且,计算机系统1100可包括诸如额外处理器、存储设备、存储器的额外的部件。
[0140] 通常,本文中描述的过程和特征可以实现为操作系统或具体应用程序的部分、部件、程序、对象、模块、或称为“程序”的一系列指令。例如,一个或多个程序可以用于执行本文中描述的具体过程。通常,程序包括计算机系统1100中的各个存储器和存储设备中的一个或者多个指令,该一个或者多个指令在由一个或者多个处理器读取或者执行时,使得计算机系统1100进行操作以执行此处所描述的过程和特征。本文中描述的过程和特征可以在软件、固件、硬件(例如,应用型专用集成电路)、或者其任何组合中实现。
[0141] 在一种实施方式中,此处所描述的过程和特征被计算机系统1100实现为独自或者共同地在分布式计算环境中运行的一系列可执行模块。前述模块可以由硬件、储存在计算机可读介质(或机器可读介质)上的可执行模块或这两者的组合来实现。例如,模块可以包括由在硬件系统内的处理器(例如,处理器1102)执行的多个或一系列指令。最初,该系列指令可被存储在存储设备上,诸如,大容量存储器1118。然而,该系列指令可被存储在任何合适的计算机可读存储介质上。而且,该系列指令不需要存储在网络的服务器本机上并且可经由网络接口1216从远程存储设备接收。指令从诸如大容量存储器1118等存储设备被复制到系统存储器1114,然后被处理器1102访问和执行。
[0142] 计算机可读介质的实例包括,但不限于,可记录的类型的介质,诸如易失性的和非易失性的存储设备;固态存储器;软盘和其他可换磁盘;硬盘驱动器;磁性介质;光盘(例如,光盘只读存储器(CD ROMS)、数字多用途磁盘(DVD));其他相似的非易失性(或暂时的)、有形的(或非有形的)存储介质;或者适合于存储、编码或携带由计算机执行的以进行本文中描述的过程和特征中一个或多个中的任意一个的一系列指令的任何类型的介质。
[0143] 为说明的目的,阐述了许多具体的细节,以提供对描述的全面的理解。然而,对本领域技术人员显而易见的是,在没有这些具体细节的情况下可以实现本公开的实施方式。在有些情况下,以框图形式示出了模块、结构、过程、特征、以及设备,以避免使本说明书变得不清楚。在其他情况下,示出功能框图和流程图以表现数据和逻辑流程。框图和流程图的部件(例如,模块、块、结构、装置、特征等)可以以除本文中明确描述和描绘的以外的方式不同地结合、分开、移去、重新排序、和替换。
[0144] 在这个说明书中参考“一个实施方式”、“实施方式”、“其他实施方式”、“一系列实施方式”等意味着与实施方式有关地描述的特定特征、设计、结构、或特性包括在本公开的至少一个实施方式中。在说明书中不同的地方出现的例如短语“在一个实施方式中”或“在实施方式中”未必都指同一个实施方式,也不是指与其他实施方式互相排除的分开的或可替代的实施方式。此外,而且,无论是否明确引用“实施方式”等,都描述了各种特征,这些特征可以不同地组合并且包含在一些实施方式中,但是还可以在其他实施方式中不同地省略。相似地,描述的各个特征可以是一些实施方式而不是其他实施方式的偏好或要求。
[0145] 本文中所使用的语言主要出于可读性和指导的目的而选择,并且选择其不是为了划定或限制发明主题。因此,并不旨在使本发明的范围受详细描述限制,而是受基于此的申请所发布的任何权利要求的限制。因此,本发明的实施方式的公开的目的在于说明性,而不是对随后权利要求书中阐述的本发明的范围进行限制。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈