CN104982027A - 用于通过基于约束的转动平滑的数字视频稳定的系统和方法 - Google Patents

用于通过基于约束的转动平滑的数字视频稳定的系统和方法 Download PDF

Info

Publication number
CN104982027A
CN104982027A CN201380072682.0A CN201380072682A CN104982027A CN 104982027 A CN104982027 A CN 104982027A CN 201380072682 A CN201380072682 A CN 201380072682A CN 104982027 A CN104982027 A CN 104982027A
Authority
CN
China
Prior art keywords
camera
group
user
picture frame
social networking
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.)
Granted
Application number
CN201380072682.0A
Other languages
English (en)
Other versions
CN104982027B (zh
Inventor
亚历山大·卡尔彭科
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Meta Platforms Inc
Original Assignee
Facebook Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Facebook Inc filed Critical Facebook Inc
Publication of CN104982027A publication Critical patent/CN104982027A/zh
Application granted granted Critical
Publication of CN104982027B publication Critical patent/CN104982027B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • H04N23/682Vibration or motion blur correction
    • H04N23/683Vibration or motion blur correction performed by a processor, e.g. controlling the readout of an image memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • G11B27/11Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information not detectable on the record carrier
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • H04N23/681Motion detection
    • H04N23/6812Motion detection based on additional sensors, e.g. acceleration sensors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • H04N23/689Motion occurring during a rolling shutter mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/765Interface circuits between an apparatus for recording and another apparatus
    • H04N5/77Interface circuits between an apparatus for recording and another apparatus between a recording apparatus and a television camera
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/91Television signal processing therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Studio Devices (AREA)

Abstract

提供了用于通过基于约束的转动平滑的数字视频稳定的系统和方法。可以提供数字视频数据,数字视频数据包括具有相关联的时间戳的一组图像帧以及具有相关联的时间戳的一组相机方向数据。通过最小化在连续的图像帧之间的转动速率可以生成一组平滑的相机方向数据,同时最小化根据这组平滑的相机方向数据重新定向所产生的一组平滑的图像帧内的空白区域的量。

Description

用于通过基于约束的转动平滑的数字视频稳定的系统和方法
技术领域
本公开的主题涉及信号处理。更尤其地,本公开涉及用于图像和视频处理的系统和方法。
背景技术
近年来,广泛流行能够捕捉视频的数码相机。虽然这些用户装置的分辨率和图像质量提高为在某些设置中比得上数码单反相机(DSLR),但是其视频质量依然可能明显比胶片相机的视频质量更差。这个质量差距的原因可以是双重的。首先,与胶片相机相比,手机可以明显更轻。结果,在这种装置上的手持式视频捕捉可以显示更大量的相机抖动。其次,手机摄像头可能具有利用滚动快门(RS)的传感器。在RS相机内,每个图像行可能在略微不同的时间曝光,这会与未抑制的相机运动一起在输出视频内造成“摇晃”。
视频稳定是用于减少由摄像机抖动产生的高频帧到帧跳动的一类技术。在专业照相机中,通常使用机械图像稳定(MIS)系统。例如,在MIS系统中,操作人员可以佩戴分开相机的运动和操作人员的身体运动的安全带。其他MIS系统使相机的光学部件(而非照相机机体本身)稳定。这些系统可以移动透镜或传感器,以补偿小幅俯仰与偏航运动。这些技术实时运行,并且不需要在相机上计算。然而,由于这些系统的价格和尺寸,所以这些系统不适合于移动装置和便宜的相机。数字视频稳定系统可以使用特征跟踪器来稳定拍摄后的视频。然而,这些系统可以对噪音(例如,快速移动的前景目标)敏感并且需要不同的特征来跟踪。结果,基于特征跟踪的数字稳定通常中断,尤其在不利的照明条件和过量的前景运动中。此外,在帧之上提取和匹配视觉提示,可以在计算上昂贵。而且,费用随着视频的分辨率增大。在某些情况下,这可以太昂贵,以至于不能实时进行视频稳定。结果,这种方法很少用于当前的数码相机内。制造商可以反而给高端DSLR选择更稳健的(并且昂贵的)机械稳定解决方案。
发明内容
尤其在所附权利要求中公开了根据本发明的实施方式,涉及一种方法、储存介质以及系统,其中,还可以在另一个权利要求范畴(例如,系统)内要求在一个权利要求范畴(例如,方法)内提及的任何特征。
为了稳定数字视频,在一个实施方式中,计算机实现的方法、系统以及计算机可读介质可以提供数字视频数据,其包括具有相关联的时间戳的一组图像帧以及具有相关联的时间戳的一组相机方向数据。通过最小化在连续的图像帧之间的转动速率可以生成一组平滑的相机方向数据,同时最小化根据一组平滑的相机方向数据重新定向所产生的一组平滑的图像帧内的空白区域的量。
在一个实施方式中,在所产生的一组平滑的图像帧内的空白区域的量可以被最小化为0。
在一个实施方式中,在所产生的一组平滑的图像帧内的空白区域的量可以被最小化为低于阈值。
在一个实施方式中,可以根据这组图像帧相关联的时间戳和这组平滑的相机方向数据,翘曲这组图像帧,以形成一组校正的图像帧。
在一个实施方式中,根据这组图像帧相关联的时间戳和这组平滑的相机方向数据翘曲这组图像帧以形成一组校正的图像帧可以包括将单独的图像帧分成多个子部分。每个子部分可以具有相关联的时间戳和相机方向。根据这组图像帧相关联的时间戳和这组平滑的相机方向数据翘曲这组图像帧以形成一组校正的图像帧可以包括根据相关联的时间戳和相机方向,重新排列每个子部分,以形成单独的校正的图像帧。
在一个实施方式中,可以显示这组校正的图像帧,作为视频。
在一个实施方式中,在所产生的一组平滑的图像帧内的空白区域的量可以被最小化为低于阈值。
在一个实施方式中,低于阈值的空白区域的量可以进行图像修补。
在一个实施方式中,可以从手持式装置的陀螺仪提供具有相关联的时间戳的这组相机方向数据。
在一个实施方式中,可以从手持式装置的相机提供这组图像帧。
在一个实施方式中,可以从包括移动电话和数码相机的手持式装置的陀螺仪提供具有相关联的时间戳的这组相机方向数据。可以从数码相机提供这组图像帧。
在一个实施方式中,生成这组平滑的相机方向数据,包括基于梯度下降的迭代优化。
在一个实施方式中,生成这组平滑的相机方向数据,可以包括基于高斯滤波器的滤波。
在一个实施方式中,生成这组平滑的相机方向数据,可以包括基于时间导数的滤波。
在一个实施方式中,这组相机方向数据可以包括没有任何平移的转动。
在一个实施方式中,这组相机方向数据可以包括具有转动和平移的向量。
在一个实施方式中,由社交网络系统进行这组平滑的相机方向数据的生成。
在一个实施方式中,具有相关联的时间戳的这组图像帧和具有相关联的时间戳的这组相机方向数据可以由社交网络系统的用户上传到社交网络系统中。
在本发明的进一步实施方式中,一个或多个计算机可读暂时性储存介质体现软件,在执行时,其可操作,以执行根据本发明或任何上述实施方式所述的方法。
在本发明的进一步实施方式中,一种系统包括:一个或多个处理器;以及存储器,其耦接至所述处理器,包括由所述处理器可执行的指令,在执行所述指令时,所述处理器可操作,以执行根据本发明或任何上述实施方式所述的方法。
从附图中并且从以下详细描述中,本发明的很多其他特征和实施方式显而易见。
附图说明
图1示出了根据一个实施方式的一个实例针孔照相机模型;
图2示出了根据一个实施方式的两个实例相机方向及其相应的图像平面的描述;
图3示出了根据一个实施方式的由RS相机捕捉的一个实例翘曲图像以及用于校正图像的转换的描述;
图4示出了根据一个实施方式的一个实例数字视频稳定模块;图5示出了根据一个实施方式的输入数据以及在平滑之后产生的数据的示图;
图6示出了根据一个实施方式的用于基于约束的平滑的一个实例方法;
图7示出了根据一个实施方式的系统的一个实例网络图,用于从数字视频中修改一组图像帧,以在社交网络系统内产生稳定的数字视频;
图8示出了根据一个实施方式的可用于实现在本文中描述的一个或多个实施方式的一个实例计算机系统;
示图描述了本发明的各种实施方式,仅仅用于说明的目的,其中,示图使用相似的参考数字,来表示相似的部件。本领域的技术人员从以下讨论中容易认识到,在不背离在本文中描述的原理的情况下,可以使用在图中说明的结构和方法的替换的实施方式。
具体实施方式
使用陀螺仪的数字视频稳定和滚动快门校正
滚动快门校正是一种用于去除由帧内相机移动产生的图像翘曲的技术。高端相机使用电荷耦接装置(CCD)传感器,其具有全局快门(GS)。在GS相机(包括很多DSLR)内,可以同时读出和重置在CCD传感器上的所有像素。因此,在相同的时间间隔内,所有像素收集光。因此,在曝光期间的相机运动在这些装置上造成某种程度的图像模糊。相反,低端相机通常利用互补金属氧化物半导体(CMOS)传感器。尤其地,这些传感器使用滚动快门,其中,依次读出和重置图像行。与CCD传感器相比,这种方法可以需要更少的电路,并且可以使CMOS传感器制造更便宜。因此,CMOS传感器常常用于手机、音乐播放器以及一些低端摄影放像机内。然而,依次读出表示在略微不同的时间窗口期间曝光每行。结果,在行读出期间的相机运动产生翘曲的图像。快速移动的目标也失真。
在RS相机内的图像读出通常在毫秒范围内。因此,RS失真主要由高频相机运动造成。因此,MIS系统可以用于稳定相机。虽然这种方法去除了滚动快门翘曲,但是实际上,MIS系统的价格范围和尺寸使其不适合于RS相机。一些数字滚动快门调整技术可以校正在单个图像内的RS伪影,但是需要用户输入。相反,本公开的一些实施方式可以校正单个图像的RS伪影,而不需要用户输入。
对于视频,使用特征跟踪来估计视频的相机运动,调整在帧序列内的RS,可以具有问题。一旦在RS曝光期间已知相机运动,该运动就可以用于调整帧。由于这种方法依赖于特征跟踪器,所以具有先前在视频稳定的情况下讨论的相同缺点。
数字视频稳定技术可以包括修剪或缩放输入视频帧。这可以允许平移、转动或翘曲单独帧,以抵消握手造成的不想要的变形。修剪的量可以决定可用于去除这些变形的余地(或“摇摆空间”)。例如,如果帧平移太远,那么空白区域(例如,没有像素数据的区域)可能可见。本公开的一些实施方式不仅通过抵消握手消除了相机运动,而且也在防止空白区域出现的同时如上消除了相机运动。应理解的是,还可以实现用于给稳定提供余地的(而非修剪或缩放)其他方法。例如,可以实现图像修补技术,以填充由稳定造成的空白区域。代替修剪或缩放或者除了修剪或缩放以外,可以使用图像修补。例如,在一个实施方式中,可以实现用于确定规定的变形是否令人满意地通过所有像素组产生帧(无论通过图像修补、缩放、修剪等)的功能。
通过计算满足空白区域防止约束条件的平滑相机转动,给数字上稳定的视频提供系统和方法。这可以给规定的修剪或缩放因素产生最大限度的平滑的相机转动。
例如,数字视频稳定工艺可以通过由相机或包括相机的装置捕捉的视频开始,例如,移动电话、平板电脑、手表、可穿戴式设备等。视频可以包括所捕捉的多个连续的图像帧。由于装置的尺寸和重量,所以视频可以摇晃。在相机内的传感器使用的滚动快门可以在输出的图像帧内产生翘曲。陀螺仪可以用于在视频捕捉期间测量相机的运动(例如,转动)。所测量的相机运动可以用于稳定视频并且调整滚动快门,以产生校正了图像的具有输出帧的稳定视频。
本公开的技术可以提高RS相机的视频质量。在一个实施方式中,实现微机电系统(MEMS)陀螺仪,以测量相机转动。还可以实现其他陀螺仪和运动传感装置。陀螺仪测量可以用于执行视频稳定(例如,帧间运动补偿)和滚动快门校正(例如,帧内运动补偿)。这种方法可以在计算上便宜并且稳健,这就使其特别适合于在(例如)移动平台上的实时实现方式。
基于转动摄像机和滚动快门的统一模型的系统和方法可以使用该模型来计算同时进行滚动快门校正和视频稳定的翘曲。可以提供优化技术,这些技术自动校准陀螺仪和相机。这可以允许从单个视频和陀螺仪捕捉中恢复未知的参数(例如,陀螺仪漂移和延迟)以及相机的焦距和滚动快门速度。结果,可以校准陀螺仪和相机硬件的任何组合,无需特殊的实验室设置。包括相机的装置还可以包括运动传感装置,例如,陀螺仪。例如,很多智能电话具有相机和运动传感装置,例如,陀螺仪和加速计。通过这种方式,可以提供实时视频稳定和滚动快门校正,无需使用特征跟踪器或MIS系统。而且,可以实现便宜的MEMS陀螺仪,以直接测量相机运动。惯性测量单元(IMU)可以用于图像去模糊并且用于帮助KLT特征跟踪器。
使用运动传感装置(例如,陀螺仪)允许通过高计算效率进行数字视频稳定和RS调整。甚至在照明不足或大量前景运动之下,这种方法可以稳健,这是因为视频的内容用于运动估计。而且,如上所述,很多具有相机功能的移动电话已经装有陀螺仪或其他运动传感装置。与MIS系统相比,MEMS陀螺仪可以明显更便宜、更通用并且体积更小。
在一个实施方式中,视频稳定可以分三个阶段进行:相机运动估计、运动平滑以及图像翘曲。滚动快门调整可以通过相似的方式进行,除了实际相机运动(而非平滑运动)可以用于翘曲计算以外。如在本文中进一步详细地讨论的,可以在统一框架下在一个翘曲计算中进行视频稳定和滚动快门校正。
在一个实施方式中,可以仅仅在转动方面模制相机运动。应理解的是,在其他实施方式中,除了或者代替转动,可以测量平移。在某些情况下,例如,平移可以难以使用IMU来精确地测量。而且,加速计需要整合两次,以获得平移。相反,陀螺仪测量转动速率。因此,陀螺仪数据可以仅仅需要单个整合,来获得相机的方向。结果,在某些情况下,平移测量可以明显不如方向测量精确。而且,在不同深度移动不同程度的目标使平移测量复杂化。在一个实施方式中,可以实现立体或基于特征的运动恢复结构(SfM)算法,以获得深度信息。在一些实施方式中,可以进行翘曲帧,以便去除平移,但是视察遮蔽可以使其复杂化。
在系统中模制相机平移,可以具有问题。例如,优化器可以陷入局部最小值,同时从特征跟踪器中重构平移。算法可以假设相机使纯粹的平面场景(例如,恒定深度)成像。因此,由于在视频中具有未建模的视差,所以平移重构可以复杂化。
仅仅在转动方面或者主要在转动方面模制相机转动的实施方式可以最小化平移面临的问题。由于平移随着深度的增大而快速地衰减,所以主要由转动造成相机摇动和滚动快门翘曲,并且目标通常离透镜足够远,以便平移相机抖动在图像中不产生明显的运动。
实例相机模型
在一个实施方式中,提供基于针孔照相机模型的转动滚动快门相机模型。图1示出了根据一个实施方式的一个实例针孔照相机模型101。在该场景中从相机中心c到点x的光线在点x处与图像平面相交。因此,在图像平面上的世界的投影取决于相机中心c、焦距f以及在图像平面内的相机轴(ox、oy)的位置。在针孔照相机内,在齐次坐标内的图像点x与在3D世界坐标内的相应点X之间的关系可以由实例等式(1)规定。
x=KX,且X=λK-1x  (1)
在此处,λ是未知的比例因子,并且K是内部摄像头。K-1可以由实例等式(2)规定。
(ox、oy)是在图像平面内的相机轴的原点。并且f是焦距。摄像头的焦距是可以恢复的未知数。可以假设相机具有方形像素并且上部对角线元素设为1。然而,其他实施方式可以扩展这个模型,以考虑其他光学失真的非方形像素。
从高频相机转动中,可以发生翘曲。例如,在快门从顶部滚动到底部的高频相机转动可以促使输出图像翘曲。这个翘曲的图像可以在数学上模制。
世界原点可以设为相机原点。然后,在时间t,在其方向R(t)方面,可以描述相机运动。因此,对于任何场景点X,在时间t的相应图像点x可以由实例等式(3)规定。
x=KR(t)X     (3)
通过混合相机角度Δθ(t)的变化,可以计算这个转动矩阵R(t)εSO(3)。可以使用四元数的球面线性插值(SLERP),以便平稳地插入相机方向并且避免万向节锁。在陀螺仪样品之间的角度的变化可以足够小,以便欧拉角以及转动四元数运行。可以从陀螺仪的测量的转动速率ω(t)中直接获得Δθ(t),如在以下实例等式(4)中规定的。
Δθ(t)=(ω(t+td)+ωd)*Δt     (4)
ωd是陀螺仪漂移,并且td是在陀螺仪与帧样品时间戳之间的延迟。在也可以恢复的那个模型中,这些参数是额外的未知数。
还可以将摇动快门引入相机模型内。在RS相机中,在略微不同的时间曝光每个图像行。因此,在这个曝光期间的相机转动可以确定图像的翘曲。在滚动快门曝光期间的平移相机抖动不大幅影响图像翘曲,这是因为目标通常远离透镜。例如,如果相机左右摇摆,同时快门滚动,那么输出图像翘曲,如在图3中所示。在点x在帧i内成像的时间取决于帧向下的程度。可以确定x在时间t(i,y)中成像,如在以下实例等式(5)中规定的。
t(i,y)=ti+ts*y/h,在此x=(x,y,1)T   (5)
y是与点x对应的图像行。h是在帧内的总行数,ti是第i个帧的时间戳。ts术语表示在帧内向下更远,滚动快门到达该行的时间就更长。因此,ts是读出从上到下逐行进行的全帧。负值ts表示从上到下的滚动快门。在本文中进一步详细描述自动恢复符号和值ts
可以获得在用于两个不同的相机方向的一对帧内的图像点之间的关系。图2示出了根据一个实施方式的两个实例相机方向及其相应的图像平面的图示。图示201包括两个相机方向202和203。相机方向202包括图像平面i。相机方向203包括图像平面j。场景点X的图像出现在两个帧内,其中,光线211与图像平面i和j相交。对于场景点X,分别在两个帧i和j的图像平面内投射的点xi和xj可以由以下实例等式(6)规定。
xi=KB(t(i,yi))X,且xj=KR(t(j,yj))X     (6)
如果这些等式重新设置并且如果代替X,那么获得在帧i内的所有点到帧j内的所有点的映射,如在以下实例等式(7)中规定的。
xj=KR(t(j,yj))RT(t(i,yi))K-1Xi     (7)
虽然相对于相同的视频描述了在两个帧之间的关系,但是在其他实施方式中,可以将帧从根据R(t)转动的一个相机中映射到根据R'(t)转动的另一个相机中。在一个实施方式中,可以假设这两个相机中心位于原点上。可以根据以下实例等式(8)规定将点从一个相机映射到另一个相机中的翘曲矩阵W。
W(t1,t2)=KR′(t1)RT(t2)K-1       (8)
现在,根据以下实例等式(9),更紧凑地规定等式7。
xj=W(t(j,yi),t(i,yi))x3在此R′=R    (9)
我们分别根据图像点xi和xj的这两个图像行yi和yj。这个翘曲矩阵可以用于将在帧i中的点与在帧j中的相应点匹配,同时考虑在这两个帧内的滚动快门的效应。
翘曲矩阵的这个公式提供滚动快门校正和视频稳定。可以产生具有平滑运动和全局快门的合成相机。例如,通过将高斯低通滤波器应用到输入相机的运动中,可以计算这个相机的运动,这就产生一组新的转动R'。对于全局快门,合成相机的滚动快门持续时间ts可以设为0。然后,可以在当前帧i的每个图像行yi处计算W(ti,t(i,yi)),并且可以将翘曲应用到该行中。现在,第一术语W可以仅仅取决于帧时间ti。这个操作可以在合成相机上映射所有输入帧,结果,同时去除滚动快门翘曲和视频摇动。
在某些实施方式中,不为每个图像行yi计算W(ti,t(i,yi))。输入的图像反而可以细分,并且在每个垂直细分中,计算翘曲。图3示出了根据一个实施方式的用于校正翘曲的一个实例转换。翘曲的输入图像帧301显示了由RS相机捕捉的细分的翘曲图像。在每个垂直细分中计算翘曲,如在图像帧311中所示。图像帧311显示了非线性翘曲的分段线性逼近。如所产生的图像帧316所显示的,细分的各种数量足以消除伪影。例如,在一个实施方式中,10个细分可以足以消除视觉伪影。产生输入图像的翘曲网格,该网格是非线性翘曲的分段线性逼近。虽然10个细分可以足以消除任何可见的RS伪影,但是其他实施方式可以包括不同数量的细分。取样方法可以称为反内插法。反内插法可以容易使用顶点着色器在图形处理单元(GPU)上实现。GPU的片段着色器主义使用双线性插值给网格翘曲的图像重新取样。由于双线性反向内插,所以在实际视频中的RS翘曲可以不够强,以产生混叠伪影。结果,反向内插实际上可以良好地运转。使用全局图像翘曲的滚动快门校正可以假设相机转动在滚动快门曝光期间几乎恒定。线性近似可以不校正滚动快门,如在图3中由图像帧306所示。
相机和陀螺仪校准
提供校准技术,用于恢复在本文中描述的未知相机和陀螺仪参数。校准能够直接从陀螺仪数据中计算W。在本文中描述的模型中的未知参数可以包括:相机的焦距f、滚动快门的持续时间ts、在陀螺仪与帧样品时间戳之间的延迟td、以及陀螺仪漂移wd
在某些情况下,制造商可以规定这些参数中的一个或多个(例如,相机的焦距f)。在某些情况下,可以在实验上测量这些参数。例如,快速闪烁显示可以用于测量滚动快门的持续时间ts。然而,这些技术常常不精确并且易于出错。这些技术还可以是冗长的。滚动快门的持续时间通常在毫秒范围内。结果,以td或ts为单位的小幅不对准可以造成滚动快门调整失败。
在一个实施方式中,可以从单个视频和陀螺仪捕捉中估计这些参数。例如,用户可以记录视频和陀螺仪跟踪,同时静止不动,并且在指向固定物体(例如,建筑物)时摇动相机。在不同的实施方式中,修剪的持续时间可以改变。在一个实施方式中,短修剪(例如,10秒或更小的持续时间)可以足以估计所有未知的参数。这个校准步骤仅仅需要进行一次,用于每个相机和陀螺仪设置。
在一个实施方式中,在连续的视频帧中识别匹配点。可以使用(例如)尺度不变特征变换(SIFT)识别匹配点。可以使用(例如)随机样本一致性(RANSAC)丢弃异常值。结果是在捕捉的视频中的所有相邻帧的一组点对应关系xi和xj。考虑这个地面实况,校准可以阐述为优化问题,其中,可以最小化所有点对应关系的均方反投影误差。这在以下实例等式(10)中规定。
多个非线性优化器可以用于最小化目标函数。直接目标函数评估的坐标下降法可以快速聚集,并且在一个实施方式中实现。每次采取一个步骤,其中,目标函数J不减小;步骤方向颠倒并且相应参数的步长减小。在所有参数的步长下降到低于期望的阈值时,例如,在实现目标精度时,算法可以终止。在某些情况下,可以快速发生聚合。例如,在一个实施方式中,可以在2秒或以下的时间内发生聚合,用于在大约10秒的持续时间内的校准视频。
在一个实施方式中,通过设置焦距,可以初始化优化,以便相机具有45°的视角。所有其他参数可以设为0。通过这些初始条件,优化器金额以聚合到数据集的正确解决方案中。更一般而言,通过重启一系列合理参数的坐标下降算法,并且选择最佳解决方案,可以避免陷入局部最小值(例如,在陀螺仪与帧时间戳之间的延迟较大)。例如,正确恢复的参数的平均反投影误差可以大约是1个像素。
在模型中的一个额外未知数可以是陀螺仪到相机的相对方向。例如,围绕陀螺仪的y轴的转动可以与围绕相机的x轴的转动对应。
为了发现陀螺仪方向,可以排列这3个转动轴,并且可以给每个排列运行优化器。最佳地最小化目标的排列可以与相机轴的排序对应。反投影误差可以对于错误的排列明显更大。因此,这种方法实际上可以良好地运行。
虽然假设相机具有垂直摇动快门,但是RS模型可以容易地修改,以给图像列(而非行)效力。找到这两种情况的最小反投影误差,可以表示相机具有水平还是垂直滚动快门。
最后,在校准之前和之后,通过分析视频和陀螺仪信号,可以显示通过校准实现的结果。假设在连续帧之间的转动较小,可以从转动中大致计算在图像中的平移,如在以下实例等式(11)中所规定的。
在此
等式(11)假设滚动快门(例如,ts=0)不造成任何影响,并且可以忽略围绕z轴(例如,ωz)的转动。是沿着x和y的平均平移速度,用于在连续帧内的所有点对应关系。如果优化器聚合到正确的焦距f和陀螺仪延迟td中,那么这两个信号应对准。在校准之前,信号x和f*ωy(t+td)的幅度不匹配,这是因为f的初始估计太低。在td初始化为0时,可以移动信号。在浇筑能治好,信号可以适当地对准,这是因为恢复了精密焦距和陀螺仪延迟。精密陀螺仪(例如,MEMS陀螺仪)能够使陀螺仪数据与图像运动匹配,造成提高的视频稳定和滚动快门校正。
基于约束的转动平滑
在本公开的一些方面,在空白区域不可见或者低于最小阈值的约束条件下,可以提供用于计算最佳平滑的相机运动的系统和方法。图4示出了根据一个实施方式的一个实例数字视频稳定模块。数字视频稳定模块400显示为包括输入模块401、平滑模块402以及翘曲模块403。
输入模块401可以给要稳定的输入提供给平滑模块402和翘曲模块405。输入模块401可以接收与要稳定的视频相关联的输入。例如,输入可以包括一组N个帧Fi、N个帧Fi的相应时间ti以及相机方向θi,其中,i={1..N}。
平滑模块402计算一组新的平滑相机方向Φi,以便满足约束函数f(Φ,t)。平滑模块402可以包括转动模块403和约束确定模块404的速度。
转动模块403的速度计算转动速率,以确保保持足够小的转动速率,用于生成平滑的相机方向。约束确定模块404确定在时间ti处目标方向Φi是否满足约束条件。例如,在一个实施方式中,考虑到在时间ti处目标方向Φi,根据空白区域是否可见,约束函数f(Φ,t)可以分别返回1或0。
例如,约束确定模块404可以确定在连续的图像帧内是否产生最小量的空白区域(例如,低于阈值量)。如果空白区域的量降低为低于阈值量,那么满足约束条件(例如,空白区域的量不超过阈值量),并且目标方向Φ及其相应时间t可以用于生成平滑方向,该方向具有足够小的转动速率,该转动速率不生成高于阈值的空白空间的量。如果不满足约束条件(例如,空白区域的量超过阈值量),那么可以调整相应的目标方向Φ,以保持足够小的转动速率,同时满足约束条件。在一个实施方式中,空白区域的阈值量是0。在另一个实施方式中,空白区域的阈值量接近0或是被确定为人眼不能探测的可以忽略的值。在又一个实施方式中,空白区域的阈值量是防止有效地使用修剪、缩放或图像修补的值,以便消除所有空白区域或者几乎所有空白区域。在其他实施方式中,根据应用和容忍程度,可以根据需要设置空白区域的阈值量。
翘曲模块405根据由平滑模块402计算的这组新的平滑的相机方向Φi生成翘曲帧。例如,翘曲模块405可以实现翘曲函数g(F,Φ,t),该翘曲函数将输入用作帧F、平滑的方向Φ、及其相应的时间t,并且生成翘曲的帧F'。考虑随着由平滑模块402输出的ti平稳地改变的Φi以及函数f和g的合适选择,所产生的翘曲帧F'i构成稳定的输出视频。函数f取决于翘曲函数g的选择,并且可以仅仅表示在应用翘曲函数g之后,空白区域在帧内是否可见。
所实现的特定的翘曲函数可以在不同的实施方式中改变。不同的翘曲函数可以适合于各种相机或期望的近似值。例如,所实现的翘曲函数可以基于相机是否具有滚动快门和小透镜象差或者是否具有全局快门。例如,在一个实施方式中,对于全局快门的相机,可以实现单应性翘曲函数。可以实现其他近似值,例如,仿射变换或在帧的图像空间内转动加上平移。
在一个实施方式中,θi输入是在SO(3)组内的转动。具有各种方法,来表示转动,苦如,通过转动矩阵和四元数。位于SO(3)内的表示可以转换成促进平滑插值的表示,例如,四元数,而非欧拉角。例如,可以从基于图像的特征跟踪器中,或者通过直接测量和整合陀螺仪读数,计算θi转动。在其他实施方式中,可以实现产生相机方向的精确估计的任何其他方法。
虽然在相机转动方面描述了θ,但是在其他实施方式中,θ可以包括在3D空间内保持相机的转动和平移的向量。例如,包括转动和平移的向量可以由运动算法的结构中产生。在一个实施方式中,θ可以包括在帧图像空间内的平移或转动或者其他不太精确的但是可能在计算上更便宜的近似值。只要可以顺利地插入θ并且可以将所产生的Φ输入相应的f和g函数中,就可以实现数字视频稳定。
短语“平滑的相机运动”本文中可以用于表示转动速率的小幅变化。这与相邻帧的转动的小幅变化区分开来。转动速率的小幅变化可以产生随着时间在施加的约束条件之内和之外缓和的方向。相邻帧的转动的小幅变化往返于约束条件插入,同时在执行约束条件时在方向导数内产生不连续性。
基于约束条件的转动平滑可以包括优化,该优化包括根据转动速率和约束条件最小化能量函数。
在一个实施方式中,要最小化的能量函数J可以由以下实例方程(12)规定。
转动Φ可以表示为单位四元数(也称为规范化四元数)。而且,可以使用软约束代替硬约束,如在以下实例方程(13)中所规定的。
λ可以确定执行f约束条件的强度。例如,将λ设置为无穷大,可以确保看不到空白区域,假设满足约束条件。
各种优化算法可以用于通过在实例方程(12)或(13)中显示的形式最小化能量函数J。在一个实施方式中,实现基于实例方程(12)的梯度下降的迭代算法,其中,可以在每个迭代中执行约束。在一个实施方式中,帧可以在时间上平等地隔开,例如,通过每秒钟特定数量的帧记录的相机。通过平等地隔开的帧,可以假设分母恒定,然后,可以从总数中除去。然后,导数可以由以下实例方程(14)规定。
C可以是控制梯度的幅度的常数。在一些实施方式中,这可以由某些形式的梯度下降自动提取,例如,基于动量的方法。在其他实施方式中,这可以根据需要设置,以控制在普通梯度下降内的下降速度。例如,一个实例值可以是C=2/(Δt)2。方程(14)可以由以下实例方程(15)更紧密地规定。
在此 K = 1 - 4 6 - 4 1 T ,
内核(kernel)K可以是拉普拉斯高斯核(LoG)滤波器。LoG滤波器可以接近高斯差分(DoG)或不同盒子(DoB)滤波器。通过使用高斯滤波器缠绕LoG滤波器,还可以调整内核K。这可以控制转动速率应逐渐改变的方式(或者在约束条件之内和之外缓和的程度)。LoG/DoG/DoB和/或高斯滤波器的选择可以影响内核K的系数和尺寸,但是只要内核计算时间导数的形式,优化的方向可以显示在约束条件之内和之外的某些形式的缓和。
在一个实施方式中,将内核应用于四元数中,进行4D向量的线性加权。理论上,使用球面线性插值(slerp)的插值四元数可以是一种精确的方法。对于角度的小幅变化,在每个迭代中的线性插值(lerp)加上所产生的四元数的标准化,以产生足够精确的结果。由于在θ较小时,sin(θ)≈0,所以可以实现这种结果。由握手引起的角度变化(例如,要调整的变化)通常不大。而且,合理程度的修剪、放大或图像修补因素没有留下多少余地。仅仅小角度可以不产生空白区域。因此,由在连续方向的四元数之间的握手引起的角度实际上可以不大,并且近似值可以精确并且在计算上有效。而且,为了快速相机转动(例如,用户快速将镜头转向左方),约束函数f可以控制所产生的方向。因此,线性插值的任何不准确可以不明显。
在一个实施方式中,基于约束条件的转动平滑可以在以下实例算法(1)方面规定。
θi可以在外部回路中预先计算,以便在内部回路中不改变。迭代的数量“numiter”可以设置为足够高,以产生平滑的转动。然后,将所产生的θi馈送到g内,以产生稳定的输出视频。
n(Φ)是在线性插值内的标准化步骤并且可以限定为:n(Φ)=φ/||φ||。选择在算法1中的索引i,以便Φi有效,因此,可以取决于内核K的尺寸。在这个实例中,在边界的转动可以保持固定。在其他实施方式中,边界可以通过外插扩展,允许在优化期间迭代整组方向。整组方向可以规定为以下组。
图5示出了根据一个实施方式的输入数据以及在平滑之后产生的数据的示图。顶部图包括输入数据502,随着时间通过由圆圈表示的约束条件503绘制该示图。底部图包括源自根据在本文中描述的基于约束条件的转动平滑技术平滑的输入数据502的所产生的数据504,包括约束条件503。例如,通过执行较小(或低于阈值)的转动速率(或导数),同时确保满足约束条件(例如,在连续的图像帧内部产生空白区域的阈值量),可以平滑所产生的数据504。转动速率的小幅变化可以产生随着时间在施加的约束条件之内和之外缓和的方向。所产生的数据504在约束条件503之内和之外缓和。另一方面,中间图包括所产生的数据506,包括约束条件503,通过较小的相邻帧的方向的变化,从输入数据502的尝试平滑中产生该数据。相邻帧的转动的小幅变化往返于约束条件插入,同时在执行约束条件时在方向导数内产生不连续性。如图所示,所产生的数据506包括在约束条件503处的导数内的不连续性。
图6示出了根据一个实施方式的用于基于约束的平滑的一个实例方法。在方法600的方框601中,接收视频数据。视频数据可以包括具有相关联的时间戳的一组图像帧。在一个实施方式中,方框601可以由图4的输入模块701执行。
在方框603中,接收具有相关联的时间戳的相机方向数据。例如,包括相机的装置还可以包括方向传感器,例如,陀螺仪、加速计等,在视频的捕捉期间,该传感器生成跟踪相机的方向的相机方向数据。相机方向数据可以包括相关联的时间戳,以使相机方向数据与在视频数据内的这组图像连接或相关联。在某些情况下,相机方向数据可以与视频数据同时接收,例如,与视频数据一起。在一个实施方式中,方框602可以由图4的输入模块701执行。
在一个实施方式中,方框601和603可以由用于捕捉视频的具有相机的装置(例如,智能电话或其他手持式装置)执行。例如,在捕捉视频时,可以接收视频数据和相机方向数据。在另一个实施方式中,方框601和603可以由随后接收由包括相机的装置(例如,智能电话)捕捉的视频数据的单独装置(例如,计算机)执行。例如,视频数据和相机方向数据可以从包括摄像头和方向传感器的装置(例如,具有摄像头的智能电话)中传输或上传给单独装置。
在方框605中,通过最小化在连续的图像帧之间的转动速率生成一组平滑的相机方向数据,同时最小化(或限制)在所产生的一组平滑的图像帧内的产生的空白区域的量。所产生的这组平滑图像帧根据这组平滑的相机方向数据重新定向。
在一个实施方式中,通过最小化在本文中描述的方程(12)或(13),生成这组平滑的相机方向数据。在一个实施方式中,实现基于实例方程(12)的梯度下降的迭代算法,其中,可以在每个迭代中执行约束条件。
在方框607中,这组图像帧被翘曲,以形成一组校正的图像帧。这组图像帧可以根据这组图像帧相关联的时间戳和这组平滑的相机方向数据翘曲。在一个实施方式中,单独的图像帧可以分成多个子部分,每个子部分具有相关联的时间戳和相机方向。每个子部分可以根据相关联的时间戳和相机方向重新排列,以形成单独的校正的图像帧。
降低运动模糊伪影的可见性
在低亮度中拍摄的视频的数字视频稳定通常产生奇怪的运动模糊伪影。由于在去除造成运动模糊的运动(例如,握手)时,运动模块看起来奇怪,所以可以发生这种情况。在某些情况下,需要在稳定的视频内留下刚刚足够的握手,以解释运动轨迹。如果在帧内具有清晰的水平运动轨迹,那么方向需要根据该轨迹水平变化,以便轨迹有意义。如果没有水平运动,那么该轨迹可以无缘无故地看起来在稳定的视频内弹入和弹出,这可以造成可见的运动模糊伪影。
在一个实施方式中,根据以下实例方程(16),计算在相机的快门打开时发生的方向Δθi变化。
ti S可以表示给帧Fi打开快门的时间。ei是帧的曝光持续时间。θ(t)是在时间t的相机方向,这可以通过在以下表达式之上内插来计算。
在上面为使用陀螺仪的数字视频稳定和滚动快门校正描述的实例中,还可以直接从陀螺仪读数中计算Δθi,但是仅仅在快门打开的周期中整合。在方程(1)或方程(2)内部的总和可以修改,如在以下实例方程(17)中所规定的。
方程(17)假设快门在帧的时间戳之前不打开,并且在开始下一个帧之前关闭。在另一个实施方式中,可以不同地计算输入时间戳(例如,ti是在快门关闭时的时间),并且可以增加预先处理的步骤,以调整时间错,满足要求。
在上面描述的实施方式中,保存左运动在帧内追踪的方向的变化。在另一个实施方式中,可以实现近似值,如在以下实例方程(18)中所规定的。
在方程(18)中的近似值可以试图优化,以便优化Φi,以便方向变化沿着运动轨迹Δθi下降,γ比例因子可以控制在平滑度与应遵循运动轨迹的密切程度之间的权衡。
选择良好的缩放因子
例如,如果可容忍的缩放因子(或修剪因子、图像修补因子、或适用于算法的任何其他测度,用于给数字视频稳定提供余地)在1与1.25x之间。对于规定的视频,可以可取地确定最小的缩放因子,该阴虚提供足够的余地,以产生平滑的相机运动。在一个实施方式中,所产生的相机运动的平滑度可以由以下实例方程(19)测量。
在方程(19)中,q测量执行空白区域约束条件的频率。例如,q=0.1的值可以表示平均每10个帧执行f,以便防止空白区域显露。例如,如果20个帧的间距可取地用于在约束条件之内和之外缓和,那么良好的值可以是q=0.05。
为了找出提供期望的q'值的缩放因子z',可以解决算法1,用于一系列缩放因子(比如,z€[1,1.05,1.1,1.15,1.2,1.25])。考虑到通过允许算法1所获得的缩放因子z和所产生的Φi,可以从方程(19)中计算所产生的q值。然后,可以选择提供与q'最接近的q的缩放因子。在另一个缩放因子中,通过在q'处线性内插所产生的数据集(q,z),可以找出缩放因子z'。还可以预先计算典型的手持记录的(q,z)查找表,并且从中间或平均转动速率中估计q'。这种方法可以对于特定的视频不太精确,但是可以更快,这是因为不需要多次运行优化算法。
提高计算效率
具有多种方法来提高算法(1)的效率,例如,引入近似值、使用除了梯度下降以外的优化器等。在一个实施方式中,在方程(15)中的内核K的尺寸可以减小,并且梯度可以更新,如在以下实例方程(20)中所规定的。
∂ J ∂ φ i = C ( 2 KΦ i - KΦ i - 1 - KΦ i + 1 ) , 在此 K = - 1 2 - 1 T - - - ( 20 )
通过减小内核的尺寸(并且重新使用该内核),可以有效地加速计算梯度。在方程(20)中的内核的另一个性能是可以使用球面线性插值更精确地计算ΚΦi值。这可以在不均匀隔开的帧之上进行,如在以下实例方程(21)中所规定的。
甚至更准确地说,可以在方程(20)中确定和使用由Φi和球面线性插值构成的球形切线。可以在以下实例表达式中规定由Φi和球面线性插值构成的球形切线。
φi
在另一个实施方式中,通过提高在本文中描述的算法1的会聚速度,可以提高效率。这可以通过在粗糙到精细模式中运行来实现。例如,通过提供解决每16个方向Φi,算法1可以初始化。然后,线性或三次内插(例如,球面线性插值或小组)可以用于计算在其间的Φi。获得每8个方向的值。算法1可以再次运行,但是现在优化每8个方向的平滑度和约束条件。这可以重复,直到算法1在每个方向上运行。
粗糙或精细地运行,可以允许算法1在每个步骤中运行明显更少的迭代。可以使总体相机运动平滑,然后,可以改善方向,以通过越来越小的帧间距来满足约束条件,同时依然保持平滑。在另一个实施方式中,可以使用不均匀的取样。例如,并未提取每16个帧,可以根据方向偏离先前提取的帧的程度,提取帧。然后,可以细分区段,直到为所有帧计算平滑的方向。
由于更粗糙或不均匀的取样可以带来更大的连续的方向变化,所以使用在方程(21)中提出的球面线性插值修改,可以产生更精确的结果。
实时稳定的实例应用
提供以下内容,作为将算法用于实时设置的一个实例实施方式。通过在内存中保存N个帧,该算法通过滑动窗口的方式运行。指数i可以表示滑动窗口的开始,并且i+N可以表示结束。在滑动窗口内部的方向可以易适应,这是因为可以通过运行算法来更新这些方向。这些方向可以由以下集合(2)规定。
在滑动窗口(例如,Φi-1)的方向可以固定。开始方向可以是Φi-1,并且可以整合转动速率(例如,由陀螺仪测量或者从特征跟踪器中计算),以获得方向{θii+i,...,θi+N}。这可以用作优化算法的输入,并且计算{θii+i,...,θi+N-2}。方向{θi-2i-1}和{θi+N-1=θi+N-1i+N=θi+N}可以保持,并且可以用作边界条件,这些条件确保运动光滑,进入滑动窗口内并且从滑动窗口中出来。
一旦运行该算法,就可以获得方向Φi,该方向可以用于翘曲帧Fi。一旦翘曲帧,就可以向前传递给编码器并且从N个帧的缓冲器中去除。然后,可以从相机中接收新帧,并且滑动窗口可以前进一个帧。
可以重复该程序,直到记录停止并且处理了所有帧。对于最初的帧i=1,{Φ-10}可以未定义,Φ-1和Φ0可以设为身份四元数。一旦接收最后一个帧,就可以将在最后的滑动窗口内部计算的方向用于翘曲其各自的帧,来刷新缓冲器。
在某些情况下,小缓冲器尺寸(例如,N=5)可以不允许在约束条件之内和之外缓和。在这种情况下,需要将约束函数f修改为提高为硬约束的软约束。这可以称为函数f'(Φ,t)。f'返回新方向Φ'而不返回0或1,该方向可被从帧边界推开。更近的方向Φ涉及显示空白区域,f'可以远离空白区域更多地推开所产生的Φ'。然后,算法1可以重新阐述,如在以下实例算法(2)中所规定的。
要注意的是,如果在方向n(Φi-CKΦi)产生空白区域时,f'仅仅返回Φi,那么算法1和2可以等效。使用算法2,算法1的优化率可以提高,函数f'朝着n(Φi-CKΦi)球面线性内插Φi,但是仅仅在空白区域即将出现时停止。
社交网络系统-实例实现方式
图7示出了根据一个实施方式的用于估计用户在网站或应用程序上的注意力的一个实例系统700的网络图。系统700包括一个或多个用户装置710、一个或多个外部系统720、社交网络系统730以及网络750。在一个实施方式中,结合上面描述的实施方式讨论的社交网络系统可以作为社交网络系统730来实现。为了说明的目的,由图7显示的系统700的实施方式包括单个外部系统720和单个用户装置710。然而,在其他实施方式中,系统700可以包括更多的用户装置710和/或更多的外部系统720。在某些实施方式中,社交网络系统730由社交网络运营商操作,而外部系统720与社交网络系统730分开,这是因为这些系统可以由不同的实体操作。然而,在各种实施方式中,社交网络系统730和外部系统720共同操作,以将社交网络服务提供给社交网络系统730的用户(或成员)。在这个意义上,社交网络系统730提供平台或支柱,其他系统(例如,外部系统720)可以使用该平台或支柱来通过互联网将社交网络服务和功能提供给用户。
用户装置710包括一个或多个计算装置,其可以从用户中接收输入并且通过网络750传输和接收数据。在一个实施方式中,用户装置710是传统的计算机系统,例如,执行Microsoft Windows兼容操作系统(OS)、Apple OS X和/或Linux分布。在另一个实施方式中,用户装置710可以是具有计算机功能的装置,例如,智能电话、平板电脑、个人数字助理(PDA)、移动电话等。用户装置710被配置为通过网络750进行通信。用户装置710可以执行应用程序,例如,允许用户装置710的用户与社交网络系统730互动的浏览器应用程序。在另一个实施方式中,用户装置710通过由用户装置710的本地操作系统(例如,iOS和ANDROID)提供的应用程序编程接口(API)与社交网络系统730互动。用户装置710被配置为使用有线和/或无线通信系统通过可以包括局域网和/或广域网的任何组合的网络750与外部系统720和社交网络系统730通信。
在一个实施方式中,网络750使用标准的通信技术和协议。因此,网络750可以包括使用以太网、802.11、全球微波接入互操作性(WiMAX)、3G、4G、CDMA、GSM、LTE、数字用户线路(DSL)等技术的链路。同样,在网络750上使用的网络协议可以包括多协议标签交换(MPLS)、传输控制协议/互联网协议(TCP/IP)、用户数据报协议(UDP)、超文本传输协议(HTTP)、简单邮件传输协议(SMTP)、文件传输协议(FTP)等。可以使用包括超文本标记语言(HTML)和可扩展标记语言(XML)的技术和/或格式表示通过网络750交换的数据。此外,可以使用安全套接层(SSL)、传输层安全协议(TLS)以及互联网协议安全(IPsec)等传统的加密技术来将所有或一些链路加密。
在一个实施方式中,通过使用浏览器应用程序712,处理从外部系统720中以及从社交网络系统730中接收的标记语言文档714,用户装置71可以显示外部系统720和/或社交网络系统730的内容。标记语言文档714识别内容和一个或多个描述该内容的格式化或展示的指令。通过执行包含在标记语言文档714内的指令,浏览器应用程序712使用由标记语言文档714描述的格式化或展示来显示识别的内容。例如,标记语言文档714包括指令,用于生成和显示具有多个帧的网页,这些帧包括从外部系统720和社交网络系统730中检索的文本和/或图像数据。在各种实施方式中,标记语言文档714包括数据文件,其包括可延伸标记语言(XML)数据、可扩展超文本标记语言(XHTML)数据或其他标记语言数据。此外,标记语言文档714可以包括JavaScript对象表示法(JSON)数据、具有填充的JSON(JSONP)以及JavaScript数据,用于在外部系统720与用户装置710之间促进数据交换。在用户装置710上的浏览器应用程序712可以使用JavaScript编译器来将标记语言文档714解码。
标记语言文档714还可以包括或者连接至应用程序或应用程序框架,例如,FLASHTM或UnityTM应用程序、SilverLightTM应用程序框架等。
在一个实施方式中,用户装置710还包括一个或多个Cookie716,其包括数据,表示用户装置710的用户是否登录到社交网络系统730内,该Cookie能够修改从社交网络系统730中传送给用户装置710的数据。
外部系统720包括一个或多个网络服务器,其包括使用网络750传送给用户装置710的一个或多个网页722a、722b。外部系统720与社交网络系统730分开。例如,外部系统720与第一域相关联,而社交网络系统730与单独的社交网络域相关联。包含在外部系统720内的网页722a、722b包括标记语言文档714,其识别内容并且包括规定所识别的内容的格式化或展示的指令。
社交网络系统730包括用于社交网络的一个或多个计算装置,包括多个用户,并且为社交网络的用户提供与社交网络的其他用户通信并且互动的能力。在某些情况下,社交网络可以由示图表示,即,包括矢线和节点的数据结构。其他数据结构还可以用于表示社交网络,包括但不限于数据库、目标、类别、meta元素、文件或任何其他数据结构。社交网络系统730可以由操作人员执行、管理或控制。社交网络系统730的操作人员可以是人类、自动化应用程序或用于管理内容、调节政策以及在社交网络系统730内收集使用度量的一系列应用程序。可以使用任何类型的操作人员。
用户可以参与社交网络系统730,然后,增加与用户希望联系的社交网络系统730的任何数量的其他用户的联系,在本文中使用的术语“朋友”表示用户通过社交网络系统730形成联系、关联性或关系的社交网络系统730的任何其他用户。例如,在一个实施方式中,如果在社交网络系统730中的用户在社交图中表示为节点,那么术语“朋友”可以表示在两个用户之间形成的并且直接连接两个用户的矢线。
用户可以明确地增加联系,或者可以由社交网络系统730根据用户(例如,是相同的学校的校友的用户)的共同特征自动创建联系。例如,第一用户特别选择特定的其他用户作为朋友。在社交网络系统730中的联系通常但是不需要在两个方向中,因此,术语“用户”和“朋友”取决于参考架构。在社交网络系统730的用户之间的联系通常是双边(“双向”)的或“相互的”,但是联系还可以是单向的或“单边的”。例如,如果Bob和Joe都是社交网络系统730的用户并且彼此联系,那么Bob和Joe均为彼此的联系人。如果另一方面,Bob希望与Joe连接,以查看Joe传送给社交网络系统730的数据,但是Joe比希望形成相互联系,那么可以建立单边联系。在用户之间的联系可以是直接联系;然而,社交网络系统730的一些实施方式允许通过一个或多个等级的联系或一个或多个程度的分开来间接联系。
除了在用户之间建立和保持联系并且允许在用户之间互动以外,社交网络系统730还给用户提供对由社交网络系统730支持的各种类型的项目采取行动的能力。这些项目可以包括社交网络系统730的用户可以属于的组或网络(即,人、实体以及概念的社交网络)、用户可能感兴趣的事件或日程条目、用户可以通过社交网络系统730使用的基于计算机的应用程序、允许用户经由由或者通过社交网络系统730通过的服务购买或销售物品的交易、以及与用户可以在社交网络系统730上或者离开该社交网络系统进行的广告的互动。这些仅仅是物品的几个实例,用户可以在社交网络系统730上作用在这些物品上,并且可能具有很多其他的实例。用户可以与能够在社交网络系统730内或者在外部系统720内表示的、与社交网络系统730分开的或者通过网络750与社交网络系统730耦接的任何物体互动。
社交网络系统730还能够连接各种实体。例如,社交网络系统730能够允许用户通过API、网络服务或其他通信信道彼此以及与外部系统720或其他实体互动。社交网络系统730生成和保持“社交图”,包括由多个矢线互连的多个节点。在社交图内的每个节点可以表示可以作用在另一个节点和/或可以由另一个节点作用的实体。社交图可以包括各种类型的节点。节点的类型的实例包括用户、非人实体、内容项目、网页、组、活动、消息、概念以及可以由在社交网络系统730内的目标表示的任何其他物体。在社交图中的两个节点之间的矢线可以表示在这两个节点之间的特定类型的联系或关联性,这可以因节点关系或者因由一个节点在另一个节点上进行的活动而产生。在某些情况下,在节点之间的矢线可以加权。矢线的权重可以表示与矢线相关联的属性,例如,在节点之间的联系或关联性的强度。不同类型矢线可以具有不同的权重。例如,可以给在一个用户“喜欢”另一个用户时创建的矢线提供一个权重,同时可以给在用户与另一个用户交朋友时创建的矢线提供一个不同的权重。
作为一个实例,在第一用户将第二用户视为朋友时,生成在社交图中的矢线,连接表示第一用户的节点和表示第二用户的第二节点。由于各种节点彼此相关或交互,所以社交网络系统730修改连接各种节点的矢线,以反映关系和互动。
社交网络系统730还包括用户生成的内容,该内容增强了用户与社交网络系统730的互动。用户生成的内容可以包括用户可以增加、上传、发送或“张贴”到社交网络系统730中的任何内容。例如,用户将帖子从用户装置710中传送给社交网络系统730。帖子可以包括数据(例如,状态更新或其他文本数据)、位置信息、图像(例如,照片)、视频、链路、音乐或其他相似的数据和/或介质。第三方还可以将内容加入社交网络系统730中。内容“项目”表示为在社交网络系统730内的目标。通过这种方式,鼓励社交网络系统730的用户通过各种通信信道张贴文本和各种类型的介质的内容项目,来彼此通信。这种通信增加了用户彼此的互动,并且增大了用户与社交网络系统730互动的频率。
社交网络系统730包括网络服务器732、API请求服务器734、用户配置文件存储器736、连接存储器738、活动记录器740、活动记录742、认证服务器744以及数字视频稳定模块746。在本发明的一个实施方式中,社交网络系统730可以包括各种应用程序的额外的、更少的或不同的元件。未显示其他元件,例如,网络接口、安全机构、负载平衡器、故障切换服务器、管理和网络操作控制台等,以便不掩盖系统的细节。
用户配置文件存储器736保持关于用户账户的信息,包括传记、人口或其他类型的描述信息,例如,用户声明的或者社交网络系统730推断的工作经历、学历、爱好或偏好、位置等。将该信息储存在用户配置文件存储器736内,以便独特地识别每个用户。社交网络系统730还在连接存储器738中储存描述在不同的用户之间的一个或多个连接的数据。连接信息可以表示具有相似的或共同的工作经历、组成员、爱好或学历的用户。此外,社交网络系统730包括在不同的用户之间的用户定义的连接,允许用户规定其与其他用户的关系。例如,用户定义的连接允许用户生成与和用户的现实关系平行的其他用户的关系,例如,朋友、同事、合作伙伴等。用户可以从预先定义的类型的连接中选择,或者根据需要限定其自己的连接类型。还在连接存储器738中储存与在社交网络系统730中的其他节点的连接,例如,非人实体、储存桶、聚类中心、图像、兴趣、页面、外部系统、概念等。
社交网络系统730保持关于可以与用户互动的目标的数据。为了保持这个数据,用户配置文件存储器736和连接存储器738储存由社交网络系统730保持的相应类型的目标。每个目标类型具有信息字段,其适合于储存适合目标的类型的信息。例如,用户配置文件存储器736包含数据结构,其字段适合于描述用户的账户以及与用户的账户相关的信息。在创建特定类型的新目标时,社交网络系统730初始化相应类型的新数据结构,将唯一目标标识符分配给该数据结构,并且根据需要,开始将数据加入目标中。例如,在用户变成社交网络系统730的用户时,可能发生这种情况,社交网络系统730在用户配置文件存储器736内生成用户配置文件的新实例,将唯一标识符分配给用户账户,并且开始使用用户提供的信息填充用户账户的字段。
连接存储器738包括适合于连接用户与其他用户的连接、与外部系统720的连接或者与其他实体的连接的数据结构。连接存储器738还可以使连接类型与用户的连接相关联,用户的连接可以与用户的隐私设置一起用于调节对关于用户的信息的访问。在本发明的一个实施方式中,用户配置文件存储器736和连接存储器738可以作为联合数据库来实现。
储存在连接存储器738、用户配置文件存储器736以及活动记录742内的数据能够允许社交网络系统730生成社交图,该社交图使用节点来识别各种目标并且侧着移动连接节点,以识别在不同的目标之间的关系。例如,如果第一用户与第二用户在社交网络系统730内建立连接,那么用户配置文件存储器736的第一用户和第二用户的用户账户可以在社交图中用作节点。在连接存储器738储存的第一用户与第二用户之间的连接是在与第一用户和第二用户相关联的节点之间的矢线。继续这个实例,然后,第二用户可以在社交网络系统730内给第一用户发送消息。发送可以储存的消息的活动是在社交图中的这两个节点之间的另一个矢线,表示第一用户和第二用户。此外,可以在社交图内识别和包含消息本身,作为连接至表示第一用户和第二用户的节点的另一个节点。
在另一个实例中,第一用户可以在由社交网络系统730保持的图像内(或者交替地,在由位于社交网络系统730外面的另一个系统保持的图像内)标记第二用户。可以表示图像本身,作为在社交网络系统730内的节点。这个标记活动可以在第一用户与第二用户之间创建矢线,并且在每个用户与图像之间创建矢线,该矢线也是在社交图中的节点。在又一个实例中,如果用户确认参加一个事件,那么用户和事件是从用户配置文件存储器736中获得的节点,其中,事件的参加是在可以从活动记录742中检索的节点之间的矢线。通过生成和保持社交图,社交网络系统730包括描述多种不同类型的目标以及在这些目标之中的互动和连接的数据,提供社会相关信息的丰富来源。
网络服务器732通过网络750连接社交网络系统730和一个或多个用户装置710和/或一个或多个外部系统720。网络服务器732为网页以及其他网页相关的内容(例如,Java、JavaScript、Flash、XML等)服务。网络服务器732可以包括邮件服务器或其他消息功能,用于在社交网络系统730与一个或多个用户装置710之间接收和路由消息。这些消息可以是即时消息、队列消息(例如,电子邮件)、文本和SMS消息或任何其他合适的消息格式。
API请求服务器734允许一个或多个外部系统720和用户装置710通过调用一个或多个API功能来从社交网络系统730中调用访问信息。API请求服务器734还可以允许外部系统720通过调用API来将信息发送给社交网络系统730。在一个实施方式中,外部系统720通过网络750将API请求发送给社交网络系统730,并且API请求服务器734接收API请求。通过调用与API请求相关联的API,API请求服务器734处理该请求,以生成合适的响应,API请求服务器734通过网络750将响应传送给外部系统720。例如,响应于API请求,API请求服务器734收集与用户相关联的数据(例如,登录外部系统720内的用户连接),并且将收集的数据传送给外部系统720。在另一个实施方式中,用户装置710通过与外部系统720相同的方式通过API与社交网络系统730通信。
活动记录器740能够从网络服务器732中接收关于在社交网络系统730上或者离开该社交网络系统的用户活动的通信。活动记录器740使用关于用户活动的信息填充活动记录742,能够允许社交网络系统730发现由其用户在社交网络系统730内并且在社交网络系统730外面采取的各种行动。通过保持在活动记录742内或者保持在相似的数据库或其他数据储存库内的信息,特定的用户相对于在社交网络系统730上的另一个节点采取的任何行动可以与每个用户的账户相关联。所识别并且储存的用户在社交网络系统730内采取的行动的实例可以包括(录入)增加与另一个用户的连接,将消息发送给另一个用户,从另一个用户中读取消息,查看与另一个用户相关联的内容,参加另一个用户张贴的事件,张贴图像,尝试张贴图像,或者与另一个用户或另一个目标互动的其他活动。在用户在社交网络系统730内采取行动时,将行动记录在活动记录742内。在一个实施方式中,社交网络系统730保持活动记录742,作为条目的数据库。在社交网络系统730内采取行动时,将行动的条目加入活动记录742中。活动记录742可以称为行动记录。
此外,用户活动可以与在位于社交网络系统730的外面的实体内发生的概念和活动相关联,例如,与社交网络系统730分开的外部系统720。例如,活动记录器740可以从网络服务器732中接收描述用户与外部系统720的互动的数据。在这个实例中,外部系统720根据在社交图中的结构化行动和目标报告用户的互动。
用户与外部系统720互动的活动的其他实例包括用户表示对外部系统720或另一个实体感兴趣,用户将讨论外部系统720或在外部系统720内的网页722a的评论张贴到社交网络系统730中,用户将统一资源定位符(URL)或与外部系统720相关联的其他标识符张贴到社交网络系统730中,用户参加与外部系统720相关联的事件,或者与外部系统720相关的用户采取的任何其他行动。因此,活动记录742可以包括描述在社交网络系统730的用户与和社交网络系统730分开的外部系统720之间的互动的活动。
认证服务器744执行社交网络系统730的用户的一个或多个隐私设置。用户的隐私设置确定可以分享与用户相关联的特定信息的方式。隐私设置包括与用户相关联的特定信息的规范以及可以分享信息的一个或多个实体的规范。可以分享信息的实体的实例可以包括其他用户、应用程序、外部系统720或可以潜在地访问信息的任何实体。用户可以分享的信息包括用户账户信息,例如,配置文件照片、与用户相关联的电话号码、用户的联系人、用户采取的行动(例如,增加联系人)、改变用户配置文件信息等。
可以通过不同的粒度等级提供隐私设置规范。例如,隐私设置可以识别要与其他用户分享的特定信息;隐私设置识别工作电话号码或者特定的一组相关信息,例如,个人信息,包括配置文件照片、家庭电话号码以及状态。交替地,隐私设置可以适用于与用户相关联的所有信息。还可以通过各种粒度等级规定可以访问特定信息的这组实体的规范。可以分享信息的各种组的实体可以包括(例如)用户的所有朋友、朋友的所有朋友、所有应程序或者所有外部系统720。一个实施方式允许这组实体的规范包括实体的枚举。例如,用户可以提供允许访问某些信息的一系列外部系统720。另一个实施方式允许规范包括一组实体以及不允许访问信息的异常。例如,用户可以允许所有外部系统720访问用户的工作信息,但是规定不允许访问工作信息的一系列外部系统720。某些实施方式调用不允许访问某些信息的异常列表,即,“方块列表”。阻止属于由用户规定的方块列表的外部系统720访问在隐私设置中规定的信息。能够具有信息的规范的粒度以及分享信息的实体的规范的粒度的各种组合。例如,所有个人信息可以与朋友分享,而所有工作信息可以与一个或多个朋友分享。
认证服务器744包含用于确定与用户相关联的某些信息是否可以由用户的朋友、外部系统720和/或其他应用程序和实体访问的逻辑。外部系统720需要认证服务器744的认证,以访问用户的更隐蔽并且敏感的信息,例如,用户的工作电话号码。根据用户的隐私设置,认证服务器744确定是否允许另一个用户、外部系统720、他应用程序或另一个实体访问与用户向关联的信息,包括关于用户采取的行动的信息。
社交网络系统730可以包括数字视频稳定模块746。数字视频稳定模块746可以在空白区域看不见或者低于最低阈值的约束条件下计算一组平滑的相机方向。然后,数字视频稳定模块746可以根据这组新平滑的相机方向生成翘曲的帧。在一个实施方式中,数字视频稳定模块746可以作为图4的数字视频稳定400来实现。
硬件实现方式
前述工艺和特征可以由很多机器和计算机系统架构并且在很多网络和计算环境中实现。图8示出了根据本发明的一个实施方式的可用于实现在本文中描述的一个或多个实施方式的计算机系统800的一个实例。计算机系统800包括指令组,用于促使计算机系统800执行在本文中讨论的工艺和特征。计算机系统800可以连接(例如,联网)至其他机器。在网络部署中,计算机系统800可以在客户端服务器网络环境中的服务器机器或客户端机器的容量中或者在对等(或分布式)网络环境中作为对等机器操作。在本发明的一个实施方式中,计算机系统800可以是在本文中描述的社交网络系统的元件。在本发明的一个实施方式中,计算机系统800可以是在构成所有或一部分社交网络系统830的多个服务器中的一个服务器。
计算机系统800包括处理器802、缓存804以及一个或多个可执行的模块和驱动器,其储存在计算机可读介质上,针对在本文中描述的工艺和特征。此外,计算机系统800包括高性能输入/输出(I/O)总线806和标准I/O总线808。主桥810使处理器802与高性能I/O总线806耦接,而I/O总线桥812使这两个总线806和808彼此耦接。系统存储器814和一个或多个网络接口816与高性能I/O总线806耦接。计算机系统800可以进一步包括视频内存以及与视频内存耦接的显示装置(未显示)。大容量存储介质818和I/O端口820耦接至标准I/O总线808。计算机系统800可以可选地包括键盘和定位装置、显示装置、或耦接至标准I/O总线808的其他输入/输出装置(未显示)。这些部件共同旨在表示广泛类别的计算机硬件系统,包括但不限于基于由位于加利福尼亚圣克拉拉的Intel公司制造的x86兼容的处理器以及由位于加利福尼亚森尼韦尔的AdvancedMicro Devices(AMD)公司制造的x86兼容的处理器以及任何其他合适的处理器的计算机系统。
操作系统管理和控制计算机系统800的操作,包括将数据输入软件应用程序(未显示)中并且从软件应用程序中输出数据。操作系统在软件应用程序之间提供接口,在系统和系统的硬件元件上执行这些软件应用程序。可以使用任何合适的操作系统,例如,LINUX操作系统、从位于加利福尼亚库比蒂诺的Apple Computer公司可购买到的Apple Macintosh操作系统、UNIX操作系统、操作系统、BSD操作系统等。能够具有其他实现方式。
下面更详细地描述计算机系统800的部件。尤其地,网络接口816在计算机系统800与任何广泛的网络之间提供通信,例如,以太网(例如,IEEE 802.3)网络、背板等。大容量存储介质818给数据和编程指令提供永久储存,以执行由上面确定的各自的计算系统实现的上述工艺和特征,而在由处理器802执行时,系统存储器814(例如,DRAM)给数据和编程指令提供暂时储存。I/O端口820可以是在额外的外围装置之间提供通信的一个或多个串联和/或并联的通信端口,这些外围装置可以耦接至计算机系统800。
计算机系统800可以包括各种系统架构,并且可以重新设置计算机系统800的各种元件。例如,缓存804可以与处理器802在芯片上。交替地,缓存804和处理器802可以共同包装,作为“处理器模块”,处理器802成为“处理器核心”。本发明的某些实施方式不需要也不包括所有以上元件。例如,与标准I/O总线808耦接的外围装置可以耦接至高性能I/O总线806。此外,在一些实施方式中,仅仅具有单个总线,计算机系统800的元件耦接至所述单个总线。而且,计算机系统800可以包括额外的元件,例如,额外的处理器、储存装置或存储器。
通常,在本文中描述的工艺和特征可以作为操作系统或专门应用、元件、程序、目标、模块或称为“程序”的一系列指令的一部分来实现。例如,一个或多个程序可以用于执行在本文中描述的特定工艺。程序通常在计算机系统800内包括在各种存储器以及储存装置的一个或多个指令,在由一个或多个处理器读取和执行时,这些指令促使计算机系统800执行操作,以执行在本文中描述的工艺和特征。在本文中描述的工艺和特征可以在软件、固件、硬件(例如,专用集成电路)或其任何组合中实现。
在一个实现方式中,在本文中描述的工艺和特征作为由计算机系统800在分布式计算环境中单独地或共同地运行的一系列可执行模块来实现。前述模块可以由硬件、储存在计算机可读介质(或机器可读介质)上的可执行模块或这两者的组合来实现。例如,模块可以包括由在硬件系统内的处理器(例如,处理器802)执行的多个或一系列指令。首先,这系列指令可以储存在储存装置(例如,大容量存储介质818)上。然而,这系列指令可以储存在任何合适的计算机可读储存介质上。而且,这系列指令不需要储存在本地,可以通过网络接口816从远程储存装置(例如,在网络上的服务器)中接收。将指令从储存装置(例如,大容量存储介质818)中复制到系统存储器814内,然后,由处理器802访问和执行。在各种实现方式中,一个或多个模块可以由在一个或多个位置中的一个处理器或多个处理器执行,例如,在平行处理环境中的多个服务器。
计算机可读介质的实例包括但不限于可记录型介质,例如,易失性和非易失性存储器装置;固态存储器;软盘以及其他可移动磁盘;硬盘驱动器;磁性介质(例如,只读型光盘存储器(CD ROMS)、数字通用光盘(DVD));其他相似的非暂时(或暂时)的、有形的(非有形的)储存介质;或适合于储存、编码或传送一系列指令的任何类型的介质,以供计算机系统800执行,以执行在本文中描述的工艺和特征中的任何一个或多个。
为了解释的目的,陈述了多个具体细节,以便提供说明书的彻底理解。然而,对于本领域的技术人员,显然可以实践本公开的实施方式,无需这些具体细节。在某些情况下,通过方框图的形式显示模块、结构、工艺、特征以及装置,以免说明书晦涩难懂。在其他情况下,功能方框图和流程图显示为表示数据和逻辑流程。可以通过除了在本文中明确描述和描绘的方式以外的方式不同地组合、分开、去除、重新排列以及更换方框图和流程图的元件(例如,模块、方框、结构、装置、特征等)。
在本说明书中引用“一个实施方式”、“实施方式”、“其他实施方式”、“一系列实施方式”、“一些实施方式”、“各种实施方式”等,表示在本公开的至少一个实施方式中包括与这些实施方式一起描述的独特特点、设计、结构或特征。例如,在说明书的不同地方出现(例如)短语“在一个实施方式中”、“在实施方式中”,不必均表示相同的实施方式,也不必是与其他实施方式互相排斥的单独的或交替的实施方式。而且,无论是否明确引用“实施方式”等,都描述了各种特征,这些特征可以不同地组合并且包含在一些实施方式中,但是还可以在其他实施方式中不同地省略。同样,描述了各种特征,这些特征对于一些实施方式可以是优先权或要求,但是对于其他实施方式不是。
主要出于可读性和指导的目的选择在本文中描述的语言,并且可以不选择,以描述或限制本发明的主题。因此,其目的在于,本发明的范围不受到这个详细描述的限制,而是受到根据其在应用程序上发行的任何权利要求的限制。因此,本发明的实施方式的公开旨在说明而非限制在以下权利要求中陈述的本发明的范围。

Claims (13)

1.一种计算机实现的方法,包括:
由计算机系统提供数字视频数据,所述数字视频数据包括具有相关联的时间戳的一组图像帧以及具有相关联的时间戳的一组相机方向数据;并且
通过最小化在连续的图像帧之间的转动速率,由所述计算机系统生成一组平滑的相机方向数据,同时最小化根据所述组平滑的相机方向数据重新定向所产生的一组平滑的图像帧内的空白区域的量。
2.根据权利要求1所述的方法,其中,在所产生的所述组平滑的图像帧内的所述空白区域的量被最小化为0或低于阈值。
3.根据权利要求1或2所述的方法,进一步包括根据所述组图像帧的相关联的时间戳和所述组平滑的相机方向数据,翘曲所述组图像帧,以形成一组校正的图像帧。
4.根据权利要求3所述的方法,其中,
其中,根据所述组图像帧的相关联的时间戳和所述组平滑的相机方向数据翘曲所述组图像帧以形成一组校正的图像帧包括:
将单独的图像帧分成多个子部分,每个子部分具有相关联的时间戳和相机方向;并且
根据相关联的时间戳和相机方向,重新排列每个子部分,以形成单独的校正的图像帧。
5.根据权利要求4所述的方法,
进一步包括显示所述组校正的图像帧,作为视频。
6.根据权利要求1到5中任一项所述的方法,其中,从手持式装置的陀螺仪提供具有相关联的时间戳的所述组相机方向数据;和/或
其中,从手持式装置的相机提供所述组图像帧。
7.根据权利要求1到6中任一项所述的方法,其中,从包括移动电话和数码相机的手持式装置的陀螺仪提供具有相关联的时间戳的所述组相机方向数据,并且其中,从所述数码相机提供所述组图像帧。
8.根据权利要求1到7中任一项所述的方法,其中,生成所述组平滑的相机方向数据包括基于梯度下降的迭代优化和/或基于高斯滤波器的滤波和/或基于时间导数的滤波。
9.根据权利要求1到8中任一项所述的方法,其中,所述组相机方向数据包括没有任何平移的转动和/或具有转动和平移的向量。
10.根据权利要求1到9中任一项所述的方法,其中,由社交网络系统进行所述组平滑的相机方向数据的生成。
11.根据权利要求10所述的方法,其中,具有相关联的时间戳的所述组图像帧和具有相关联的时间戳的所述组相机方向数据由所述社交网络系统的用户上传到所述社交网络系统中。
12.一个或多个计算机可读暂时性储存介质,包含在执行时能操作以执行根据权利要求1到10中任一项所述的方法的软件。
13.一种系统,包括:一个或多个处理器;以及存储器,耦接至所述处理器,所述存储器包括由所述处理器可执行的指令,所述处理器在执行所述指令时能操作以执行根据权利要求1到10中任一项所述的方法。
CN201380072682.0A 2012-12-11 2013-12-11 用于通过基于约束的转动平滑的数字视频稳定的系统和方法 Active CN104982027B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201261735976P 2012-12-11 2012-12-11
US61/735,976 2012-12-11
US14/101,252 US9071756B2 (en) 2012-12-11 2013-12-09 Systems and methods for digital video stabilization via constraint-based rotation smoothing
US14/101,252 2013-12-09
EP13196486.8A EP2744192B1 (en) 2012-12-11 2013-12-10 Systems and methods for digital video stabilization via constraint-based rotation smoothing
EP13196486.8 2013-12-10
PCT/US2013/074444 WO2014093517A1 (en) 2012-12-11 2013-12-11 Systems and methods for digital video stabilization via constraint-based rotation smoothing

Publications (2)

Publication Number Publication Date
CN104982027A true CN104982027A (zh) 2015-10-14
CN104982027B CN104982027B (zh) 2018-07-27

Family

ID=49726634

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380072682.0A Active CN104982027B (zh) 2012-12-11 2013-12-11 用于通过基于约束的转动平滑的数字视频稳定的系统和方法

Country Status (11)

Country Link
US (4) US9071756B2 (zh)
EP (1) EP2744192B1 (zh)
JP (3) JP6608700B2 (zh)
KR (1) KR102003012B1 (zh)
CN (1) CN104982027B (zh)
AU (3) AU2013359372B2 (zh)
BR (1) BR112015013565A2 (zh)
CA (1) CA2893802C (zh)
IL (1) IL239249B (zh)
MX (1) MX345710B (zh)
WO (1) WO2014093517A1 (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108702450A (zh) * 2016-02-19 2018-10-23 快图有限公司 稳定图像序列的方法
CN110235431A (zh) * 2019-04-30 2019-09-13 深圳市大疆创新科技有限公司 电子增稳方法、图像采集设备、可移动平台
CN110430365A (zh) * 2019-08-26 2019-11-08 Oppo广东移动通信有限公司 防抖方法、装置、计算机设备和存储介质
CN111527524A (zh) * 2017-11-03 2020-08-11 脸谱公司 增强现实效果的动态优雅降级
CN112136314A (zh) * 2018-05-18 2020-12-25 高途乐公司 用于稳定视频的系统和方法
CN112561839A (zh) * 2020-12-02 2021-03-26 北京有竹居网络技术有限公司 视频裁剪方法、装置、存储介质及电子设备
US11196929B2 (en) 2018-08-20 2021-12-07 Sony Semiconductor Solutions Corporation Signal processing device, imaging device, and signal processing method
US11477382B2 (en) 2016-02-19 2022-10-18 Fotonation Limited Method of stabilizing a sequence of images
US11979662B2 (en) 2018-09-19 2024-05-07 Gopro, Inc. Systems and methods for stabilizing videos

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140184615A1 (en) * 2012-12-28 2014-07-03 Nokia Corporation Sequential Rendering For Field-Sequential Color Displays
US9554048B2 (en) * 2013-09-26 2017-01-24 Apple Inc. In-stream rolling shutter compensation
CN104954631B (zh) * 2014-03-25 2018-02-27 腾讯科技(深圳)有限公司 一种视频处理方法、装置和系统
US9413963B2 (en) 2014-05-30 2016-08-09 Apple Inc. Video image stabilization
US9674438B2 (en) 2014-07-06 2017-06-06 Apple Inc. Low light video image stabilization strength modulation
CN105306804B (zh) * 2014-07-31 2018-08-21 北京展讯高科通信技术有限公司 智能终端及其视频稳像方法及装置
US9596411B2 (en) 2014-08-25 2017-03-14 Apple Inc. Combined optical and electronic image stabilization
US9398217B2 (en) 2014-10-15 2016-07-19 Microsoft Technology Licensing, Llc Video stabilization using padded margin pixels
US9392174B2 (en) * 2014-12-11 2016-07-12 Facebook, Inc. Systems and methods for time-lapse selection subsequent to capturing media content
US9948920B2 (en) 2015-02-27 2018-04-17 Qualcomm Incorporated Systems and methods for error correction in structured light
US10068338B2 (en) 2015-03-12 2018-09-04 Qualcomm Incorporated Active sensing spatial resolution improvement through multiple receivers and code reuse
US9530215B2 (en) 2015-03-20 2016-12-27 Qualcomm Incorporated Systems and methods for enhanced depth map retrieval for moving objects using active sensing technology
US9635339B2 (en) 2015-08-14 2017-04-25 Qualcomm Incorporated Memory-efficient coded light error correction
US9846943B2 (en) 2015-08-31 2017-12-19 Qualcomm Incorporated Code domain power control for structured light
WO2017087537A1 (en) 2015-11-16 2017-05-26 Google Inc. Stabilization based on accelerometer data
CN105282400B (zh) * 2015-11-20 2018-07-13 北京理工大学 一种基于几何插值的高效视频稳定方法
EP3391642B1 (en) 2015-12-16 2020-02-05 GoPro, Inc. Dynamic synchronization of frame rate to a detected cadence in a time lapse image sequence
CN108432222A (zh) * 2015-12-22 2018-08-21 深圳市大疆创新科技有限公司 支持包围式成像的系统、方法和移动平台
US9787902B1 (en) 2016-06-10 2017-10-10 Apple Inc. Video image stabilization with enforced stabilization constraints
AU2017344761B2 (en) 2016-10-20 2022-09-15 Spookfish Innovations Pty Ltd An image synthesis system
US10547784B2 (en) * 2017-06-19 2020-01-28 SighTour Technologies, Inc. Image stabilization
US10477064B2 (en) * 2017-08-21 2019-11-12 Gopro, Inc. Image stitching with electronic rolling shutter correction
US11245887B2 (en) 2017-09-14 2022-02-08 Samsung Electronics Co., Ltd. Electronic device and operation method therefor
US10462370B2 (en) 2017-10-03 2019-10-29 Google Llc Video stabilization
US10171738B1 (en) 2018-05-04 2019-01-01 Google Llc Stabilizing video to reduce camera and face movement
WO2019222544A1 (en) * 2018-05-16 2019-11-21 Iooi System and method for navigating content from multiple users on a digital device
WO2019222059A1 (en) * 2018-05-16 2019-11-21 Gopro, Inc. Systems and methods for providing rotational motion correction
KR102573302B1 (ko) 2018-10-10 2023-08-31 삼성전자 주식회사 영상의 안정화를 위한 카메라 모듈, 그것을 포함하는 전자 장치 및 전자 장치의 영상 안정화 방법
JP7206797B2 (ja) * 2018-10-22 2023-01-18 株式会社リコー 撮像装置、情報処理装置、補正値計算方法およびプログラム
US10911680B2 (en) * 2018-12-28 2021-02-02 Intel Corporation Method and system of geolocation and attitude correction for mobile rolling shutter cameras
CN109379536B (zh) * 2018-12-29 2020-07-31 深圳看到科技有限公司 画面生成方法、装置、终端及对应的存储介质
EP3987763A4 (en) * 2019-06-21 2023-07-12 GoPro, Inc. VIDEO STABILIZATION SYSTEMS AND METHODS
US11470254B1 (en) 2019-06-21 2022-10-11 Gopro, Inc. Systems and methods for assessing stabilization of videos
KR102176273B1 (ko) * 2019-07-04 2020-11-09 재단법인대구경북과학기술원 동영상 수평 조정 시스템, 방법 및 컴퓨터 프로그램
CN112492223B (zh) * 2019-07-23 2023-05-12 影石创新科技股份有限公司 一种相机镜头平滑处理方法、装置及便携式终端
US11138804B2 (en) 2019-08-02 2021-10-05 Fmr Llc Intelligent smoothing of 3D alternative reality applications for secondary 2D viewing
US11948242B2 (en) 2019-08-02 2024-04-02 Fmr Llc Intelligent smoothing of 3D alternative reality applications for secondary 2D viewing
US11694311B2 (en) * 2020-03-04 2023-07-04 Nec Corporation Joint rolling shutter image stitching and rectification
US11190689B1 (en) 2020-07-29 2021-11-30 Google Llc Multi-camera video stabilization
US11405557B1 (en) * 2021-07-20 2022-08-02 Locus Robotics Corp. Rolling shutter compensation for moving digital optical camera sensors
US11863791B1 (en) 2021-11-17 2024-01-02 Google Llc Methods and systems for non-destructive stabilization-based encoder optimization

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101917602B (zh) * 2010-08-26 2012-07-04 四川大学 基于高分辨率摄像头的数字视频智能监控设备及数据处理方法
US20120307084A1 (en) * 2011-06-06 2012-12-06 Mantzel William E Correcting rolling shutter using image stabilization

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AUPO793897A0 (en) 1997-07-15 1997-08-07 Silverbrook Research Pty Ltd Image processing method and apparatus (ART25)
US6552744B2 (en) 1997-09-26 2003-04-22 Roxio, Inc. Virtual reality camera
US7015954B1 (en) 1999-08-09 2006-03-21 Fuji Xerox Co., Ltd. Automatic video system using multiple cameras
US7119837B2 (en) * 2002-06-28 2006-10-10 Microsoft Corporation Video processing system and method for automatic enhancement of digital video
US7495694B2 (en) 2004-07-28 2009-02-24 Microsoft Corp. Omni-directional camera with calibration and up look angle improvements
US8207964B1 (en) 2008-02-22 2012-06-26 Meadow William D Methods and apparatus for generating three-dimensional image data models
US7542034B2 (en) * 2004-09-23 2009-06-02 Conversion Works, Inc. System and method for processing video images
JP4793120B2 (ja) 2006-06-21 2011-10-12 ソニー株式会社 手振れ補正方法、手振れ補正方法のプログラム、手振れ補正方法のプログラムを記録した記録媒体及び手振れ補正装置
US20080165280A1 (en) 2007-01-05 2008-07-10 Deever Aaron T Digital video stabilization with manual control
US7817187B2 (en) * 2007-06-27 2010-10-19 Aptina Imaging Corporation Image blur correction using a secondary camera
JP5251410B2 (ja) * 2008-10-03 2013-07-31 株式会社ニコン カメラワーク算出プログラム、撮像装置及びカメラワーク算出方法
US8363128B2 (en) * 2009-08-10 2013-01-29 Samsung Electronics Co., Ltd. Image processing apparatus and image processing method
US20110085728A1 (en) * 2009-10-08 2011-04-14 Yuli Gao Detecting near duplicate images
JP2011114649A (ja) * 2009-11-27 2011-06-09 Sanyo Electric Co Ltd 撮像装置
US8488010B2 (en) * 2010-09-21 2013-07-16 Hewlett-Packard Development Company, L.P. Generating a stabilized video sequence based on motion sensor data
US8531535B2 (en) 2010-10-28 2013-09-10 Google Inc. Methods and systems for processing a video for stabilization and retargeting
US8964041B2 (en) * 2011-04-07 2015-02-24 Fr Vision Ab System and method for video stabilization of rolling shutter cameras
JP5734082B2 (ja) 2011-05-11 2015-06-10 キヤノン株式会社 撮像装置及びその制御方法、並びにプログラム
US20130107066A1 (en) * 2011-10-27 2013-05-02 Qualcomm Incorporated Sensor aided video stabilization
US20130121559A1 (en) * 2011-11-16 2013-05-16 Sharp Laboratories Of America, Inc. Mobile device with three dimensional augmented reality
US9041819B2 (en) 2011-11-17 2015-05-26 Apple Inc. Method for stabilizing a digital video
US20130162518A1 (en) * 2011-12-23 2013-06-27 Meghan Jennifer Athavale Interactive Video System

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101917602B (zh) * 2010-08-26 2012-07-04 四川大学 基于高分辨率摄像头的数字视频智能监控设备及数据处理方法
US20120307084A1 (en) * 2011-06-06 2012-12-06 Mantzel William E Correcting rolling shutter using image stabilization

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108702450B (zh) * 2016-02-19 2020-10-27 快图有限公司 用于图像捕获设备的相机模块
US11477382B2 (en) 2016-02-19 2022-10-18 Fotonation Limited Method of stabilizing a sequence of images
CN108702450A (zh) * 2016-02-19 2018-10-23 快图有限公司 稳定图像序列的方法
CN111527524A (zh) * 2017-11-03 2020-08-11 脸谱公司 增强现实效果的动态优雅降级
CN112136314A (zh) * 2018-05-18 2020-12-25 高途乐公司 用于稳定视频的系统和方法
US11196929B2 (en) 2018-08-20 2021-12-07 Sony Semiconductor Solutions Corporation Signal processing device, imaging device, and signal processing method
US11979662B2 (en) 2018-09-19 2024-05-07 Gopro, Inc. Systems and methods for stabilizing videos
CN110235431A (zh) * 2019-04-30 2019-09-13 深圳市大疆创新科技有限公司 电子增稳方法、图像采集设备、可移动平台
US11025823B2 (en) 2019-04-30 2021-06-01 SZ DJI Technology Co., Ltd. Electronic stabilization method, image acquisition device, and movable platform
CN110235431B (zh) * 2019-04-30 2021-08-24 深圳市大疆创新科技有限公司 电子增稳方法、图像采集设备、可移动平台
CN110430365B (zh) * 2019-08-26 2021-10-01 Oppo广东移动通信有限公司 防抖方法、装置、计算机设备和存储介质
CN110430365A (zh) * 2019-08-26 2019-11-08 Oppo广东移动通信有限公司 防抖方法、装置、计算机设备和存储介质
CN112561839A (zh) * 2020-12-02 2021-03-26 北京有竹居网络技术有限公司 视频裁剪方法、装置、存储介质及电子设备

Also Published As

Publication number Publication date
CN104982027B (zh) 2018-07-27
EP2744192A2 (en) 2014-06-18
CA2893802A1 (en) 2014-06-19
EP2744192B1 (en) 2021-05-19
US20150002686A1 (en) 2015-01-01
JP6937809B2 (ja) 2021-09-22
CA2893802C (en) 2019-08-13
AU2017200248A1 (en) 2017-02-02
BR112015013565A2 (pt) 2019-12-17
KR20150095782A (ko) 2015-08-21
EP2744192A3 (en) 2016-09-14
KR102003012B1 (ko) 2019-07-24
MX2015007499A (es) 2015-12-15
JP6605640B2 (ja) 2019-11-13
AU2017200248B2 (en) 2017-12-14
US20170180647A1 (en) 2017-06-22
US20140160309A1 (en) 2014-06-12
JP2020005326A (ja) 2020-01-09
AU2013359372A1 (en) 2015-07-02
IL239249B (en) 2019-08-29
AU2013359372B2 (en) 2016-10-13
US20150222818A1 (en) 2015-08-06
JP2018085775A (ja) 2018-05-31
IL239249A0 (en) 2015-07-30
JP2016501497A (ja) 2016-01-18
US9554045B2 (en) 2017-01-24
US9071756B2 (en) 2015-06-30
WO2014093517A1 (en) 2014-06-19
MX345710B (es) 2017-02-13
AU2018201829B2 (en) 2019-06-13
JP6608700B2 (ja) 2019-11-20
US10511773B2 (en) 2019-12-17
AU2018201829A1 (en) 2018-04-12
US9674440B2 (en) 2017-06-06

Similar Documents

Publication Publication Date Title
CN104982027A (zh) 用于通过基于约束的转动平滑的数字视频稳定的系统和方法
US10657667B2 (en) Systems and methods for content streaming
US10657702B2 (en) Systems and methods for content streaming
US20190244367A1 (en) Systems and methods for determining optical flow
JP6412129B2 (ja) 画像を変換するためのシステム及び方法
KR20150132846A (ko) 비디오 안정화를 위한 캐스케이드 카메라 모션 추정, 롤링 셔터 검출 및 카메라 흔들림 검출
US9774784B2 (en) Systems and methods for combining multiple frames to produce media content with simulated exposure effects
CN109040525B (zh) 图像处理方法、装置、计算机可读介质及电子设备
US20160148648A1 (en) Systems and methods for improving stabilization in time-lapse media content
US10560641B2 (en) Systems and methods for generating a bias for a camera sensor for increasing resolution of captured images
US20190208121A1 (en) Systems and methods for increasing resolution of images captured by a camera sensor

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.