用于视频稳定的自适应路径平滑的制作方法

文档序号:17430920发布日期:2019-04-17 03:29阅读:154来源:国知局
用于视频稳定的自适应路径平滑的制作方法



背景技术:

利用手持设备(例如,手机或便携式摄像机)捕获的视频常常出现颤动和不稳定。视频质量已经变得非常重要,这在某种程度上是由于普遍流行和使用能够捕获视频的移动设备(例如,移动电话、平板电脑、便携式摄像机等)。

数字视频稳定可以提高这种视频的视频质量,但是许多数字视频稳定的类型具有多种缺点。例如,数字视频稳定也许可以将抖动从视频中移除,但是其代价在于引入了视频伪影(artifact),诸如,图像失真、裁剪、分辨率损失等等。因此,存在对能够在不引入过量的非期望伪影的情况下提高视频质量的数字视频稳定技术的需求。



技术实现要素:

在某种程度上,本公开内容描述了用于视频稳定的技术和架构,其可以用于将看上去颤动的视频转换为看上去稳定的视频。视频稳定可以包括相机路径平滑处理,其根据原始的颤动相机路径生成经平滑的相机路径。使用包括多个视频帧的相对较大的平滑核(kernel),路径平滑处理可以移除高频抖动和低频跳动(bounce)二者,并且可以保留非连续的相机运动(诸如,相对较快的摇摄或场景转变)以避免在经平滑的相机路径中的过度裁剪或几何失真。可以以能够用于实时稳定的基于滑动窗口的实现方式来执行路径平滑处理。

提供本发明内容是为了以简化的形式介绍将在以下详细描述中进一步描述的概念精选。本发明内容并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用作帮助确定所要求保护的主题的范围的手段。举例而言,术语“技术”可以指代系统、方法、计算机可读指令、模块、算法、硬件逻辑(例如,现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、片上系统式系统(soc)、复杂可编程逻辑器件(cpld))、和/或由上面的和贯穿本文档的上下文所允许的技术。

附图说明

参考附图来描述具体的说明。在附图中,附图标记中最左边的数字标识该附图标记首次出现的附图。不同附图中的相同附图标记指示相似或相同的项。

图1是描绘了其中可以实现本文所描述的技术的示例性环境的框图;

图2示出了根据各个示例性实施例的通过相机路径平滑和后处理曲线平滑所进行的视频稳定的说明图;

图3是根据各个示例性实施例的示出相机路径的两个视频帧的示意图;

图4包括根据各个示例性实施例的示出帧裁剪和失真的示意图;

图5是根据各个示例性实施例的示出原始相机路径和经平滑的相机路径之间的关系的示意图;

图6是根据各个示例性实施例的视频稳定设备的框图;

图7是根据各个示例性实施例的视频帧的两个视频序列的示意图;

图8是根据各个示例性实施例的视频稳定设备的一部分的框图;

图9是用于平滑视频的示例性处理的流程图。

具体实施方式

概述

在各个实施例中,用于视频稳定的技术和设备包括路径平滑以将颤动的视频转换为看上去稳定的视频。平滑处理可以根据与例如由手持相机捕获的视频对应的原始颤动的或不稳定的相机路径来生成经修改的相机路径。包括基于滑动窗口的实现方式的路径平滑处理可以从相机路径中移除高频抖动(例如,来自相机用户的颤动的手)和低频跳动(例如,来自用户的走动或摇摆运动)二者,并且可以保留非连续的相机运动(诸如,快速摇摄或场景转变)以避免过度的裁剪或几何失真。该技术或设备可以用于实时或脱机的视频稳定。

