CN105637850B - 用于变换图像的系统和方法 - Google Patents
用于变换图像的系统和方法 Download PDFInfo
- Publication number
- CN105637850B CN105637850B CN201380079982.1A CN201380079982A CN105637850B CN 105637850 B CN105637850 B CN 105637850B CN 201380079982 A CN201380079982 A CN 201380079982A CN 105637850 B CN105637850 B CN 105637850B
- Authority
- CN
- China
- Prior art keywords
- image
- user
- mobile device
- rotation
- motion sensor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 230000033001 locomotion Effects 0.000 claims abstract description 133
- 230000009466 transformation Effects 0.000 claims abstract description 63
- 230000006855 networking Effects 0.000 claims description 105
- 238000003860 storage Methods 0.000 claims description 23
- 238000004891 communication Methods 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 4
- 235000019580 granularity Nutrition 0.000 abstract 1
- 230000008569 process Effects 0.000 description 25
- 238000012937 correction Methods 0.000 description 14
- 230000000694 effects Effects 0.000 description 13
- 238000005070 sampling Methods 0.000 description 10
- 230000003993 interaction Effects 0.000 description 9
- 238000013475 authorization Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000009432 framing Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000001133 acceleration Effects 0.000 description 5
- 238000001914 filtration Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000003384 imaging method Methods 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 241001269238 Data Species 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000005469 granulation Methods 0.000 description 3
- 230000003179 granulation Effects 0.000 description 3
- 238000010295 mobile communication Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000001228 spectrum Methods 0.000 description 2
- 230000001131 transforming effect Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000002146 bilateral effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/64—Computer-aided capture of images, e.g. transfer from script file into camera, check of taken image quality, advice or proposal for image composition or decision on when to take image
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/60—Rotation of whole images or parts thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/017—Gesture based interaction, e.g. based on a set of recognized hand gestures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/60—Rotation of whole images or parts thereof
- G06T3/606—Rotation of whole images or parts thereof by memory addressing or mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/20—Image enhancement or restoration using local operators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/70—Denoising; Smoothing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
- G06T7/73—Determining position or orientation of objects or cameras using feature-based methods
- G06T7/74—Determining position or orientation of objects or cameras using feature-based methods involving reference images or patches
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/63—Control of cameras or camera modules by using electronic viewfinders
- H04N23/631—Graphical user interfaces [GUI] specially adapted for controlling image capture or setting capture parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/63—Control of cameras or camera modules by using electronic viewfinders
- H04N23/633—Control of cameras or camera modules by using electronic viewfinders for displaying additional information relating to control or operation of the camera
- H04N23/635—Region indicators; Field of view indicators
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/80—Camera processing pipelines; Components thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- General Engineering & Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- User Interface Of Digital Computer (AREA)
- Studio Devices (AREA)
- Image Processing (AREA)
- Measuring And Recording Apparatus For Diagnosis (AREA)
- Transforming Electric Information Into Light Information (AREA)
- Gyroscopes (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
获得利用移动设备捕捉的图像的系统、方法和计算机可读介质。获得捕捉图像的时刻或该时刻附近的移动设备的运动传感器数据。旋转角基于运动传感器数据计算,并且图像基于旋转角变换。在另一方面中,用户界面使得用户能够控制图像变换。用户界面使得用户能够以两个以上的粒度控制图像在显示器上旋转。旋转点可以是用户定义的。经旋转的图像可以缩放至适合用于显示经变换的图像的查看框。
Description
技术领域
本发明涉及通常在图像处理领域的计算机实现的方法和系统以及计算机可读介质。
背景技术
现在,人们具有可以用来拍摄图片的多种选择。除专门用于获取胶片或数字形式的图像的传统的照相机之外,诸如智能手机的许多移动设备也能够拍摄图片。例如,移动设备可以包括照相机和使得用户能够利用移动设备上的照相机拍摄图片的图像捕捉软件。这些图像可以存储至移动设备并随后查看。此外,一些互联网社交网络使得用户能够在线共享照片。这些照片共享社交网络的会员可以利用他们的移动设备拍摄图片并将图片上传至照片共享社交网络以便让其他人看到。
图像在被捕捉到之后可以修改。例如,移动设备或支持社交网络的系统可以提供滤镜或其他类型的编辑工具以允许手动改动图像。有时,使用这些编辑工具,图像的拥有者可以选择修改图像以提供美学改善。在其他情况下,编辑工具可以允许图像的拥有者修改图像的被认为不希望的其他方面。
发明内容
本发明具体地提供用于变换图像以解决倾斜的技术。在本公开的各个方面中,提供获得利用移动设备来捕捉图像的系统、方法和计算机可读介质。图像优选地由内置于移动设备中的照相机捕捉。没有任何限制,移动设备尤其是移动通信设备,优选地,电子移动通信设备,例如移动电话,尤其是智能电话或用于无线通信的任何其他手持移动通信设备。
还获得在捕捉图像的时刻或该时刻附近的移动设备的运动传感器数据。为了该目的,移动设备可以包括监测移动设备的运动和方位并输出对应的运动传感器数据的至少一个运动传感器。运动传感器可以例如测量加速力和/或旋转力或速度。在实施方式中,运动传感器数据的获取包括从陀螺仪中取样数据。取样数据可以通过低通滤波器过滤以减少噪声。在实施方式中,运动传感器数据的获取包括从移动设备上的加速计中取样数据。
旋转角基于运动传感器数据计算,并且图像基于旋转角变换。
在实施方式中,图像的变换包括基于计算的旋转角旋转图像。图像的变换还可以包括或者可替换地基于移动设备的用户界面的查看框的尺寸缩放图像。
在实施方式中,变换的图像显示在移动设备上。
在实施方式中,确定旋转角由移动设备执行。
在实施方式中,图像的变换由移动设备执行。
在实施方式中,提供允许用户选择图像的自动变换的用户输入元件,并且接收对于图像的自动变换的选择。图像的变换响应于接收的选择。
在实施方式中,在图像被变换之前,获取的图像显示在移动设备的显示器上。在变换之后,经变换的图像图像代替所获取的图像显示在显示器上。
在实施方式中,将旋转角与预先确定阈值角度相比较。在旋转角不超过预先确定的阈值角度时,显示变换图像。
在实施方式中,显示的用户界面包括第一控制元件,其使能在第一粒度下的用户控制的变换图像的旋转。接收应用于第一控制元件的第一用户输入,并且基于第一用户输入在第一粒度下旋转经变换的图像。
在实施方式中,显示在用户界面中的使能在第二粒度下的用户控制的变换图像的旋转的第二控制元件。接收应用于第二控制元件的第二用户输入,并且基于第二用户输入以第二粒度旋转经变换的图像。
在实施方式中,第一控制元件和第二控制元件在第一方向上从基准位置的运动在第一旋转方向上旋转图像,并且第一控制元件和第二控制元件在第二方向上从基准位置的运动在第二旋转方向上旋转图像。
在实施方式中,用户界面使得用户能够定义旋转点,变换图像绕该旋转点旋转。接收应用于用户界面的定义旋转点的第一用户输入。接收应用于用户界面的定义旋转方向和粒度的第二用户输入。经变换的图像根据基于第一用户输入和第二用户输入的旋转方向和粒度绕旋转点旋转。
在实施方式中,图像的变换由社交网络系统执行。
从附图和以下详细描述中,本发明的许多其他特征和实施方式将变得显而易见。
附图说明
图1示出根据本公开的实施方式的示例移动设备。
图2示出根据本公开的实施方式的在图1中示出的示例图像变换模块。
图3示出根据本公开的实施方式的用于基于运动传感器数据来变换图像的示例过程。
图4A示出根据本公开的实施方式的显示变换之前的图像的示例用户界面。
图4B示出根据本公开的实施方式的在图像旋转之后的图4A中示出的示例用户界面。
图4C示出根据本公开的实施方式的在图像缩放并旋转之后的图4A中示出的示例用户界面。
图5A示出根据本公开的实施方式提供用户对变换图像的控制的示例用户界面。
图5B示出根据本公开的实施方式的在图像变换之后在图5A中示出的示例用户界面。
图6A示出根据本公开的实施方式的示例控制元件。
图6B示出根据本公开的实施方式的示例控制元件。
图7示出根据本公开的实施方式的用于变换图像的示例过程。
图8示出根据本公开的实施方式的将图像绕用户定义的旋转点变换的示例过程。
图9A示出根据本公开的实施方式的显示在进行图8中的过程之前的图像的示例用户界面。
图9B示出根据本公开的实施方式的显示根据图8的过程变换的图像的图9A的示例用户界面。
图10是根据本公开的实施方式的用于变换图像的示例系统的网络图。
图11示出了根据本发明的实施方式的可用于实现在本文中描述的一个或多个实施方式的计算机系统的实例。
描述本发明的各种实施方式的附图仅为了说明的目的,其中附图使用相同参考数字确定相同元件。本领域技术人员通过下面的讨论可以容易认识到在不偏离在此所述的本发明的原理的情况下可以采用在附图中说明的结构和方法的替换实施方式。
具体实施方式
图像变换
通过照相机(包括内置于移动设备中的照相机)捕捉的图像可能会有某些缺点。缺点会反映图像捕捉过程中的不规律性和其他因素。例如,在照相机在图像捕捉的时刻期间倾斜时,得到的捕捉图像会反映照相机的倾斜。在个人以不符合图像对准期望的方式控制照相机位置时会出现倾斜。倾斜图像是美学上不希望有的或者不忠实于图像中描绘的内容的真实性。
照相机可以布置在移动设备内。在实施方式中,移动设备的倾斜可基于移动设备的轴与基准轴的偏差。在移动设备的纵轴(或横轴)没有与垂直基准轴或水平基准轴对准(即,并行)时,可以认为移动设备是倾斜的。图像捕捉期间倾斜的移动设备会使得捕捉图像在显示在移动设备的查看框内时看起来是倾斜的。
应当理解,虽然移动设备的倾斜在本公开中可以描述为基于移动设备的纵轴与垂直基准轴的偏差,但移动设备的倾斜还可以基于移动设备的横轴与垂直基准轴的偏差。例如,在移动设备的横轴(或纵轴)没有与垂直基准轴或水平基准轴对准(即,并行)时,可以认为移动设备是倾斜的。
为了解决上述缺点,本公开的系统、方法和计算机可读介质的各种实施方式可以涉及使用移动设备的能力矫正出现的倾斜图像。移动设备可以包括监测移动设备的运动和方位的运动传感器。运动传感器可以例如测量沿着x-轴、y-轴和z-轴的加速力和旋转力。示例运动传感器可以包括例如陀螺仪和加速计。从一个或多个运动传感器产生的运动传感器数据可以用于确定移动设备相对于基准轴的倾斜(或者倾度)。
可以获得利用移动设备捕捉的图像,以及反映在捕捉图像的时刻或时刻附近的移动设备位置的移动设备的运动传感器数据。然后可以基于运动传感器数据计算对于校正倾斜图像所必需的旋转角,并且可以基于旋转角变换图像。
例如,移动设备可以包括照相机和使得用户能够利用移动设备上的照相机拍摄图片的图像捕捉软件。如果用户在保持移动设备倾斜时拍摄图片,那么捕捉的图像在显示在移动设备上的查看框内时将会是相应地倾斜的。本公开的实施方式使得用户能够变换(例如,旋转)图像以使图像变直或者另外校正移动设备和得到的图像的倾斜。以这种方法,例如可以在将捕捉的图像存储在移动设备上或者将其上传至远程设备(诸如使用户能够在线存储并共享照片的社交网络系统的远程服务器)之前,使图像变直。在一个实施方式中,图像捕捉软件可以是社交网络系统的移动应用的一部分,用户可以将其下载至移动设备以使得用户能够捕捉图像并将它们在线发布至社交网络系统。例如,基于运动传感器的倾斜校正可以被包括为移动应用的一部分,并使得用户能够校正捕捉图像的倾斜。在一个实施方式中,在获得图像之后倾斜校正可以在没有用户确认的情况下自动发生。在另一个实施方式中,倾斜校正在变换图像之前需要用户发起或确认。
图1示出根据本公开的实施方式的示例移动设备。移动设备100被示出为包括照相机105、图像捕捉模块110、运动传感器115、图像变换模块120、显示器125以及处理设备130。应当理解,示出的部件不旨在限制,而且为了避免使本公开的细节不清楚,移动设备100的其他部件没有示出-例如,操作系统、扬声器、麦克风、输入控制元件(例如,触摸屏、键盘、数字键盘等)、通信端口、收发器、存储器等。示例移动设备100可以包括,但不限于,智能电话、平板电脑、笔记本电脑、个人数字助理(PDA)、移动电话等,如结合附图11论述的。
照相机105布置在移动设备100上并且使得用户能够利用移动设备105捕捉图像。照相机105可以例如包括透镜和图像传感器,该图像传感器用于产生代表由照相机105拍摄的图像(例如,图片)的图像数据。例如,图像传感器可以包括,但不限于,电荷耦合器件(CCD)图像传感器或互补金属氧化物半导体(CMOS)传感器,用于捕捉光并将其转变为电信号。可以包括额外的电气电路以将来自图像传感器的电信号转变为代表图像的数字信号。
图像捕捉模块110结合照相机105运行以使得能够捕捉图像。例如,图像捕捉模块110可以控制图像捕捉期间照相机105的操作。图像捕捉模块110还可以例如产生用户界面或取景器以允许用户使用移动设备100上的照相机105拍摄图片。
运动传感器115布置在移动设备100上并且提供移动设备100的运动传感器数据。术语“运动传感器数据”在本文中广义地使用并且通常涉及有关移动、位置、方位、速度等的数据。运动传感器115可以包括加速计、陀螺仪或者可以产生运动传感器数据的任何其他类型的工具或资源。例如,运动传感器115可以基于加速力(例如,来自加速计),沿着三个轴的旋转力(例如,来自陀螺仪),加速力和旋转力的组合等。应当理解,运动传感器115不旨在限于单个运动传感器,而是可以包括多于一个运动传感器(例如,加速计和陀螺仪)。
图像变换模块120通过旋转所捕捉的图像来变换该捕捉图像,并且在有些情况下,加之缩放该图像。在一个实施方式中,变换基于从运动传感器115得来的运动传感器数据。在获得捕捉图像以及移动设备100在捕捉图像的时刻或该时刻附近的移动设备100的运动传感器数据之后,图像变换模块120确定旋转该捕捉图像以对于校正捕捉图像时移动设备100的倾斜所必需的旋转角。例如,图像变换模块120可以使用移动设备100的操作系统的应用编程接口(API)接收并处理运动传感器数据。例如,移动设备100的操作系统的构架可以使能应用(诸如实现本公开的倾斜校正的实施方式的应用)以便接收来自设备硬件的运动传感器数据并处理那些数据。
在实施方式中,图像变换模块120可以指定参照系,然后可以通过运动传感器115将移动设备的方位或运动与那个参照系相比较。运动传感器数据可以在不同的实施方式中改变形式-例如,向量、原始加速度值、相对于一个或多个基准轴的角度值等。移动设备100的倾斜可以基于运动传感器数据来确定并且用于计算校正倾斜图像所必需的旋转角。在实施方式中,图像变换模块120可以指定参照系的单个轴,并且仅相对于该单个轴的运动传感器数据被用于确定移动设备100的倾斜并变换该倾斜的图像。
在实施方式中,图像变换模块120提供用户界面上的控制元件以使得用户能够控制图像变换。基于通过控制元件应用的所接收的用户输入,图像被相应地旋转和缩放。在另一个实施方式中,图像变换模块120可以基于运动传感器数据变换图像,并且提供控制元件以使得用户能够控制变换。例如,图像变换模块120可以首先基于运动传感器数据变换图像,并且此后基于通过用户界面应用的用户输入来变换图像,或者反之亦然。
显示器125可以基于任何种类的技术,诸如液晶显示器(LCD)、有机发光二极管(OLED)、电子纸等。在一个实施方式中,显示器125是使得用户输入能够经由显示器接收的触摸屏显示器。
处理设备130可操作地耦接至照相机105、运动传感器115和显示器125,并且结合图像捕捉模块110和图像变换模块120操作以进行在本公开中的描述的各种技术。术语“处理设备”在本文中广义地使用并且可以包括一个或多个处理器、微处理器、微控制器等。有关示例处理设备的额外的细节在图11中描述。
应当理解,一个或多个功能部件可以结合至单个部件。例如,图像捕捉模块110和图像变换模块120可结合成单个模块。在有些情况下,图像捕捉模块110和图像变换模块120可以在制造的时候完全地或部分地体现在移动设备100上的软件和/或硬件中。在有些情况下,例如图像捕捉模块110和图像变换模块120可以完全地或部分地体现在可下载至移动设备100的软件程序中(例如,移动应用)。此外,在有些情况下,图像捕捉模块110和图像变换模块120可以与使得图像能够在线共享的社交网络系统结合运转或成为该社交网络系统的部分。
图2示出根据本公开的实施方式的示例性图像转换模块。图像变换模块120包括倾斜确定模块205,其确定用于校正捕捉图像的倾斜的旋转角。因为由移动设备100上的照相机105捕捉的图像将反映在捕捉图像时(例如,在用户拍摄图片时)的移动设备100的倾斜,移动设备100的倾斜可以用于确定利用倾斜的移动设备100捕捉的图像的倾斜。倾斜确定模块205基于在捕捉图像的时刻或该时刻附近的移动设备100的运动传感器数据确定校正移动设备100的倾斜所必需的旋转角。在所示的实施方式中,倾斜确定模块205包括取样器、滤波器215、运动传感器数据存储库220、定时模块225以及角度确定模块230。
取样器210被配置为取样由运动传感器115(例如,陀螺仪)产生的运动传感器数据。例如,取样器210可以以预先确定的取样速率取样运动传感器数据,诸如每秒30个样本。应当理解,可以实现其他取样速率。
滤波器215被配置为接收并过滤从取样器210取样的运动传感器数据。例如,在实施方式中,滤波器215可以是过滤掉高频噪声的低通滤波器以产生更清晰的信号。例如,在一个实施方式中,可以实现卡尔曼滤波器。平均技术或其它平滑算法可以实现为使数据信号平滑并且使得数据信号更稳定-例如,减少运动传感器数据中的噪声。
运动传感器数据存储库220被配置为接收并存储来自取样器210和滤波器215的运动传感器数据。运动传感器数据存储库220可以包括可存储运动传感器数据的例如一个或多个易失性存储器(例如,RAM、SRAM等)和非易失性存储器(例如,NVRAM或闪速存储器、硬盘驱动器等)以便稍后的检索。在有些情况下,运动传感器数据存储库220可以在更临时的形式的存储器中维护,诸如数据缓冲器。例如,数据缓冲器可被配置为保持一定量的运动传感器数据,并且在移动设备100进入图像捕捉模式时,取样器210开始取样运动传感器数据,然后该运动传感器数据可以由滤波器215过滤并由数据缓冲器220接收。
角度确定模块230被配置为接收来自运动传感器数据存储库220的运动传感器数据并确定移动设备100的倾斜,进而可以确定校正在移动设备100倾斜时捕捉的图像所必需的旋转角。例如,角度确定模块230可以接收来自运动传感器数据存储库220的运动传感器数据并且基于运动传感器数据计算捕捉图像时移动设备100的倾斜,提供旋转角以校正倾斜图像。
定时模块225被用于确定合适的运动传感器数据,在此基础上计算倾斜。例如,定时模块225可以用于确定用于计算倾斜的一组运动传感器数据。在实施方式中,定时模块225识别移动设备100何时进入图像捕捉模式(例如,激活照片捕捉用户界面以便用户拍摄图片)以及何时捕捉图像(例如,用户拍摄图片)。在此情况下,例如,角度确定模块230将角度基于从进入图像捕捉模式的时刻直至图像捕捉的时刻取样并过滤的整组运动传感器数据。在实施方式中,角度确定模块230可以将角度基于其他时段或其他事件的出现。
在实施方式中,取样器210可以在定时模块225指示已经进入图像捕捉模式时开始取样运动传感器数据。在实施方式中,取样器210可能已经在取样运动传感器数据,并且定时模块225将该组运动传感器数据的第一个样本识别为对应于进入图像捕捉模式的时刻的样本。
在实施方式中,取样器210可以在定时模块225指示已经捕捉图像时停止取样运动传感器数据。在实施方式中,其中取样器210在已经捕捉图像之后继续取样,定时模块225可以识别该组的最后的样本-例如,对应于捕捉图像的时刻的样本。
在另一个实施方式中,定时模块225可以识别合适的运动传感器数据以用于使角度确定基于在图像捕捉之前(即,接近图像捕捉的时刻)的预先确定的时段或数量的样本。角度确定模块230使用预先确定的时段内的对应的运动传感器数据组以计算倾斜并且确定旋转角以校正倾斜图像。例如,在用户捕捉图像时,从捕捉的时刻的最后的30个样本可以用于角度确定。相似地,例如,从图像捕捉的时刻起最后的2秒的取样运动传感器数据可以用于角度确定。应当理解,预先确定的时间和样本的数量是示例性的并且不旨在限制。在其他实施方式中,可以实施其他预先确定的时间和样本。还应当理解单个样本也可以用于计算旋转角-例如,对应于捕捉图像的时刻的单个样本。此外,应当理解,在其他实施方式中,可以实现确定旋转角计算的运动传感器数据的特定组的其他方法。
旋转模块235、缩放模块240和成帧模块250结合运转以便在显示捕捉和变换的图像的用户界面的查看框内旋转和缩放图像。旋转模块235基于由角度确定模块230确定的旋转角旋转捕捉图像。例如,旋转模块235可以使用旋转角创建旋转变换(例如,以矩阵的形式)以便操作系统用于相应地旋转图像。
缩放模块240可以基于为校正捕捉图像的倾斜所确定的旋转角缩放图像。缩放模块240可以基于由成帧模块245显示的查看框的尺寸确定缩放因数。例如,可以缩放图像以避免在旋转图像时查看框内产生空白空间。在一个实施方式中,缩放模块240将旋转图像缩放了移去查看框中的空白所必需的最小量。在实施方式中,成帧模块245可以基于旋转角修改查看框的大小。例如,如果放大图像以移去查看框中的空的空白将致使图像不清楚(例如,如果图像具有低分辨率),那么成帧模块245收缩查看框以移去否则在旋转图像时会产生的空的空白。
在所示的实施方式中,图像变换模块120还包括用户控制的旋转模块250。用户控制的旋转模块250提供使得用户能够控制图像的旋转的用户界面。以这种方法,例如用户可以通过相应地手动旋转图像来校正倾斜图像。
在实施方式中,用户控制的旋转模块250提供使得用户能够根据多于一个粒度级别控制图像的旋转的用户界面。例如,用户界面可以包括:第一控制元件,使能在第一粒度下的用户控制的图像旋转,以及第二控制元件,使能在第二粒度下的用户控制的图像旋转。第二粒度可以例如以比第一粒度更慢的速度旋转图像以使得用户能够更准确的旋转。在实施方式中,第一控制元件和第二控制元件同时显示为可以相对于基准位置移动的转盘以分别顺时针或逆时针旋转图像。基于接收的用户对于第一控制元件和第二控制元件德输入,用户控制的旋转模块250分别基于第一粒度和第二粒度在由成帧模块245提供的查看框内旋转图像。
虽然在示出的实施方式包括倾斜确定模块205和用户控制的旋转模块250两者,但应当理解,在其他实施方式中,可以在没有另一个的情况下,或是实现倾斜确定模块205或是实现用户控制的旋转模块20。
图3示出根据本公开的实施方式的用于基于运动传感器数据变换图像的示例过程。在过程300的框305,获得由移动设备捕捉的图像。例如,在实施方式中,图像可以使用照相机和移动设备上的图像捕捉程序捕捉。例如,在图2中示出的图像捕捉模块110可以为用户呈现利用移动设备100上的照相机105拍摄图片的用户界面。
在框310,获得移动设备在捕捉的时刻或该时刻附近的运动传感器数据。例如,在实施方式中,图像变换模块120获取基于捕捉图像的时刻期间的移动设备100的倾斜的运动传感器数据。例如,在用户进入移动设备100上的图像捕捉模式时,取样器210开始从移动设备100上实现的陀螺仪或其他运动传感器取样运动传感器数据。然后取样的运动传感器数据可以例如由滤波器215过滤并由运动传感器数据存储库220存储。在实施方式中,运动传感器数据被取样、过滤并存储,直至用户拍摄图片。取样、过滤或存储的运动传感器数据量以及取样、过滤或存储运动传感器数据所经的时段可以以各种方式确定。
在框315,基于运动传感器数据计算旋转角。例如,在实施方式中,在图2中示出的角度确定模块230确定旋转角以校正图像的倾斜。角度确定模块230从运动传感器数据存储库220接收运动传感器数据并确定移动设备的倾斜。倾斜可以确定旋转图像的旋转角以校正在捕捉图像时移动设备100的倾斜。
在一个实施方式中,在变换图像之前,将旋转角与预先确定阈值相比较。预先确定的阈值例如可以代表在图像的倾斜被假定为由用户想要的情况下-例如,美学上地或相反故意地倾斜所处的阈值。如果校正倾斜图像的旋转角超过预先确定的阈值,那么不旋转图像来校正倾斜。例如,阈值可以是45度,或者任何其他预先确定的阈值。在有些情况下,预先确定的阈值可以由维护图像的社交网络系统、上传或将查看图像的用户或者两者选择。在有些情况下,提供至用户的信息指示校正超过阈值的倾斜所必需的图像旋转。在有些情况下,请求用户确认或验证以确定是否应当与大于阈值的旋转角无关地进行图像变换。
在框320,图像基于计算的旋转角变换。例如,图2的旋转模块235产生旋转变换以将捕捉图像旋转了由角度确定模块230计算的旋转角。在实施方式中,捕捉图像还基于旋转角缩放。例如,图2的缩放模块240确定缩放所捕捉的图像以填满用户界面上显示的查看框所必需的缩放因数。
在框325,显示经变换的图像。例如,图2的成帧模块可以结合旋转模块、缩放模块和图像捕捉程序操作以将经变换的图像在移动设备的显示器上呈现的用户界面的查看框内渲染。在有些情况下,捕捉图像显示在查看框中随后由变换图像替代。
在实施方式中,用户可以将变换图像保存或以其他方式存储至移动设备100上的存储器中或者将变换图像传送至远程服务器以便存储在社交网络系统内。在有些情况下,捕捉图像可以保存在移动设备100上和/或传送至远程设备。在有些情况下,运动传感器数据和/或最终计算的用于校正倾斜图像的旋转角可以与捕捉图像一起保存-例如,作为与图像数据一起包括的元数据。
在一个实施方式中,例如图像的变换在与获取该图像(例如,利用照相机105捕捉图像并且利用运动传感器115提供运动传感器数据)的同一移动设备100上进行。例如,移动设备100的用户可以使用移动设备100(例如,智能电话)拍摄图片,并且移动设备100可以基于在捕捉图像时移动设备100的运动传感器数据计算校正任何倾斜所必需的旋转角。
在另一个实施方式中,除捕捉图像的移动设备100以外的设备可以获取所捕捉的图像和运动传感器数据,然后进行倾斜校正。例如,台式计算机或其他远程设备(例如,服务器)可以与移动设备100有线或无线通信并且从捕捉图像的移动设备100接收所捕捉的图像和运动传感器数据。台式计算机或其他远程设备然后可以基于运动传感器数据计算旋转角并变换图像。在有些情况下,台式计算机或其他远程设备可以经由互联网或者从诸如闪速存储器、CD-ROM等的便携式存储设备接收所捕捉的图像和运动传感器数据。在有些情况下,运动传感器数据可以与(例如,元数据内的)图像数据一起存储在图像文件中并存储在设备上(例如,捕捉图像的移动设备100或其他远程设备)。
图4A和图4B示出根据本公开的实施方式的分别显示变换之前和之后的图像的示例用户界面。用户界面400示出为显示在移动设备的显示器405上。用户界面400包括用于显示捕捉和变换的图像的查看框410。用户界面400还包括控制元件415,该控制元件使得用户能够对发起或以其他方式激活图像变换进行控制,如在这里描述的。还可以显示一个或多个额外的控制元件420,如所示的,以允许或使得用户能够对捕捉图像进行一个或多个变换。示例额外的控制元件420可以进行各种变换,诸如剪切图像、锐化图像、修改图像的对比度等。在其他实施方式中,还可以实现任何种类的额外的变换。
包括房子的捕捉图像425显示在查看框410中。捕捉图像425是在移动设备100倾斜时拍摄的,并且描绘的房子的图像在查看框410内相应地示出为倾斜的。移动设备100的纵轴440示出为虚线。轴线430代表在图像捕捉的时候的垂直基准轴。
捕捉图像425在查看框410中显示为捕捉图像的边界435A与查看框410对齐。应当理解,在其他实施方式中,边界435A可以大于或小于查看框410。因为房子的捕捉图像425是在移动设备倾斜时拍摄的,所以捕捉图像425在查看框410内示出为倾斜显示的。如所示的,角度A代表捕捉图像倾斜的角度,并且相应地校正倾斜所必需的旋转角(即,逆时针旋转角度A)。
图4B示出将捕捉图像425绕中心点C逆时针旋转了角度A之后的捕捉图像。边界435A代表将捕捉图像旋转角度A之后的捕捉图像425的边界。因为已经将捕捉图像425旋转,所以捕捉图像的边界435A不再与查看框410对齐,从而产生了查看框410内的没有图像内容的空白445。因为已经将捕捉图像425旋转角度A,所以现在垂直基准轴430与移动设备100的纵轴440对齐,校正了查看框410内的捕捉图像425。
在实施方式中,除旋转捕捉图像425之外,捕捉图像425变换还包括缩放捕捉图像425。以这种方法,例如捕捉图像425可以被适当地缩放以增加边界的大小以便填满空白445。图4C示出在已经将捕捉图像425逆时针旋转角度A并且缩放以填满由捕捉图像425的旋转而产生的空白445之后的捕捉图像425。边界435C代表增加以适合边界内的整个查框410使得查看框410中没有空白445之后的边界435A。缩放可以与捕捉图像的旋转同时进行,或可以顺次进行。
图5A和图5B示出根据本公开的实施方式的使得用户能够控制捕捉图像的变换的示例用户界面。图5A示出在显示捕捉图像之前的示例用户界面,图5B示出在变换捕捉图像之后的示例用户界面。
用户界面500示出为显示在移动设备的显示器505上。用户界面500包括用于显示所捕捉的图像或经变换的图像或者显示两者的查看框510。用户界面500还包括向用户提供对捕捉图像的变换进行控制的变换控制元件560、575A、575B、580A、580B和580C。网格550显示在查看框510中以为用户提供垂直基准和水平基准。
在图5A中,捕捉图像525显示在查看框510中。用户可以使用变换控制元件560、575A、580A、580B和580C控制捕捉图像525的变换。例如,在实施方式中,用户界面500可以显示在触摸屏显示器上,具有触摸激活的或者其他另外触摸控制的变换控制元件560、575A、575B、580A、580B和580C。
变换控制元件560为用户提供对捕捉图像525的变换进行控制。变换控制元件560包括:第一控制元件565,向用户提供以第一粒度对旋转捕捉图像进行控制;以及第二控制元件570,向用户提供以第二粒度对旋转捕捉图像进行控制。例如,具有精细粒度的控制元件向用户提供对捕捉图像525的旋转进行更精细地调整的控制。在所示的实施方式中,捕捉图像绕查看框510的中心点C旋转。此外,在实施方式中,捕捉图像被另外缩放以避免在查看框内的没有图像内容的空白。
与具有更大的粒度的第二控制元件移动的距离相比,用户滑动或以其他方式移动具有更精细的粒度的第一控制元件的相同或相似距离或度数可能与更小度数的旋转相关。例如,在所示的实施方式中,控制元件565和570体现为可以由用户沿着弧形从默认位置顺时针或逆时针移动的转盘(例如,经由触摸转盘并将其顺时针或逆时针滑动),其中控制元件570具有比控制元件565更精细的粒度。默认位置是转盘垂直的情况下的弧形的中心,并且对应于捕捉图像未被旋转的初始位置。随着用户在顺时针方向上移动控制元件565或570时,捕捉图像525以相应的粒度顺时针旋转。相似地,如果用户在逆时针方向上移动控制元件565或570时,那么捕捉图像525以相应的粒度逆时针旋转。以这种方法,与控制元件565沿着对应的弧形移动相似的度数相比,控制元件570沿着对应的弧形从默认位置移动一定数量的度数,使得捕捉图像旋转更小的度数。例如,控制元件565从默认位置移动90度可以使捕捉图像旋转45度,而控制元件570从默认位置移动90度可以使捕捉图像旋转15度。应当理解,这些值是示例性的并且不应当被解释为限制。此外,在另一个实施方式中,控制元件565可被设为与控制元件570相比具有更精细的粒度控制。
用户界面500还包括变换控制元件575A和575B,该变换控制元件体现为显示在显示器505上的用户控制的按钮。在用户点击或以其他方式激活控制元件575A和575B时,则捕捉图像相应地顺时针或者逆时针旋转。例如,点击控制元件575A可以使捕捉图像逆时针旋转预定数量的度数,并且点击或以其他方式激活控制元件575B可以使捕捉图像顺时针旋转预定的度数。
用户界面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度。应当理解,这些值是示例性的并且不应当被解释为限制。在其他实施方式中也可以实现其他值。
图5B示出在捕捉图像525已基于应用于控制元件565和570的用户输入旋转和缩放之后的捕捉图像525。例如,用户可以首先使用控制元件565使捕捉图像旋转至大约水平位置(例如,没有倾斜),并且此后使用具有更精细的粒度控制元件570以更好的精确度使倾斜的图像水平。应当理解,这个使用顺序是示例性的,而且在有些情况下,用户可以以与示例中提供的不同的顺序使用控制元件565和570。此外,在某些情况下,用户可以仅使用控制元件565和570中的一个使倾斜图片水平。
在另一个实施方式中,控制元件560可以包括除弧形类型运动之外的另一个类型的用户运动或输入。例如,在实施方式中,控制元件的运动可以是线性的。图6A示出根据一个实施方式的作为线性的示例控制元件。控制元件665A和670A示出为在默认位置并且可以由用户线性移动至右边或左边以使得捕捉图像能够顺时针或逆时针旋转。控制元件670A,例如可以按照比控制元件665A更精细的粒度旋转捕捉图像。
在又一个实施方式中,控制元件可以基于诸如单次点击的用户控制的参数或提供其他输入的控制元件实现。例如,图6B示出以可以由用户点击的按钮的形式的示例控制元件665B和670B。点击控制元件665B、670B可以使得捕捉图像旋转一定量。控制元件670B可以具有与控制元件665B相比与更小度数的旋转相关的更精细粒度控制。例如,单次点击控制元件665B会引起5度的倾斜,并且单次点击控制元件670B会引起2度的倾斜。在某些情况下,用户可以使控制元件保持在按下的状态以连续旋转捕捉图像。在此情况下,与更大粒度的控制元件相比,更精细粒度的控制元件以更低的速度(例如,每秒旋转的度数)旋转捕捉图像。
图7示出根据本公开的实施方式的用于变换图像的示例过程。在过程700的框705,诸如在图5A、图5B、图6A和图6B中描述的那些的用户界面显示在移动设备的显示器上。在框710,捕捉图像显示在用户界面的查看框中。在框715,接收应用于第一控制元件的用户输入使得用户能够根据第一粒度变换捕捉图像。在框720,基于与第一控制元件相关联的用户输入变换捕捉图像,并且当变换时相应地显示在查看框中。例如,利用在图5A和图5B中示出的实施方式,当基于用户输入在第一粒度下旋转时,捕捉图像的旋转可以显示在查看框510中。
在框725,接收应用于第二控制元件的用户输入。除第一控制元件之外,第二控制元件也显示在用户界面上。第二控制元件使得用户能够根据第二粒度(其不同于第一控制元件的粒度)变换捕捉图像。在框730,基于接收的对于第二控制元件的用户输入来变换所捕捉的图像,并且当变换时相应地显示在查看框中。例如,利用在图5A和图5B中示出的实施方式,当基于用户输入在第二粒度下旋转时,捕捉图像的旋转可以显示在查看框510中。
在框735,一旦完成变换(例如,用户通过按压对应的按钮指示变换完成),则变换图像被最终定稿-例如,保存或另外存储至设备的存储器中或者经由互联网传送至远程服务器以便存储在社交网络系统内。在有些情况下,捕捉图像可以保存在设备上并传送至远程设备。
应当理解,图3和图7中描述的过程可以结合进行。例如,在实施方式中,提供用户界面500并且在根据图3中的过程300变换所捕捉的图像之后进行过程700。以这种方法,用户可以选择进行自动图像变换以校正倾斜,并且此后呈现用户界面500以使得能够进一步手动的,用户控制的变换。在实施方式中,在从过程300得到的变换图像与用户界面500一起显示在显示器上时,控制元件565和570可以放置在默认位置(例如,垂直方位)。在另一个实施方式中,从过程300得到的变换图像与用户界面500一起显示在显示器上,控制元件565和570可以定位为反映捕捉图像的倾斜角度。以这种方法,用户可以通过将控制元件565和570移动至默认位置将图像返回至其变换前的状态。
在以上所示的实施方式中,捕捉图像绕查看框510的中心C旋转。在其他实施方式中,捕捉图像可以绕旋转点(其不是查看框的中心)旋转。图8示出根据本公开的实施方式的将捕捉图像绕用户选择的旋转点变换的示例过程。图9A示出根据本公开的实施方式的显示在进行图8中的过程之前的图像的示例用户界面。图9B示出根据本公开的实施方式的显示根据图8的过程变换的图像的图9A的示例用户界面。图8、图9A和图9B在这里一起描述。
在过程800的框805,用户界面902显示在设备(例如,移动设备)的显示器905上,并且捕捉图像显示在用户界面902的查看框910中。在图9A中示出的捕捉图像,房子920被示为偏离查看框910的中心C。
在框810,接收针对旋转点的用户选择的用户输入。例如,用户可以触摸查看框910中的点P以确定旋转点,如由图9A和图9B中的圈起的参考标号1表现的。在实施方式中,旋转点可以在用户界面上指出-例如,作为点或其他参考。
在框815,接收针对指示旋转粒度的用户输入。例如,在实施方式中,旋转粒度通过用户将他的手指滑动远离用户定义的旋转点P至粒度选择点来定义,如图9A和图9B中的圈起的参考标号2表现的。旋转粒度基于手指远离旋转点滑动的距离来计算。例如,在一个实施方式中,与距旋转点更小的距离的粒度选择点产生的粒度相比,距旋转点更大距离的粒度选择点产生更精细的粒度。在又一个实施方式中,与距旋转点更小的距离产生的粒度相比,距旋转点的更大的距离产生较不精细的粒度。随着用户将他的手指滑动远离旋转点,线925可以实时显示从旋转点至用户的手指的位置。
在框820,接收用于指示旋转方向和旋转度数的用户输入。例如,在一个实施方式中,旋转方向通过用户相对于旋转点顺时针或逆时针滑动他的手指来定义,如由图9B中的圈起的参考标号3表现的。方向可以由手指滑动的顺时针或逆时针方向来定义-例如,顺时针则顺时针旋转捕捉图像,逆时针则逆时针旋转捕捉图像。此外,旋转的度数可以由手指滑动至顺时针方向或逆时针方向的距离来定义。
在框825,捕捉图像基于指出的粒度和旋转方向绕旋转点旋转。如在图9B中所示的,用户的手指已逆时针滑动至由圈起的参考标号3表现的点,直至图像被旋转至描绘的方位。
在实施方式中,捕捉图像随着用户的手指的滑动而在显示器上旋转。在所示的实施方式中,线925被显示为从旋转点至粒度选择点,并且随着用户将他的手指在逆时针方向上滑动至圈起的参考标号3,在旋转至描绘的位置时,线的长度保持固定。
在实施方式中,在选择旋转点、粒度选择点和旋转的方向和度数的同时需要用户持续保持他的手指在显示器上。如果,例如,用户将他的手指抬起离开显示器,那么用户必须重复这个信息的选择。
在一个实施方式中,所捕捉的图像在进行旋转的同时被缩放以消除旋转图像和查看框之间的任何空白,如在这里更详细地论述的。
社交网络系统-示例实现方式
图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通信。
在一个实施方式中,网络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)等传统的加密技术来将所有或一些链路加密。
在一个实施方式中,通过使用浏览器应用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解码。
标记语言文档1014还可以包括或者链接至应用或应用框架,例如,FLASHTM或UnityTM应用程序、SilverLightTM应用程序框架等。
在一个实施方式中,用户设备1010还包括一个或多个小程序1016,其包括表示用户设备1010的用户是否登录到社交网络系统1030的数据,该小程序能够实现修改从社交网络系统1030传送给用户设备1010的数据。
外部系统1020包括一个或多个网络服务器,其包括使用网络1050传送给用户设备1010的一个或多个网页1022a、1022b。外部系统1020与社交网络系统1030分开。例如,外部系统1020与第一域相关联,而社交网络系统1030与单独的社交网络域相关联。包含在外部系统1020内的网页1022a、1022b包括标记语言文档1014,其识别内容并且包括规定所识别的内容的格式或呈现的指令。
在实施方式中,移动设备100可以实现为用户设备1010。例如,用户设备1010可以是包括图像捕捉模块1054和图像变换模块1052的移动设备。在实施方式中,图像捕捉模块1054和图像变换模块1052可以分别实现为图像捕捉模块110和图像变换模块120。用户设备1010还可以包括未示出的其他部件,诸如运动传感器、照相机、显示器以及处理装置。用户设备1010可以执行在这里论述的图像变换。
社交网络系统1030包括用于社交网络的一个或多个计算设备,其中,社交网络包括多个用户并且为社交网络的用户提供与社交网络的其他用户通信并交互的能力。在某些情况下,社交网络可以由图谱表示,即,包括边线和节点的数据结构。其他数据结构也可以用于表示社交网络,包括但不限于数据库、对象、类别、meta元素、文件或任何其他数据结构。社交网络系统1030可以由操作员监管、管理或控制。社交网络系统1030的操作员可以是人类、自动化应用或用于管理内容、调节政策以及在社交网络系统1030内收集使用度量的一系列应用。可以使用任何类型的操作员。
用户可以加入社交网络系统1030然后添加与他们希望连接的任意数量的社交网络系统1030的其他用户的连接。如此处使用的,术语“好友”指社交网络系统1030中用户经由社交网络系统1030与其形成连接、关联、或者关系的任何其他用户。例如,在实施方式中,如果社交网络系统1030中的用户表示为社交图谱中的节点,那么术语“好友”可以指两个用户节点之间形成并直接连接这两个用户节点的边线。
用户可明确添加连接或者社交网络系统1030可基于用户的共同特征(例如,是同一所教育机构的校友的用户)自动创建连接。例如,第一用户特别选择特定的其他用户作为好友。社交网络系统1030中的连接通常是双向的,但不必如此,因此,术语“用户”和“好友”取决于参照系。社交网络系统1030的用户之间的连接通常是双边的(“双向的”),或者“相互的”,但连接同样可以是单边的,或者“单向的”。例如,如果Bob和Joe是社交网络系统1030的两个用户并且连接至彼此,那么Bob和Joe是彼此的连接。另一方面,如果Bob希望连接至Joe以观看由Joe传送至社交网络系统1030的数据,但是Joe不希望形成相互连接,所以可以建立单边连接。用户之间的连接可以是直接连接;然而,社交网络系统1030的一些实施方式允许通过一个或多个连接等级或分离程度的间接的连接。
除了建立和保持用户之间的连接并且允许用户之间进行交互之外,社交网络系统1030向用户提供对社交网络系统1030支持的各类项进行动作的能力。这些项目可以包括:社交网络系统1030的用户可以属于的群或网(即,人、实体和概念的社交网)、用户可能感兴趣的事件或日历条目、用户可以经由社交网络系统1030使用的基于计算机的应用、允许用户经由社交网络系统1030提供的服务或者通过社交网络系统1030购买或出售物品的交易、以及用户可以在社交网络系统1030上或者在社交网络系统1030外进行的与广告的交互。这些仅是用户可进行动作的社交网络系统1030的项目的几个实例,并且许多其他实例也是可能的。用户可以与能够在社交网络系统1030内或者在外部系统1020内表示的、与社交网络系统1030分开的或者通过网络1050与社交网络系统1030耦接的任何事物交互。
社交网络系统1030还能够链接各种实体。例如,社交网络系统1030能够允许用户通过API、网络服务或其他通信信道彼此以及与外部系统1020或其他实体交互。社交网络系统1030生成和维护“社交图谱”,社交图谱包括由多个边线互连的多个节点。在社交图谱内的每个节点可以表示可以作用于另一个节点和/或可以由另一个节点作用的实体。社交图谱可以包括各种类型的节点。节点的类型的实例包括用户、非人类实体、内容项目、网页、组群、活动、消息、概念、以及可以由社交网络系统1030中的对象表示的任何其他事情。在社交图谱中的两个节点之间的边线可以表示在这两个节点之间的特定类型的连接或关联性,这可以因节点关系或者因由一个节点在另一个节点上进行的活动而产生。在某些情况下,在节点之间的边线可以加权。边线的权重可以表示与边线相关联的属性,例如,在节点之间的连接或关联性的强度。不同类型边线可以具有不同的权重。例如,可以给在一个用户“点赞”另一个用户时创建的边线提供一个权重,同时可以给在用户与另一个用户交好友时创建的边线提供一个不同的权重。
举例来说,当第一用户将第二用户识别为好友时,社交图谱中生成将表示第一用户的节点与表示第二用户的第二节点连接的边线。由于各种节点彼此相关或交互,所以社交网络系统1030修改连接各种节点的边线以反映关系和互动。
社交网络系统1030还包括增强用户与社交网络系统1030之间交互的用户生成内容。用户生成的内容可以包括用户可以增加、上传、发送或“发布”到社交网络系统1030中的任何事物。例如,用户将帖子从用户设备1010传送至社交网络系统1030。帖子可以包括数据(例如,状态更新或其他文本数据)、位置信息、图像(例如,照片)、视频、链接、音乐或其他相似的数据和/或媒体。第三方也可以将内容添加至社交网络系统1030。内容“项目”表示为社交网络系统1030中的对象。以这种方法,鼓励社交网络系统1030的用户通过各种通信渠道发布文本和各种类型的媒体的内容项目,来彼此通信。这种通信增加了用户彼此的交互,并且增加了用户与社交网络系统1030交互的频率。
社交网络系统1030包括网络服务器1032、API请求服务器1034、用户简档存储器1036、连接存储器1038、动作记录器1040、活动日志1042、授权服务器1044、和图像引入模块1046。在本发明的实施方式中,社交网络系统1030可以包括各种应用的额外的、更少的、或不同的部件。为了不使该系统的细节模糊,未示出诸如网络接口、安全机构、负载平衡器、故障转移服务器、管理和网络操作控制台等的其他部件。
用户简档存储器1036维护关于用户账户的信息,包括传记、人口或其他类型的描述信息,例如,用户声明的或者社交网络系统1030推断的工作经历、教育背景、爱好或偏好、位置等。将该信息储存在用户简档存储器1036内,以便唯一地识别每个用户。社交网络系统1030还在连接存储器1038中储存描述在不同的用户之间的一个或多个连接的数据。连接信息可以指示具有相似的或共同的工作经历、团体成员、爱好或教育背景的用户。此外,社交网络系统1030包括在不同的用户之间的用户定义连接,允许用户规定他们与其他用户的关系。例如,用户定义连接允许用户生成平行于用户的现实生活关系的与诸如好友、同事、伙伴等其他用户的关系。用户可从预定的连接类型中选择,或者根据需要定义他们自己的连接类型。与社交网络系统1030中诸如非个人实体、储存区(bucket)、集群中心(clustercenters)、图像、兴趣、页面、外部系统、概念等的其他节点的连接也可存储在连接存储器1038中。
社交网络系统1030维护关于用户可以与之交互的对象的数据。为了维持该数据,用户简档存储器1036和连接存储器1038存储通过社交网络系统1030维持的对应类型对象的实例。每种对象类型均具有适合于存储适于该对象类型的信息的信息字段。例如,用户简档储存器1036包括具有适合于描述用户的账户和与用户的账户相关的信息的字段的数据结构。在创建特定类型的新对象时,社交网络系统1030初始化对应类型的新数据结构,将唯一对象标识符分配给该数据结构,并且根据需要,开始将数据添加至对象。这种情况可能发生在,例如,用户变成社交网络系统1030的用户时,社交网络系统1030在用户简档存储器1036中生成用户简档的新事例时、将唯一标识符分配给用户账户时、以及开始使用用户提供的信息来填充用户账户的字段时。
连接存储器1038包括适合于描述用户到其他用户的连接、到外部系统1020的连接、或者到其他实体的连接的数据结构。连接存储器1038还可以使连接类型与用户的连接相关联,用户的连接可以与用户的隐私设置一起用于管制对关于该用户的信息的访问权。在本发明的实施方式中,用户简档存储器1036和连接存储器1038可以实现为联合数据库。
存储在连接存储器1038、用户简档存储器1036、以及活动日志1042中的数据能够使社交网络系统1030生成这样一种社交图谱,即,使用节点来识别各种对象并且使用连接节点的边线来识别不同对象之间的关系。例如,如果在社交网络系统1030中第一用户与第二用户创建连接,则来自用户简档存储器1036中的第一用户和第二用户的用户账户可用作社交图谱中的节点。连接存储器1038储存的第一用户与第二用户之间的连接是在与第一用户和第二用户相关联的节点之间的边线。继续这个实例,然后,第二用户可以在社交网络系统1030内给第一用户发送消息。发送消息(可被存储)的动作是社交图谱中表示第一用户与第二用户的两个节点之间的另一边线。此外,消息本身可被识别并且包括在社交图谱中作为连接到表示第一用户和第二用户的节点的另一节点。
在另一实例中,第一用户可在由社交网络系统1030维护的图像中(或者,可替换地,在由社交网络系统1030外部的另一系统维护的图像中)给第二用户加标签。图像本身可表示为社交网络系统1030中的节点。该加标签动作可在第一用户与第二用户之间创建边线并且在各个用户与图像之间创建边线,该图像也是社交图谱中的节点。在又一实例中,如果用户确认参加某事件,则用户和该事件是从用户简档存储器1036中获得的节点,其中,对该事件的参加是可从活动日志1042中检索到的节点之间的边线。通过生成并维护社交图谱,社交网络系统1030包括描述多种不同类型的对象以及这些对象之间的交互和连接的数据,从而提供社交相关信息的丰富来源。
网络服务器1032经由网络1050将社交网络系统1030链接至一个或者多个用户设备1010和/或一个或者多个外部系统1020。网络服务器1032为网页以及网页相关的其他内容(例如,Java、JavaScript、Flash、XML等)服务。网络服务器1032可包括用于接收和在社交网络系统1030与一个或者多个用户设备1010之间路由消息的邮件服务器或者其他消息功能。该消息可以是即时消息、队列消息(例如,电子邮件)、文本和SMS消息或者任何其他合适的消息格式。
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进行通信。
动作记录器1040能够从网络服务器1032接收有关用户在社交网络系统1030上和/或社交网络系统1030外的动作的通信。动作记录器1040利用有关用户动作的信息填充活动日志1042,从而能够使社交网络系统1030发现其用户在社交网络系统1030中和在社交网络系统1030之外所采取的各种动作。特定用户对社交网络系统1030中另一节点采取的任何动作可以通过在活动日志1042中或者相似数据库中或者其他数据存储库中维护的信息而与每个用户的账户相关联。所识别并且储存的用户在社交网络系统1030内采取的行动的实例可以包括例如增加与另一个用户的连接,将消息发送给另一个用户,从另一个用户读取消息,查看与另一个用户相关联的内容,参加另一个用户发布的事件,发布图像,尝试发布图像,或者与另一个用户或另一个对象交互的其他动作。当用户在社交网络系统1030内采取动作时,该动作被记录在活动日志1042中。在一个实施方式中,社交网络系统1030将活动日志1042维护为条目的数据库。当在社交网络系统1030内采取动作时,将有关该动作的条目添加至活动日志1042。活动日志1042可以被称为动作日志。
此外,用户动作可与社交网络系统1030之外的实体内发生的概念和动作相关联,诸如独立于社交网络系统1030的外部系统1020。例如,活动记录器1040可以从网络服务器1032接收描述用户与外部系统1020的交互的数据。在该实例中,外部系统1020根据社交图谱中的结构化的动作和对象报告用户的交互。
用户与外部系统1020交互的动作的其他实例包括:用户表明对外部系统1020或另一个实体有兴趣,用户发布论述外部系统1020或外部系统1020以内的网页1022a的评论至社交网络系统1030,用户发布与外部系统1020相关联的统一资源定位符(URL)或其他标识符至社交网络系统1030,或者由用户进行的与外部系统1020相关的任何其他动作。因此,活动日志1042可包括描述社交网络系统1030的用户与独立于社交网络系统1030的外部系统1020之间的交互的动作。
授权服务器1044强制执行社交网络系统1030中用户的一个或多个隐私设置。用户的隐私设置确定如何分享与用户相关的特定信息。隐私设置包括与用户相关联的特定信息的规范以及可以分享信息的一个实体或多个实体的规范。可与其分享信息的实体的实例可包括其他用户、应用、外部系统1020、或者可潜在访问该信息的任何实体。用户可以分享的信息包括用户账户信息,例如,简档照片、与用户相关联的电话号码、用户的连接、用户采取的动作(例如,添加连接)、改变用户简档信息等。可以不同的粒度级别提供隐私设置规范。例如,隐私设置可以确定与其他用户分享的特定信息;隐私设置确定工作电话号码或相关信息的具体设置,如,包括简档照片、住宅电话号码、和身份的个人信息。可替换地,隐私设置可以适用于与用户相关联的所有信息。还可以通过各种粒度等级规定可以访问特定信息的这组实体的规范。可以分享信息的各种组的实体可以包括(例如)用户的所有好友、好友的所有好友、所有应用或者所有外部系统1020。一个实施方式允许这组实体的规范包括实体的列表。例如,用户可提供允许访问特定信息的外部系统1020的列表。另一实施方式允许该规范包括一组实体,以及不允许访问该信息的例外。例如,用户可允许所有外部系统1020访问用户的工作信息,但是规定不允许访问该工作信息外部系统1020的列表。某些实施方式将不被允许访问某些信息的例外的列表称为“黑名单”。阻止属于由用户规定的黑名单的外部系统1020访问在隐私设置中规定的信息。信息的规范的粒度、和分享信息的实体的规范的粒度的各种组合是可能的。例如,所有的个人信息可以与好友分享,而所有工作信息可以与好友的好友分享。
授权服务器1044包括逻辑以确定用户的好友、外部系统1020、和/或其他应用和实体是否能够访问与用户相关联的某些信息。外部系统1020需要授权服务器1044的授权以访问用户的更多私人的和敏感的信息,如的用户的工作电话号码。授权服务器1044基于用户的隐私设置来确定是否允许另一用户、外部系统1020、应用、或另一实体访问与该用户相关联的信息,包括有关用户采取的动作的信息。
社交网络系统1030可以包括图像模块1046。图像模块1046可以与用户设备1010通信以将一个或多个图像从用户设备上传至社交网络系统1030。例如,图像模块1046可以接收由用户设备1010捕捉并变换的变换图像。此外,图像模块1046可以实现图像变换模块1052的功能。在实施方式中,本文中描述的图像变换技术可以由图像模块1046和图像变换模块1052的合适的组合进行。例如,基于运动传感器数据以及如在这里论述的由移动设备100提供的其他信息,对于倾斜图像的旋转角的计算可以由图像模块1046、图像变换模块1052或者两者进行。
上述过程和特征可以通过多种机器和计算机系统架构并且在多种网络和计算环境中实现。图11示出了根据本发明的实施方式的可用于实现在本文中描述的一个或多个实施方式的计算机系统1100的实例。例如,计算机系统1100可以表示在图10中示出的用户设备1010和/或移动设备100。
计算机系统1100包括使得计算机系统1100执行本文中讨论的过程和特征的一系列指令。计算机系统1100可以连接(例如,联网)至其他机器。在网络部署中,计算机系统1100可运行在服务器-客户端网络环境中的服务器机器或客户端机器的能力范围内,或作为对等机器运行在对等(或分布式)网络环境中。在本发明的实施方式中,计算机系统1100可以是社交网络系统1030、用户设备1010、以及外部系统1020、或者其部件。在本发明的实施方式中,计算机系统1100可以是在构成所有或一部分社交网络系统1030的多个服务器中的一个服务器。
计算机系统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)公司制造的兼容处理器的计算机系统以及任何其他合适的处理器。
操作系统管理和控制计算机系统1100的操作,包括至软件应用的数据的输入和来自软件应用的数据的输出(未示出)。操作系统提供在系统上执行的软件应用与系统的硬件部件之间的接口。可以使用任何合适的操作系统,诸如,LINUX操作系统、从加利福尼亚库比蒂诺(Cupertino)苹果电脑公司可商购的Apple Macintosh操作系统、UNIX操作系统、操作系统、BSD操作系统等。可能存在其它实施方式。
下面将更为详细地描述计算机系统1100的元件。具体地,网络接口1116提供计算机系统1100和任何大范围网络之间的通信,如以太网(例如,IEEE 802.3)网络、底板(backplane)等。大容量存储器1118提供执行以上确定的各个计算系统实现的上述过程和特征的数据和编程指令的永久存储器,而系统存储器1114(例如,DRAM)提供当由处理器1102执行时的数据和编程指令的临时存储器。I/O端口1120可以是提供可以耦接至计算机系统1100的另外的外围设备之间的通信的一个或多个串行和/或并行通信端口。
计算机系统1100可以包括各种系统架构,并且可以重新布置计算机系统1100的各种部件。例如,缓存1104可以与处理器1102一起在芯片上。可替换地,缓存1104和处理器1102可以包装在一起作为“处理器模块”,处理器1102称为“处理器核”。此外,本发明的某些实施方式可既不需要也不包括所有以上部件。例如,耦接至标准I/O总线1108的外围设备可耦接至高性能I/O总线1106。此外,在一些实施方式中,可以仅存在单个总线,计算机系统1100的部件耦接至单个总线。而且,计算机系统1100可包括诸如额外处理器、存储设备、存储器的额外的部件。
通常,本文中描述的过程和特征可以实现为操作系统或具体应用程序的部分、部件、程序、对象、模块、或称为“程序”的一系列指令。例如,一个或多个程序可以用于执行本文中描述的具体过程。通常,程序包括计算机系统1100中的各个存储器和存储设备中的一个或者多个指令,该一个或者多个指令在由一个或者多个处理器读取或者执行时,使得计算机系统1100进行操作以执行此处所描述的过程和特征。本文中描述的过程和特征可以在软件、固件、硬件(例如,应用型专用集成电路)、或者其任何组合中实现。
在一种实施方式中,此处所描述的过程和特征被计算机系统1100实现为独自或者共同地在分布式计算环境中运行的一系列可执行模块。前述模块可以由硬件、储存在计算机可读介质(或机器可读介质)上的可执行模块或这两者的组合来实现。例如,模块可以包括由在硬件系统内的处理器(例如,处理器1102)执行的多个或一系列指令。最初,该系列指令可被存储在存储设备上,诸如,大容量存储器1118。然而,该系列指令可被存储在任何合适的计算机可读存储介质上。而且,该系列指令不需要存储在网络的服务器本机上并且可经由网络接口1216从远程存储设备接收。指令从诸如大容量存储器1118等存储设备被复制到系统存储器1114,然后被处理器1102访问和执行。
计算机可读介质的实例包括,但不限于,可记录的类型的介质,诸如易失性的和非易失性的存储设备;固态存储器;软盘和其他可换磁盘;硬盘驱动器;磁性介质;光盘(例如,光盘只读存储器(CD ROMS)、数字多用途磁盘(DVD));其他相似的非易失性(或暂时的)、有形的(或非有形的)存储介质;或者适合于存储、编码或携带由计算机执行的以进行本文中描述的过程和特征中一个或多个中的任意一个的一系列指令的任何类型的介质。
为说明的目的,阐述了许多具体的细节,以提供对描述的全面的理解。然而,对本领域技术人员显而易见的是,在没有这些具体细节的情况下可以实现本公开的实施方式。在有些情况下,以框图形式示出了模块、结构、过程、特征、以及设备,以避免使本说明书变得不清楚。在其他情况下,示出功能框图和流程图以表现数据和逻辑流程。框图和流程图的部件(例如,模块、块、结构、装置、特征等)可以以除本文中明确描述和描绘的以外的方式不同地结合、分开、移去、重新排序、和替换。
在这个说明书中参考“一个实施方式”、“实施方式”、“其他实施方式”、“一系列实施方式”等意味着与实施方式有关地描述的特定特征、设计、结构、或特性包括在本公开的至少一个实施方式中。在说明书中不同的地方出现的例如短语“在一个实施方式中”或“在实施方式中”未必都指同一个实施方式,也不是指与其他实施方式互相排除的分开的或可替代的实施方式。此外,而且,无论是否明确引用“实施方式”等,都描述了各种特征,这些特征可以不同地组合并且包含在一些实施方式中,但是还可以在其他实施方式中不同地省略。相似地,描述的各个特征可以是一些实施方式而不是其他实施方式的偏好或要求。
本文中所使用的语言主要出于可读性和指导的目的而选择,并且选择其不是为了划定或限制发明主题。因此,并不旨在使本发明的范围受详细描述限制,而是受基于此的申请所发布的任何权利要求的限制。因此,本发明的实施方式的公开的目的在于说明性,而不是对随后权利要求书中阐述的本发明的范围进行限制。
Claims (20)
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.一种存储计算机可执行指令的非临时性计算机存储介质,所述计算机可执行指令在被执行时,使计算机系统进行计算机实现方法,所述方法包括:
获取利用移动设备捕捉的图像;
获取与在捕捉所述图像的时刻相关的针对所述移动设备的运动传感器数据,其中,所述运动传感器数据用于确定在捕捉所述图像的时刻所述移动设备相对于基准轴的倾斜;
基于所述运动传感器数据确定与在捕捉所述图像的时刻相关的旋转角;并且
基于所述旋转角变换所述图像。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/958,451 US9177362B2 (en) | 2013-08-02 | 2013-08-02 | Systems and methods for transforming an image |
US13/958,451 | 2013-08-02 | ||
EP13190578.8A EP2833615B1 (en) | 2013-08-02 | 2013-10-29 | System and method for transforming an image |
EP13190578.8 | 2013-10-29 | ||
PCT/US2013/067578 WO2015016955A1 (en) | 2013-08-02 | 2013-10-30 | Systems and methods for transforming an image |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105637850A CN105637850A (zh) | 2016-06-01 |
CN105637850B true CN105637850B (zh) | 2019-08-16 |
Family
ID=49551509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380079982.1A Active CN105637850B (zh) | 2013-08-02 | 2013-10-30 | 用于变换图像的系统和方法 |
Country Status (11)
Country | Link |
---|---|
US (3) | US9177362B2 (zh) |
EP (1) | EP2833615B1 (zh) |
JP (1) | JP6412129B2 (zh) |
KR (2) | KR102087574B1 (zh) |
CN (1) | CN105637850B (zh) |
AU (1) | AU2013395618B2 (zh) |
BR (1) | BR112016002357A2 (zh) |
CA (1) | CA2919859C (zh) |
IL (1) | IL243803A0 (zh) |
MX (1) | MX357086B (zh) |
WO (1) | WO2015016955A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9741150B2 (en) | 2013-07-25 | 2017-08-22 | Duelight Llc | Systems and methods for displaying representative images |
JP5843033B1 (ja) * | 2014-05-15 | 2016-01-13 | 株式会社リコー | 撮像システム、撮像装置、プログラムおよびシステム |
CN107113394B (zh) | 2015-01-06 | 2019-10-18 | 麦克赛尔株式会社 | 影像显示装置、影像显示方法以及影像显示系统 |
US10075640B2 (en) * | 2015-12-31 | 2018-09-11 | Sony Corporation | Motion compensation for image sensor with a block based analog-to-digital converter |
JP6976719B2 (ja) * | 2017-05-25 | 2021-12-08 | キヤノン株式会社 | 表示制御装置、表示制御方法及びプログラム |
CN110520694A (zh) * | 2017-10-31 | 2019-11-29 | 深圳市大疆创新科技有限公司 | 一种视觉里程计及其实现方法 |
EP3598428A1 (en) | 2018-07-17 | 2020-01-22 | Thomson Licensing | Device and method for image display |
CN109919141A (zh) * | 2019-04-09 | 2019-06-21 | 广东省智能制造研究所 | 一种基于骨架姿态的行人再识别方法 |
CN110312070B (zh) * | 2019-04-23 | 2021-08-24 | 维沃移动通信有限公司 | 一种图像处理方法及终端 |
CN111125601B (zh) * | 2019-12-24 | 2023-07-18 | 腾讯科技(深圳)有限公司 | 文件传输方法、装置、终端、服务器及存储介质 |
EP3866455A1 (en) * | 2020-02-14 | 2021-08-18 | InterDigital CE Patent Holdings | Device and method for capturing images or video |
DE102020126407A1 (de) | 2020-10-08 | 2022-04-14 | Leica Camera Aktiengesellschaft | Bildaufnahmegerät |
US11694376B2 (en) * | 2020-10-19 | 2023-07-04 | Adobe Inc. | Intuitive 3D transformations for 2D graphics |
JP2023020472A (ja) * | 2021-07-30 | 2023-02-09 | セイコーエプソン株式会社 | 表示装置の制御方法、表示装置、及び制御チップ |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101996040A (zh) * | 2009-08-06 | 2011-03-30 | 佳能株式会社 | 显示设备 |
CN102566896A (zh) * | 2010-10-15 | 2012-07-11 | Sap股份公司 | 用于时间和日期输入的可触控圆形控制 |
CN102906682A (zh) * | 2010-04-23 | 2013-01-30 | 摩托罗拉移动有限责任公司 | 使用触摸检测表面的电子设备和方法 |
Family Cites Families (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09198224A (ja) * | 1995-11-13 | 1997-07-31 | Internatl Business Mach Corp <Ibm> | グラフィカル・ユーザ・インターフェース内で値を指定する方法および装置 |
US6262769B1 (en) * | 1997-07-31 | 2001-07-17 | Flashpoint Technology, Inc. | Method and system for auto rotating a graphical user interface for managing portrait and landscape images in an image capture unit |
US7080324B1 (en) * | 2000-10-11 | 2006-07-18 | Agilent Technologies, Inc. | Control for a graphical user interface supporting coupled variables and method of operation thereof |
GB0208654D0 (en) | 2002-04-16 | 2002-05-29 | Koninkl Philips Electronics Nv | Image processing for video or photographic equipment |
US8416217B1 (en) * | 2002-11-04 | 2013-04-09 | Neonode Inc. | Light-based finger gesture user interface |
US7679625B1 (en) | 2005-01-07 | 2010-03-16 | Apple, Inc. | Straightening digital images |
JP2006245726A (ja) * | 2005-03-01 | 2006-09-14 | Fuji Photo Film Co Ltd | デジタルカメラ |
EP1924930A2 (en) * | 2005-09-16 | 2008-05-28 | Wizard International, Inc. | Framed art visualization software |
JP2007127756A (ja) * | 2005-11-02 | 2007-05-24 | Nikon Corp | 像振れ補正装置、光学装置、交換レンズ、及びカメラシステム |
US8677257B2 (en) * | 2006-08-04 | 2014-03-18 | Apple Inc. | Granular graphical user interface element |
US8462109B2 (en) * | 2007-01-05 | 2013-06-11 | Invensense, Inc. | Controlling and accessing content using motion processing on mobile devices |
DE602008005448D1 (de) * | 2007-06-27 | 2011-04-21 | Panasonic Corp | Bildgebungsgerät, verfahren, systemintegrierte schaltung und programm |
US8068121B2 (en) * | 2007-06-29 | 2011-11-29 | Microsoft Corporation | Manipulation of graphical objects on a display or a proxy device |
CN101884213B (zh) * | 2007-12-03 | 2012-09-05 | 松下电器产业株式会社 | 图像处理装置及方法、摄影装置、再生装置、集成电路 |
US8416198B2 (en) | 2007-12-03 | 2013-04-09 | Apple Inc. | Multi-dimensional scroll wheel |
JP5315751B2 (ja) | 2008-03-31 | 2013-10-16 | ペンタックスリコーイメージング株式会社 | 撮像装置 |
US9477396B2 (en) * | 2008-11-25 | 2016-10-25 | Samsung Electronics Co., Ltd. | Device and method for providing a user interface |
JP2010252238A (ja) * | 2009-04-20 | 2010-11-04 | Kyocera Corp | 撮像装置および撮像方法 |
US8823749B2 (en) * | 2009-06-10 | 2014-09-02 | Qualcomm Incorporated | User interface methods providing continuous zoom functionality |
JP5397081B2 (ja) * | 2009-08-12 | 2014-01-22 | 富士通モバイルコミュニケーションズ株式会社 | 携帯端末 |
US8413065B2 (en) * | 2009-09-07 | 2013-04-02 | Qualcomm Incorporated | User interface methods for ending an application |
US20110061009A1 (en) * | 2009-09-10 | 2011-03-10 | John David Poisson | Flexible user interface for image manipulation for an iamge product |
US8957918B2 (en) * | 2009-11-03 | 2015-02-17 | Qualcomm Incorporated | Methods for implementing multi-touch gestures on a single-touch touch surface |
US8687070B2 (en) * | 2009-12-22 | 2014-04-01 | Apple Inc. | Image capture device having tilt and/or perspective correction |
KR20110088727A (ko) | 2010-01-29 | 2011-08-04 | 삼성전자주식회사 | 휴대용 단말기에서 출력 이미지를 회전시키기 위한 장치 및 방법 |
US9124804B2 (en) * | 2010-03-22 | 2015-09-01 | Microsoft Technology Licensing, Llc | Using accelerometer information for determining orientation of pictures and video images |
US20110316888A1 (en) * | 2010-06-28 | 2011-12-29 | Invensense, Inc. | Mobile device user interface combining input from motion sensors and other controls |
US8488010B2 (en) | 2010-09-21 | 2013-07-16 | Hewlett-Packard Development Company, L.P. | Generating a stabilized video sequence based on motion sensor data |
US9870141B2 (en) * | 2010-11-19 | 2018-01-16 | Microsoft Technology Licensing, Llc | Gesture recognition |
US8791911B2 (en) * | 2011-02-09 | 2014-07-29 | Robotzone, Llc | Multichannel controller |
JP2014513622A (ja) * | 2011-03-29 | 2014-06-05 | ボストン サイエンティフィック ニューロモデュレイション コーポレイション | 治療刺激提供システムのための通信インタフェース |
US9158455B2 (en) * | 2011-07-12 | 2015-10-13 | Apple Inc. | Multifunctional environment for image cropping |
KR101340794B1 (ko) | 2011-08-12 | 2013-12-11 | 엘지이노텍 주식회사 | 휴대용 단말기 및 그의 구동 방법 |
US9609217B2 (en) * | 2011-11-02 | 2017-03-28 | Mediatek Inc. | Image-based motion sensor and related multi-purpose camera system |
TWI450150B (zh) * | 2011-12-21 | 2014-08-21 | Wistron Corp | 觸控方法及觸控系統 |
TWI497990B (zh) * | 2012-01-11 | 2015-08-21 | Hon Hai Prec Ind Co Ltd | Ptz攝像裝置控制系統及方法 |
TW201331818A (zh) * | 2012-01-17 | 2013-08-01 | Wistron Corp | 電子裝置及控制電子裝置的方法 |
US9041727B2 (en) * | 2012-03-06 | 2015-05-26 | Apple Inc. | User interface tools for selectively applying effects to image |
KR101861377B1 (ko) * | 2012-03-09 | 2018-05-28 | 삼성전자주식회사 | 이동 단말에서 모션 기반의 화면 제어 방법 및 이를 위한 이동 단말 |
US9324188B1 (en) * | 2012-04-30 | 2016-04-26 | Dr Systems, Inc. | Manipulation of 3D medical objects |
EP2667292A3 (en) * | 2012-05-24 | 2015-12-30 | BlackBerry Limited | Presentation of image on display screen with combination crop and rotation and with auto-resizing of crop field |
US9354721B2 (en) * | 2012-09-28 | 2016-05-31 | Apple Inc. | Movement based image transformation |
US20140282073A1 (en) * | 2013-03-15 | 2014-09-18 | Micro Industries Corporation | Interactive display device |
US20140289663A1 (en) * | 2013-03-21 | 2014-09-25 | Microsoft Corporation | Producing Artwork Based on an Imported Image |
US9195391B2 (en) * | 2013-04-19 | 2015-11-24 | International Business Machines Corporation | Touch sensitive data entry using a continuous gesture |
US9488483B2 (en) * | 2013-05-17 | 2016-11-08 | Honda Motor Co., Ltd. | Localization using road markings |
US8860818B1 (en) * | 2013-07-31 | 2014-10-14 | Apple Inc. | Method for dynamically calibrating rotation offset in a camera system |
CN105027058B (zh) * | 2013-08-21 | 2018-10-09 | 松下知识产权经营株式会社 | 信息显示装置、信息显示方法以及记录介质 |
-
2013
- 2013-08-02 US US13/958,451 patent/US9177362B2/en active Active
- 2013-10-29 EP EP13190578.8A patent/EP2833615B1/en active Active
- 2013-10-30 CN CN201380079982.1A patent/CN105637850B/zh active Active
- 2013-10-30 AU AU2013395618A patent/AU2013395618B2/en not_active Ceased
- 2013-10-30 BR BR112016002357A patent/BR112016002357A2/pt not_active Application Discontinuation
- 2013-10-30 CA CA2919859A patent/CA2919859C/en not_active Expired - Fee Related
- 2013-10-30 JP JP2016531599A patent/JP6412129B2/ja active Active
- 2013-10-30 KR KR1020167004206A patent/KR102087574B1/ko active IP Right Grant
- 2013-10-30 WO PCT/US2013/067578 patent/WO2015016955A1/en active Application Filing
- 2013-10-30 MX MX2016001405A patent/MX357086B/es active IP Right Grant
- 2013-10-30 KR KR1020207006399A patent/KR102112070B1/ko active IP Right Grant
-
2015
- 2015-09-25 US US14/866,704 patent/US9679361B2/en active Active
-
2016
- 2016-01-27 IL IL243803A patent/IL243803A0/en unknown
-
2017
- 2017-05-04 US US15/586,910 patent/US10453181B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101996040A (zh) * | 2009-08-06 | 2011-03-30 | 佳能株式会社 | 显示设备 |
CN102906682A (zh) * | 2010-04-23 | 2013-01-30 | 摩托罗拉移动有限责任公司 | 使用触摸检测表面的电子设备和方法 |
CN102566896A (zh) * | 2010-10-15 | 2012-07-11 | Sap股份公司 | 用于时间和日期输入的可触控圆形控制 |
Also Published As
Publication number | Publication date |
---|---|
JP2016532954A (ja) | 2016-10-20 |
IL243803A0 (en) | 2016-04-21 |
US20170236253A1 (en) | 2017-08-17 |
WO2015016955A1 (en) | 2015-02-05 |
KR20160040220A (ko) | 2016-04-12 |
JP6412129B2 (ja) | 2018-10-24 |
KR20200028038A (ko) | 2020-03-13 |
US20160019676A1 (en) | 2016-01-21 |
AU2013395618A1 (en) | 2016-02-18 |
CA2919859C (en) | 2019-04-09 |
US9177362B2 (en) | 2015-11-03 |
US10453181B2 (en) | 2019-10-22 |
CN105637850A (zh) | 2016-06-01 |
EP2833615B1 (en) | 2021-12-08 |
KR102087574B1 (ko) | 2020-03-12 |
EP2833615A2 (en) | 2015-02-04 |
MX357086B (es) | 2018-06-25 |
KR102112070B1 (ko) | 2020-05-19 |
US9679361B2 (en) | 2017-06-13 |
US20150036944A1 (en) | 2015-02-05 |
BR112016002357A2 (pt) | 2017-08-01 |
AU2013395618B2 (en) | 2018-01-25 |
CA2919859A1 (en) | 2015-02-05 |
MX2016001405A (es) | 2016-08-18 |
EP2833615A3 (en) | 2016-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105637850B (zh) | 用于变换图像的系统和方法 | |
CN110352595B (zh) | 用于提供增强现实叠加的系统和方法 | |
EP3985489A1 (en) | Systems and methods for content streaming | |
JP6449905B2 (ja) | 対話式メディア・コンテンツ交換のためのシステムおよび方法 | |
US20130147845A1 (en) | Photo Selection for Mobile Devices | |
CN115777113B (zh) | 用于重新展示内容项的消息系统 | |
CN116458150A (zh) | 屏幕记录摄像装置模式 | |
US20180302602A1 (en) | Systems and methods for presenting content | |
AU2013305993A1 (en) | Systems and methods for multiple photo feed stories | |
KR20230023732A (ko) | 증강 현실 컴포넌트들에 대한 딥 링크 | |
KR20230104676A (ko) | 증강 현실 컴포넌트들에서의 초상화 이미지들의 사용 | |
KR20230021722A (ko) | 웹 뷰를 위한 양방향 브리지 | |
CN115885247A (zh) | 用于启动应用的视觉搜索 | |
CN116235194A (zh) | 媒体内容传输和管理 | |
US10484675B2 (en) | Systems and methods for presenting content | |
KR20240025654A (ko) | 증강 현실을 웹 뷰 플랫폼에 통합함 | |
US20180189254A1 (en) | Systems and methods to present information in a virtual environment | |
US10725637B2 (en) | Systems and methods for providing image perspective adjustment and automatic fitting | |
CN110214307A (zh) | 用于为社交网络系统提供存根应用的系统和方法 | |
CN116710895A (zh) | 用于增强现实组件的身体ui |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: California, USA Patentee after: Yuan platform Co. Address before: California, USA Patentee before: Facebook, Inc. |