在一些实施例中,用于视频稳定的系统包括视频输入端口,以接收包括视频帧序列的视频。通信地连接到所述视频输入端口的视频划分模块将所述视频划分为多个视频帧序列。视频划分模块可以由硬件、软件、固件或其组合来实现。视频划分模块可以向视频帧序列中的个体序列施加帧延迟。因此,相邻序列可以具有复制的视频帧。具体来说,连续的序列可以彼此相同,不同之处在于一个序列相对于另一个序列被帧延迟了。作为基于滑动窗口的实现方式的一部分,视频划分模块可以向执行视频平滑的个体视频缓冲器处理器提供经帧延迟的个体序列。具体来说,个体视频缓冲器处理器可以包括特征提取模块、单应性估计模块以及自适应路径平滑模块。

在一些实现方式中,视频缓冲器处理器、特征提取模块、单应性估计模块以及自适应路径平滑模块中的任何一项都可以包括硬件、软件、固件或其组合。例如,由硬件实现的视频缓冲器处理器可以选择性地执行包括特征提取模块、单应性估计模块以及自适应路径平滑模块的软件。视频缓冲器处理器可以包括、或可以访问包括多个缓冲器的存储器,以存储视频帧序列。在另一个例子中,包括可执行代码的视频缓冲器处理器可以选择性地操作硬件实现的特征提取模块、硬件实现的单应性估计模块、以及硬件实现的自适应路径平滑模块。视频缓冲器处理器可以包括、或可以访问包括多个缓冲器的存储器,以存储视频帧序列。

特征提取模块识别视频帧序列的个体视频帧中的对象特征。例如,该对象特征可以包括个体视频帧中的点、边或其它仿射对象。

单应性估计模块执行视频帧序列的视频帧间(among)或之间(between)的单应性估计,以生成经修改的视频帧序列。单应性估计至少部分地基于所识别的对象特征。在一些实现方式中,单应性估计在视频帧序列的连续视频帧之间执行。自适应路径平滑模块确定经修改的视频帧序列的视频帧间的估计误差,并且对经修改的视频帧序列施加自适应路径平滑以生成经平滑的视频帧序列。自适应路径平滑可以至少部分地基于该估计误差以及视频帧序列的个体视频帧间的变化。

在一些实施例中,用于视频稳定的系统还可以包括视频聚合模块,其被配置为将经平滑的视频帧序列与其它经平滑的视频帧序列相结合,以生成经聚合的视频部分,并且施加后处理滤波来平滑该经聚合的视频部分。这些其它经平滑的序列是相应的个体视频缓冲器处理器的产物。在各个实现方式中,来自个体视频缓冲器处理器的其它经平滑的视频帧序列至少部分地基于经帧移位的视频帧序列,该经帧移位的视频帧序列分别从该视频帧序列偏移整数倍个n帧,其中,n是预定数。

将参考图1至图9对各个实施例进行进一步描述。

示例性环境

以下描述的环境仅构成一个例子并且不旨在将权利要求限定于任何一个特定的操作环境。在不背离所要求保护的主题的精神和范围的情况下,可以使用其它环境。图1示出了示例性的环境100,在该环境100中可以操作涉及本文所描述的视频稳定的实施例。在一些实施例中,环境100的各个设备和/或部件包括多种计算设备102。在各个实施例中,计算设备102包括设备102a至102e。尽管示出为多种多样的设备类型,但是计算设备102可以是其它设备类型并且不限于所示出的设备类型。计算设备102可以包括具有一个或多个处理器104的任何类型的设备,该一个或多个处理器104可操作地例如经由总线110连接到输入/输出接口106和存储器108。计算设备102可以包括个人计算机,诸如,例如,台式计算机102a、膝上型计算机102b、平板计算机102c、电信设备102d、个人数字助理(pda)102e、电子书阅读器、可穿戴计算机、汽车用计算机、游戏设备等。计算设备102还可以包括面向商业或零售的设备,诸如,例如,服务器计算机、精简型客户端、终端和/或工作站。在一些实施例中,计算设备102可以包括例如用于集成在计算设备、家电、或其它种类的设备中的部件。在一些实施例中,被描述为由计算设备102执行的功能中的一些或所有功能可以由一个或多个远程对等计算设备、远程服务器或服务器、或云计算资源来实现。例如,计算设备102可以执行远离该计算设备存储的应用。

在一些实施例中,如关于设备102c示出的那样,存储器108可以存储可由处理器104执行的指令,包括操作系统(os)112、图形模块114、以及可由处理器104加载和执行的程序或应用116。一个或多个处理器104可以包括中央处理单元(cpu)、图形处理单元(gpu)、视频缓冲器处理器等等。在一些实现方式中,视频划分模块120包括在存储器108中存储的可执行代码,并且可由处理器104和/或视频缓冲器处理器118执行。自适应路径平滑模块124包括在存储器108中存储的可执行代码,并且可由处理器104执行。自适应路径平滑模块124确定经修改的视频帧序列的视频帧间的估计误差,并且对该经修改的视频帧序列施加自适应路径平滑以生成经平滑的视频帧序列。该自适应路径平滑至少部分地基于原始视频帧序列的个体视频帧间的变化。

尽管已经将特定模块描述为执行各个操作,但是这些模块仅仅是一个例子,并且相同或相似的功能可以由更大数量或更小数量的模块来执行。此外,由前述各模块执行的各功能并不一定需要由单个设备本地执行。更确切地说,一些操作可以由远程设备(例如,对等、服务器、云等)来执行。

作为替代地,或另外地,本文所描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,但不限于,可以使用的说明性类型的硬件逻辑部件包括:现场可编程门阵列(fpga)、程序专用集成电路(asic)、程序专用标准产品(assp)、片上系统式系统(soc)、复杂可编程逻辑设备(cpld)等。

在一些实施例中,如关于设备102d示出的那样,计算设备可以与能够捕获视频的相机126相关联。例如,手持设备可以包括这种相机和计算设备102。存储器108可以包括计算机可读介质中的一个或计算机可读介质的组合。计算机可读介质可以包括计算机存储介质和/或通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任何方法或技术来实现的易失性的和非易失性的、可移动的和不可移动的介质。计算机存储介质包括但不限于:相变存储器(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其它类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、闪存存储器或其它存储技术、压缩光盘只读存储器(cd-rom)、数字通用光盘(dvd)或其它光存储装置、磁带盒、磁带、磁盘存储或其它磁存储设备、或者可用于存储供计算设备存取的信息的任何其它非传输介质。

相反,通信介质可以体现计算机可读指令、数据结构、程序模块、或在诸如载波或其它传输机制之类的经调制的数据信号中的其它数据。如本文所定义的那样,计算机存储介质不包括通信介质。在各个实施例中,存储器108是存储计算机可执行指令的计算机存储介质的例子,当被处理器104或视频缓冲器处理器118执行时,该计算机可执行指令配置该处理器在其他事项之外还执行以下操作:识别视频帧序列的个体视频帧中的对象特征;执行视频帧序列中的视频帧间或之间的单应性估计以生成经修改的视频帧序列,其中,该单应性估计至少部分地基于所识别的对象特征;确定经修改的视频帧序列的视频帧间的估计误差;以及对该经修改的视频帧序列施加自适应路径平滑以生成经平滑的视频帧序列,其中,该自适应路径平滑至少部分地基于该估计误差以及视频帧序列中的个体视频帧间的变化。

输入设备可以包括旨在向在输出设备上可视化呈现的对象提供和/或指示动作的各种设备中的任何设备。例如,在各个实施例中,输入设备可以是直接触摸输入设备(例如,触摸屏)、间接触摸设备(例如,触摸板)、间接输入设备(例如,鼠标、键盘、相机或相机阵列等)、或另外类型的非触觉设备(诸如,音频输入设备)。

计算设备102可以包括一个或多个输入/输出(i/o)接口106以允许计算设备102与其它设备进行通信。输入/输出(i/o)接口106还可以包括一个或多个网络接口以使得计算设备102与其它网络设备(诸如,其它设备102)能够进行通信。输入/输出(i/o)接口106可以允许设备102与其它设备(诸如,用户输入外围设备(例如,键盘、鼠标、笔、游戏控制器、声音输入设备、触摸输入设备、手势输入设备等)和/或输出外围设备(例如,显示器、打印机、音频扬声器、触感输出等))进行通信。

图2显示了根据各个实施例的对通过相机路径平滑和后处理曲线平滑进行的视频稳定的说明图。路径202代表与视频捕获期间的相机的运动对应的原始相机路径。相机运动可以包括相对快的运动(颤动),这对应于用户握持相机的不稳定的、摇晃的手。相机运动还可以包括相对慢的运动(摆动),这对应于用户的走动或摇摆运动。

相机的这种运动可以表现为视频帧中的图像对象的位置变化。更具体地,在捕获视频的第一帧和视频的第二帧之间的时间跨度期间的相机的移动可以引起第二帧中对象的位置相对于第一帧的平移(translation)。相机移动还可以引起相对于第一帧来说的第二帧中的对象的旋转。朝向或远离所捕获的图像的平面的相机运动可以从第一帧到第二帧改变对象的缩放。因此,原始相机路径202可以通过考虑多个视频帧间或之间的平移、旋转以及缩放变化来确定。当靠后的参数——缩放变化,相对较小时,可以将其忽略从而使得只考虑单个平面中的运动。

在各个实施例中,可以修改原始视频的视频帧的图像从而使得包括经修改的视频帧的经修改的视频将显得相对平滑和稳定。修改原始视频帧以使得有效地移除各帧之间的相对快(例如,短时间常量)的图像变化。这种快速的图像变化对应于快速的相机路径变化,其例子在图2中通过204进行了说明。一些用于修改视频帧的技术包括平滑部分视频(例如,一系列帧)以得到一系列经平滑的相机路径段206。如下文详细解释的那样,经平滑的相机路径段206可以彼此重叠,并且包括间断,作为生成经平滑的相机路径段206的处理的结果。因此,如在图2的右手边图像中显示的那样,后处理滤波技术可以生成平滑且连续的路径208。用于显示的输出视频可以至少部分地基于该连续的路径208。因此,可以在输出视频中减少或消除原始视频中的颤动和摆动。

图3是根据各个示例性实施例的示出包括一系列帧i(t)的相机路径200的两个视频帧i(t-1)和i(t)的示意图,其中t=0、1、2…。以这种方式建模和定义项有助于研发如下文所描述的平滑视频的技术。可以使用平面单应性来代表连续的视频帧之间的相对相机运动。对于包括视频帧i(t)序列的视频来说,每一对相邻帧(i(t-1)、i(t))之间的单应性f(t)可以根据它们对应的特征点(例如,诸如,由klt、sift或surf生成的仿射图像特征)来计算得出,其中t=0、1、2…。相机姿势c(t)在帧i(t)处定义如下:

c(t)=c(t-1)f(t-1)=>c(t)=f(0)f(1)…f(t-1)(1)

{f(0)、f(1)、…、f(t-1)}是针对序列上每一个帧的估计的单应性。

给定原始相机路径c={c(t)},确定新的经平滑的路径p={p(t)}。针对p的理想状况是:当对除了在c中快速变化处之外的所有地方(例如,没有间断)进行平滑时,p应当相对接近c。例如,快速变化可以是有意的,诸如,当用户快速旋转相机以捕获快速移动的对象的图像时。因此,最好保留一些快速的路径变化。

确定p的处理可以涉及对下面的目标函数进行最小化:

其中ωt是帧t处的视频帧邻域。例如,该视频帧邻域可以包括i(t-30)、i(t-29)、…、i(t)、i(t+1)、…、i(t+30)(例如,帧t的前30帧和后30帧)。相对大的核ωt(例如,60帧)可以抑制高频抖动(例如,来自手的颤动)和低频跳动(例如,来自走动)二者,不过所要求保护的主题不受限于此。

在方程式2中,||p(t)-c(t)||2项是倾向于将新相机路径p约束为相对接近于原始相机路径c以降低裁剪和几何失真的数据项。||p(t)-p(r)||2项是稳定相机路径的平滑项。自适应权重wt,r(c)是除去其他方面外还保留在快速摇摄/旋转或场景转变之下的运动间断的因子。因子λt可调节以平衡数据项和平滑项。

自适应权重wt,r(c)倾向于保留相机路径间断。在一些实现方式中,wt,r(c)包括三个高斯函数的乘积:

wt,r(c)=exp(-(t-r)2/2σ2)*exp(-(c(t)-c(r))2/2α2)

*exp(-(i(t)-trt(i(r)))2/2β2)(3)。

第一高斯函数exp(-(t-r)2/2σ2)向(相对于帧i(t))附近的视频帧提供较大的权重,并且向离帧i(t)更远距离的视频帧提供更小的权重。在一些例子中,可以将σ设置为等于ωt/3,不过所要求保护的主题并不受限于此。

第二高斯函数exp(-(c(t)-c(r))2/2α2)提供两个相机姿势之间的变化的测量。为了测量这样的相机姿势的变化,可以使用从相机姿势c(t)中提取的平移分量x(t)、y(t)的变化。可以将该变化表达为|x(t)-x(r)|+|y(t)-y(r)|。帧平移xt、yt可以描述不包括关于主轴的平面内(in-plane)旋转或缩放变化的相机运动。

在基于单应性的配准之后,第三高斯函数exp(-(i(t)-trt(i(r)))2/2β2)将单应性拟合误差计算为两个帧之间的平方差(ssd)之和。变换trt可以通过求解trt=ct-1cr1而生成。当视频帧的场景中存在较大的遮掩或深度变化时,该基于单应性的运动模型可能对相邻帧的配准来说变得不太有效。在这种情况下,ssd误差可能较大,并且wt,r(c)的平滑强度可能降低,从而使得理想地保留相机路径的间断,该间断可以是意向性特征。

图4包括示出了根据各个实施例的帧裁剪和失真的各方面的示意图。左手边的图示出输入帧402、稳定帧404以及重叠区域406。右手边的图示出另一个输入帧408和失真帧410。角度α是测量失真度的参数。也可以使用位移值的集合d(包括一组d1、d2、d3…)来测量失真度。如下文解释的那样,图像稳定处理除其他方面之外还涉及对于不同的帧的各个量的帧稳定、重叠以及失真。

自适应项wt,r(c)(方程式3)可以实现控制视频帧的裁剪和失真的一些能力。然而,自适应地调整每个帧的目标函数(方程式2)中的参数λt可以提供额外的针对裁剪率和失真的控制。例如,可以使用针对λt的初始固定值(例如,5)来求解目标函数,并且可以查验所得到的每个帧的裁剪率和失真以确定是否满足特定的标准。例如,对于不满足特定用户需求的任何帧(例如,裁剪率或失真小于预定义的阈值),可以调整(例如,递增或递减)参数λt一个步长(例如,1/10的λt),并且可以使用新的λt值来重新求解目标函数。可以重复这种过程直到所有帧都满足用户需求为止。

图5是示出根据各个实施例的原始相机路径和经平滑的相机路径之间的关系500的示意图。图5中的标记c(t-1)不同于图3中的标记c(t-1),这解释了为什么在图3中考虑了个体栅格单元(gridcell)而在图5中不单独考虑个体栅格单元。可以使用扭曲变换b(t)=c(t)-1p(t)来测量在对λt的估计中使用的裁剪率和失真。例如,可以使用b(t)的各向异性缩放来求解失真(例如,图4中示出的参数α和位移d),其可以通过b(t)的仿射部分的两个最大的本征值之比来计算得出。参考图4,还可以使用b(t)来计算原始视频帧402和稳定帧404的重叠区域406的面积。将裁剪率定义为重叠面积与原始帧面积之比。

返回方程式2,可以使用线性系统求解器(诸如,基于jacobi的迭代求解器)来求解二次型目标函数o({p(t)})。因此,可以将目标函数o({p(t)})写为:

在该方程式中,ξ是迭代指数(例如,ξ=20)。利用求解的优化路径{p(t)},可以计算变换b(t)=c(t)-1p(t)以将原始相机路径c(t)映射到优化路径p(t)。可以通过由双线性插值将变换b(t)应用到输入帧i(t)来获得最终的稳定帧。

优化路径p(t)可以包括一系列重叠的经平滑的视频帧序列,其例子是图2中示出的经平滑的相机路径段206。这种重叠的有益之处在于不需要在可导致较差的结果的非连续路径段上进行后处理滤波或平滑。重叠的经平滑的视频帧序列可由多种技术生成。例如,如果例如ε被选择为小于τ时,可以将视频帧布置为彼此重叠。在这种情况下,每两个相邻段具有(τ-ε)个重叠帧,并且每一个帧(除了开始帧和结束帧之外)在平滑事件中在不同的段中处理(τ/ε-1)次。由于每个帧具有发生在不同的视频段中的不同的估计,可以将这些不同的估计从不同的段聚合在一起成为单个的聚合路径(例如,经平滑的相机路径段206)。可以在后处理步骤中执行混合自适应平滑以在维持裁剪尺寸和失真低于预定阈值的同时进一步移除聚合路径(例如,连续路径208)中的间断。例如,为了在后处理期间维持期望的裁剪尺寸和失真,可以根据对经聚合的相机路径的之前的优化处理来重新估计λt。可以根据扭曲变换来估计λt,其中是在聚合不同的视频段中的所有估计pt之后的所估计的相机姿势。然后,可以在混合自适应路径平滑中使用所估计的λt。“混合”意指相继地将两个不同的窗口尺寸2ωt/3和ωt/3应用于自适应平滑项中。在一些情况下,多次(例如,2或4次)迭代可能导致收敛。在后处理之后,聚合路径被平滑并且被提供作为具有最终的稳定相机路径的输出视频。在一些实现方式中,可以实时地实现后处理。例如,包括后处理的视频稳定技术可以实质上与捕获(例如,录制)或接收视频的处理一起并行地执行。在其它实现方式中,可以脱机地实现后处理。例如,包括后处理的视频稳定技术可以在早先生成的视频文件上执行。

图6是根据各个实施例的视频稳定设备600的框图。尽管视频稳定设备600在各个例子中被描述为设备,但是由视频稳定设备600执行的处理和技术可以替代地由存储器中存储的处理器执行代码来执行。设备600(其可以包括在计算设备102中)执行使用滑动窗口滤波技术的视频稳定以通过时间滑动窗口来对视频段进行流式处理,如下文所描述的那样。与整个视频序列处理相比,通过时间滑动窗口的流式处理视频提供了多种益处。例如,对于脱机稳定来说,用户可以在播放视频的同时在后台对视频进行同时地稳定(例如,除了播放视频之外,没有用户参与)。在另一个例子中,对于实时稳定来说,可以在视频捕获期间实时地对视频进行稳定。为了实现这种特征,视频稳定系统可以包括具有特定尺寸的视频缓冲器处理器。可以通过考虑视频稳定系统(例如,其可以包括计算机或移动设备)的处理器功率和存储器需求来约束或选择缓冲器尺寸τ。

视频划分模块602包括视频输入端口,用于接收包括视频帧的输入视频。在一些实现方式中,视频划分模块602包括可执行代码。在这种情况下,视频输入端口可以接收代表输入视频的电子信号。视频划分模块602将输入视频划分为多个视频帧序列。将个体序列分别提供给视频缓冲器处理器604。例如,将第一视频帧序列提供给第一视频缓冲器处理器,将第二视频帧序列提供给第二视频缓冲器处理器等等。将输入视频序列流式传送到视频缓冲器处理器604以经历(undergo)通过自适应路径平滑的视频稳定处理。在这种路径平滑之后,将相应视频序列的ε个帧(例如,ε=5)从个体视频缓冲器处理器流式传出以将其渲染成为视频输出帧。可以将每一个视频序列的剩余帧与新的流入帧序列相聚合,以使得其被合并成新的聚合视频序列,该新的聚合视频序列随后将在由后处理滤波器模块606执行的后处理事件中被平滑,如下文解释的那样。可以重复进行这种过程直到整个视频都被处理为止。

图7是根据各个实施例的两个视频帧序列702和704的示意图。视频帧序列的描述对于解释滑动窗口滤波技术的思想和定义项来说是有用的。视频帧序列包括多个帧706。视频帧序列702和704彼此之间偏移ε个帧。这种偏移与一个帧序列相对于另一个帧序列的时间延迟对应。

图8是根据各个示例性实施例的视频稳定设备800的一部分的框图。尽管在各个例子中将视频稳定设备800描述为设备,但是由视频稳定设备800执行的处理和技术可以替代地由在存储器中存储的处理器执行代码来执行。视频划分模块802(其可以类似于图6中示出的视频划分模块602)可以用于向视频处理器804a、804b、804c等提供视频帧序列。视频划分模块802可以经由方框802a向视频缓冲器处理器804a提供没有相对偏移或延迟的第一视频帧序列,经由方框802b向视频缓冲器处理器804b提供具有n帧的偏移或延迟的第二视频帧序列,经由方框802c向视频缓冲器处理器804c提供具有2n帧的偏移或延迟的第三视频帧序列,向下一个视频缓冲器处理器提供具有3n帧的偏移或延迟的第四视频帧序列,依此类推。视频划分模块可以继续将这种模式用于m+1个视频缓冲器处理器。因此,向连续的视频缓冲器处理器提供连续地从一个视频缓冲器处理器到下一个视频缓冲器处理器帧式延迟的视频帧序列。例如,在图7中描绘了这样的帧式延迟,其中视频帧序列702和704彼此之间偏移ε个帧。

在视频缓冲器处理器804a接收视频帧序列时或之后,特征提取模块808a识别视频帧序列的个体视频帧中的对象特征。例如,这种对象特征可以包括个体视频帧中的点或边。随后,单应性估计模块810a执行视频帧序列中的连续视频帧之间的单应性估计以生成经修改的视频帧序列。单应性估计至少部分地基于由特征提取模块808a识别的对象特征。自适应路径平滑模块812a确定经修改的视频帧序列的视频帧间的估计误差,并且向经修改的视频帧序列施加自适应路径平滑以生成经平滑的视频帧序列。自适应路径平滑至少部分地基于该估计误差以及视频帧序列的个体视频帧间的变化。

连续的视频缓冲器处理器804b和804c执行类似于上文针对视频缓冲器处理器804a描述的处理。然而,向连续的视频缓冲器处理器804b和804c提供的视频帧段是针对一个视频缓冲器处理器到下一个视频缓冲器处理器连续延迟的。如上文所解释的那样,视频划分模块802向视频缓冲器处理器804b提供具有n个帧的偏移或延迟的视频帧序列,并且向视频缓冲器处理器804c提供具有2n个帧的偏移或延迟的第三视频帧序列,依此类推。视频缓冲器处理器(804a、804b以及804c…)可以以并行地形式对它们各自的视频帧序列进行操作。

视频缓冲器处理器804a生成包括经平滑的视频帧段的输出。多个这样的经平滑的视频帧段的例子可以是图2中示出的经平滑的相机路径段206。如之前解释的那样,由视频缓冲器处理器(804a、804b以及804c…)单独生成的经平滑的视频段包括重叠的段。将由视频缓冲器处理器生成的这些经平滑的视频段提供给路径聚合模块814,该路径聚合模块814对个体经平滑的视频段进行聚合。然后,将聚合的经平滑的视频段提供给后处理滤波模块816,其在将裁剪尺寸和失真维持在预定阈值之下的同时执行混合自适应平滑以进一步移除聚合的经平滑的视频段中的间断。后处理滤波模块816因此生成经平滑的连续路径,其例子是图2中的连续路径208。然后,将经平滑的连续路径提供给图像帧双线性扭曲模块818,其然后输出视频以供观看。为了进行双线性扭曲,我们首先根据扭曲逆变换b-1(t)将帧t处的每一个像素坐标(x,y)映射到新的坐标(x’,y’)。然后,像素值i’x,y是通过其相邻的四个像素i[x’],[y’]、i[x’+1],[y’]、i[x’],[y’+1]、i[x’+1],[y’+1]的双线性插值来确定的,其中,[x’]是超出x’的最大整数。

图9是根据各个实施例的用于平滑视频的处理900的流程图。在例子中,这种处理可以由视频稳定设备800执行。在方框902处,经由视频端口接收视频的一部分。视频部分包括视频帧序列。在方框904处,将视频帧序列的个体视频帧的仿射对象特征与视频帧序列的其它个体视频帧的仿射对象特征相比较。在方框906处,使用视频帧序列的视频帧间或之间的单应性估计来生成经修改的视频帧序列。单应性估计至少部分地基于方框904的比较处理。例如,单应性估计可以包括至少部分地基于比较处理中所识别的对象特征来生成个体视频帧间的映射。在方框908处,确定经修改的视频帧序列的视频帧间的估计误差。在方框910处,向经修改的视频帧序列施加自适应路径平滑以生成经平滑的视频帧序列。该自适应路径平滑保留与视频帧序列之中的图像变化对应的运动间断。自适应路径平滑至少部分地基于这些变化和方框908处确定的估计误差。

图6、8和9中示出的操作流程被示出为表示可以用硬件、软件、固件或其组合实现的操作序列的方框和/或箭头的集合。描述这些方框的次序不应被解释为限制,并且任何数量的所描述的操作可以按任何次序组合以实现一种或多种方法或替代的方法。另外,在不背离本文所描述的主题的精神和范围的情况下,可以从操作流中删除个别操作。在软件环境中,各方框表示当由一个或多个处理器执行时执行所述操作的计算机可读指令。在硬件环境中,各方框可以表示一个或多个被配置为执行所述操作的电路(例如,专用集成电路-asic)。

图6、8和9中示出的操作流程中的任何例程描述、元件或方框可以表示代码的模块、段或部分代码,该代码包括用于实现例程中的特定逻辑功能或元件的一个或多个可执行指令。

结论

尽管已经用具体到结构特征和/或方法行为的语言描述了本技术,但是应当理解的是,所附权利要求并不必然受限于所描述的特征或行为。相反地,这些特征和行为是作为实现该技术的例子而进行描述的。

上文所描述的所有方法和处理可以体现在由一个或多个通用计算机或处理器执行的软件代码模块中,并且经由该软件代码模块完全自动操作。可以将该代码模块存储在任何类型的计算机可读存储介质或其它计算机存储设备中。该方法中的一些或所有可以替代地体现在专用计算机硬件中。

除非另有特别声明,否则尤其是诸如“可以”、“可”、“可能”或“能够”之类的条件性语言用于指示特定的实施例包括而其它实施例不包括所指出的特征、元件和/或步骤。因此,除非另有声明,否则这种条件性语言不旨在暗示一个或多个实施例一定需要该特征、元件和/或步骤,或者一个或多个实施例必须包括用于在有或没有用户输入或提示的情况下判定这些特征、元件和/或步骤是否包括在任何特定实施例中或将要在任何特定实施例中执行的逻辑单元。

除非另有特别声明,否则诸如短语“x、y或z中的至少一个”之类的连接性语言将被理解为表示项、项目等可以是x、或y、或z、或其任何组合。

可以对上述实施例作出许多变形和修改,其元件将被理解为也在其它可接受的例子中。所有这些修改和变形旨在在本文中被包括在本公开内容的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1