Representing Moving Images with Layers

用图层表示运动图像

摘要
我们描述了一种用重叠层组来表示运动图像的系统。每一层包含一个强度图,它定义了每个像素的相加值,以及一个alpha图(原文为alpha map)用作指示透明度的遮罩的地图。这些层在深度上是有序的,它们根据合成的规则相互遮挡。速度图定义了层如何随时间扭曲。分层表示比标准图像变换更灵活,并且可以捕获自然图像序列的许多重要属性。我们描述了使用动作分析将图像序列分解成层的一些方法,并且我们讨论了该表示可以如何用于图像编码和其他应用。

关键词
图像编码,动作分析,图像分割法,图像表示,强估计

1.介绍

图像编码系统包括三个部分:编码器、表示和解码器。表示是编码系统整体结构的中心决定因素。当今最流行的图像编码系统是基于“低级”图像处理概念,如离散余弦变换(DCT)、子带等。使用高级机器视觉概念(如3-D对象识别)对图像进行编码最终是可能的,但这种技术要应用于任意图像还需要很多年。我们认为,新图像编码的一个富有成果的领域在于“中级”技术,它涉及诸如分割、表面、深度、遮挡和连贯运动等概念。我们描述了一种基于“层”的这种表示,并展示了它如何应用于视频序列的编码。
想想传统手绘动画师使用的语言。首先画一个背景,然后在透明胶片上画一系列图像。当cel在背景上移动时,它会遮挡和显示不同的背景区域。在计算机图形学中也使用了类似的表示法,在这种方法中,一组图像可以借助于alpha通道用作遮罩以指示覆盖层的透明度和不透明度。

在传统的cel动画中,人们只能看到背景和cel的刚性运动。然而,在数字系统中,很容易使用更复杂的运动,如仿射变换,包括平移、旋转、膨胀和剪切的所有组合。只要图像模型提供了原始序列中发现的运动的适当描述,这种表示将是成功的。
图1示出了在运动背景**(图 1b)下挥动的手( 图 1a)运动的图像序列的概念。假设手和背景都执行如图所示的简单动作。合成的图像序列显示在图 1c中。
给定这个序列,我们希望通过它产生的过程将其反转。因此,我们希望将序列分解成一组可以合成的层,以便生成原始序列。由于世界由经历平滑运动的稳定物体组成,我们的分解也应该包含经历平滑运动的稳定物体。
在[1]中可以找到分层格式的早期描述。在我们使用的表示中,遵循阿德尔森[1],每个层包含三个不同的映射:(1)强度映射,(在计算机图形学中通常称为“纹理映射”);(2)alpha图,它定义了图层在每个点的不透明度或透明度;以及(3)速度图,其描述了该图应该如何随时间扭曲。此外,假设层在深度上是有序的。
图2显示了手序列的分层分解。手和背景层分别如
图2a和2b**所示。重新合成的序列显示在 图 2c中。
让我们注意到,传统的运动分析方法达不到要求。光流技术通常将世界建模为随着时间推移而变形的二维橡胶片。但是当一个物体在另一个物体前面移动时,就像移动物体通常做的那样,橡胶板模型失败了。图像信息在遮挡边界出现和消失,视觉算法无法表示这一事实。因此,这种算法往往会在边界附近给出非常差的运动估计。
在许多图像编码系统中,运动模型甚至更原始。假定固定排列的块从一个框架刚性地平移到另一个框架。该模型不能考虑平移以外的运动,也不能处理遮挡边界。
我们提出的分层表示也是一个不完美的世界模型,但它能够处理比传统表示更广泛的各种现象。该方法可以用基于对象的方法来分类[10,14]。
figure 1 (a)(b)(c)
图1:移动的手的假想场景中涉及的物体;
(a)手,做简单的运动;
(b)背景,向下向左平移;
(c)观察到的图像序列。

figure 2 (a)(b)(c)
图2: 意图将手序列分解成层;
(a)背景层。强度图对应于棋盘图案;alpha图在任何地方都是统一的(因为背景被认为是不透明的),速度图是一个常数;
(b)手层。阿尔法图在有手的地方是统一的,在没有手的地方是零;速度图是平滑变化的;
(c)基于图层的再合成图像序列。

2.分层表示

如上所述,图层包含一组指定其强度、不透明度和运动的贴图。其他图也可以定义,但这些图至关重要。
为了处理透明度,运动模糊,光学模糊,阴影等。允许alpha通道采用0到1之间的任何值都很有用。合成过程的流程图如 figure 3所示。根据以下等式,每一层都将它下面的一层遮挡住:
在这里插入图片描述
其中其中阿尔法1是层E1的阿尔法通道,而E0是背景层。可以级联任意数量的级,允许任意数量的层。

figure 3
图3:合成一系列层的流程图;其中标有”CMP“的方框生成alpha的补集1-alpha。

为了处理图像序列,我们允许波长图随着时间的推移对层进行操作。这就像是允许传统手绘动画师对他的cels进行简单的变形。强度图和阿尔法图扭曲在一起,使他们保持注册(原文stay registered具体如何翻译??)。由于分层模型可能无法充分捕捉每一层中的所有图像变化,因此我们还考虑了一个“增量图”(原文delta map直译为三角洲地图),作为一个误差信号,随着时间的推移更新强度图。最终的系统如图4所示。仅示出了一个完整的阶段,但是可以级联不限系列的这样的阶段。

figure 4
图4:合成流程图,包括速度图V和增量图D。

一旦给了我们一个关于层的描述,生成图像序列就很简单了。困难的部分是确定给定输入序列的分层表示。换句话说,综合容易,分析难。表示不是唯一的:会有许多不同的描述导致相同的合成图像序列。事实上,用一个单独的层来表示一个图像序列总是可能的,其中增量图完成了解释随时间变化的所有工作。随着我们在中级视觉方面的专业知识的提高,我们可以获得更好的表现,捕捉场景的更多底层结构。因此,分层表示可用于指定解码过程,而编码过程仍可由个人用户进一步改进。
我们将描述一些应用于一组标准视频序列的分析技术。在我们目前的实现中,我们已经通过几种方式简化了表示。阿尔法通道是二进制的,即对象完全透明或完全不透明。速度图仅限于仿射变换。没有使用增量图。尽管有这些简化,该表示能够捕获许多期望的图像信息。这项工作的早期讨论包含在[20,21]中。

3.分层分析

让我们从考虑第一层开始:背景。有时背景是静止的,但由于相机摇摄等原因,它通常会经历平滑的运动。在平移过程中,背景信息在屏幕边缘出现和消失。当然,可以在每一帧上发送更新信息,在边缘添加和减去图像数据。然而,对于图层来说,表示的最好是真实的背景:比取景框大的扩展图像。建立了这种扩展的背景后,可以简单地在其上移动取景框,从而只需要最少量的数据。
图5a展示出了取景框在背景上平移期间可能采取的位置的序列。图5b显示了可以从该序列中累积的图像信息。在任何给定的时刻,摄像机都在选择扩展背景的一部分[9,18]。
figure 5(a)(b)
图5:
(a):序列中的帧取自原始场景,比任何单个帧都大。
(b):来自所有帧的信息可以被累积到单个大的层中。每一帧都是透过窗户看到的这一层的一瞥。

为了建立扩展的背景,我们可以认为背景是无限空间范围的连续函数[11,13]。序列中的每个图像在观察框指定的范围内从该函数捕获一组离散样本。观察参数可能随着时间而变化;例如,背景图像可能经历仿射或高阶失真。如果我们估计这些参数,我们可以继续将图像数据映射到我们的扩展背景图像中。
也有可能前景物体会不时遮挡背景。如果有背景区域总是模糊不清,我们就无法知道它们的真实内容。另一方面,由于这些区域从未被看见,我们不需要知道它们来重新合成序列。如果我们正确识别它们,任何被揭示的区域都可以被积累到背景中。
为了说明如何获得一个层的扩展视图,考虑MPEG花园序列,其中的三帧如图6所示。因为相机是横向平移的,所以花坛图像会经历剪切运动,较近的区域比较远的区域平移得更快。失真可以通过仿射变换来近似。图7显示了用逆仿射变换取消花坛运动后的序列。当应用反向扭曲时,花坛是稳定的。图像的其余部分似乎在移动;例如,这棵树似乎弯曲了。
我们可以生成整个扭曲的序列,并将具有稳定值的像素累积到单个图像中。该图像将包含属于花坛的像素,包括那些有时被树隐藏的像素和那些有时被观察帧的右边界或左边界隐藏的像素。这样的累积图像在 图8中示出。

figure 6
MPEG花园序列的帧0、15和30分别在图6(a-c)示出。

figure 7
图7:
(a):帧1通过仿射变换扭曲,使花坛区域与帧15的花坛区域对齐。
(b):用作参考的原始帧15。
(c):帧30利用仿射变换扭曲,以将花坛区域与帧15的花坛区域对齐

figure 8
图8:花坛的堆积。从对运动补偿图像的时间中值运算中获得图像强度。只有属于花坛层的区域被累积在该图像中。请注意,遮挡区域也可以通过在许多帧上累积数据来正确恢复。

在理想的情况下,通过扭曲和采样这个单一的累积图像,将有可能在序列中的每个图像中说明(account for)所有可见的花坛像素。在实践中,我们发现该过程在该区域经历简单运动的情况下可以相当成功。
相同的过程可用于任何运动已被识别的区域。因此,我们可以为几个区域建立单独的图像。这些成为我们将在重新合成场景中合成的层。图12显示了我们提取的其他层:一个用于房屋区域;一个给树。我们现在将描述如何使用运动分析来执行分层分解。

4.运动分析

花园序列包含许多区域,每个区域都以连贯的方式移动。我们可以使用运动来分割图像序列。在传统的图像处理系统中,分割意味着每个像素被分配到一个区域,并且图像像拼图一样被分割而没有重叠。我们最初确实执行这样的分割,但是我们的最终目标是分层表示,由此分割的区域在许多帧上被跟踪和处理,以形成具有深度有序的重叠区域的表面强度层。因此,我们对图像序列分层的分析包括两个阶段:1)鲁棒的运动分割;2)分层表示的合成。

我们认为经历共同仿射运动的区域很可能来自世界上的同一表面,因此我们寻找这样的区域并将它们分组在一起。仿射运动由以下等式定义:
在这里插入图片描述
其中,V x和V y是速度的x和y分量,a是转换的参数。如果这些分量被绘制为位置的函数,那么仿射运动变成平面。当我们使用仿射模型分析运动时,我们提出图像中的光流可以描述为速度空间中的一组平面面片。

这个概念更容易在一个维度上可视化,如图9a所示。假设我们有一个经历一个仿射运动的背景和一个经历另一个仿射运动的前景对象。在插图中,前景对象包含两个部分,这两个部分都在经历一个共同的运动。速度场将由五个不同的块组成:三个对应于背景,两个对应于前景。
在标准光流算法中,速度场将被平滑。这种算法通常对速度估计施加一些平滑,以便处理噪声、孔径问题等。结果是如图9b所示的平滑函数。沿着边界的区域被分配了介于前景速度和背景速度之间的速度。这显然是不正确的。它源于这样一个事实,即光流算法隐含地使用了类似世界的橡胶片模型。速度场是单值光滑的,因此两种运动的混合是不可避免的。

考虑到速度场中的突变,可以改进分析,正如正则化[7,15所做的那样。速度场现在被建模为一组被不连续而中断的平滑区域。结果如图9c所示。该表示还是有问题的。它不允许多个运动估计在一个点共存,但允许共存是处理透明度所需要的。它没有告诉我们任何关于地区应该如何分组的信息;例如,它不知道所有的背景片段属于一起。
图9d显示了我们希望获得的表示。因为我们用仿射变换来模拟运动,所以我们试图用一组直线来解释数据。在这种情况下,我们需要两条直线,一条用于背景,一条用于前景。没有这样的运动间断:运动的线在空间中平滑地延续。不连续性可以用一个物体被另一个物体遮挡来解释,也就是说,在可见性中存在着间断性。无论是否被看到,运动本身都被认为是连续延伸的。在这个表示中,背景像素都共享一个共同的运动,所以它们被分配给一个单独的片段,尽管在空间上是不连续的。这代表了我们的运动分析的第一阶段。
figure 9
图9:
(a):速度估计在空间中显示为样本;
(b):为了处理噪声,标准的光流算法对速度估计施加一些平滑;
(c):正则化算法将速度场建模为一组平滑区域,同时允许在模型边界出现尖锐的断点。
(d):显示了我们希望达到的表现。速度样本由两个仿射模型(直线)解释,不连续性由一个物体被另一个物体遮挡解释。

5.鲁棒的运动分割

我们的鲁棒分割包括两个阶段:1)局部运动估计;2)仿射模型拟合分割。关键处理包括运动估计和分割。
许多作者已经描述了用于实现多重仿射运动分解的方法[3,5,9]。我们的方法基于仿射参数空间中的稳健估计和k-均值聚类。
在许多多重运动估计技术中,使用递归算法来检测场景中的多个运动区域[3,9]。在每次迭代中,这些算法假设可以检测到主导运动区域。一旦主要区域被识别并且该区域内的运动被估计,它就被消除,并且从图像的剩余部分估计下一个主要运动。这种方法在包含几个强运动的场景中会有困难,因为估计的参数反映了混合的源。
为了避免估计单个全局运动产生的问题,我们使用从局部表示到全局表示的逐渐迁移。我们从运动的传统光流表示开始。因为光流估计是在局部邻域内进行的,所以我们可以最小化“在给定分析区域内混合多个运动”这一问题。从光流中,我们确定了一组可能被观察到的仿射运动。通过将区域分类到运动模型来获得分割,该运动模型提供了区域内运动的最佳描述。
图10中概述了细分框架。在每次迭代中,我们的多模型框架同时识别多个相干运动区域。迭代地,在这些相干区域内计算运动模型参数,并将分割进行细化。
一些作者已经提出了用于多重运动估计的鲁棒技术[4,5,6]。Black和Anandan描述了一种多重运动估计技术,该技术通过影响函数来应用图像约束,该影响函数在模拟退火框架中调节离群点的影响。达雷尔和彭特兰描述了一个多模型正则化网络,其中图像约束分别应用于每个模型。德波米尔和杜布瓦使用线模型来检测运动的不连续性。然而,这些技术需要密集的计算。
我们使用一种更简单的技术来施加图像约束和拒绝异常值。在我们的算法中,运动平滑度仅在层内施加,通过具有多个层,我们可以描述运动中的不连续性。此外,我们通过在算法的不同阶段应用简单的阈值来拒绝异常值,从而对相干区域大小和局部连通性施加约束,从而提供稳定性和鲁棒性。
图10
图10:该图显示了运动分割算法。运动模型是在区域生成器指定的区域内估计的。通过运动分类获得的合并和分割来合并相似的模型。区域拆分器和区域过滤器加强了本地连通性,并为系统提供了健壮性。

5.1 光流估计

我们的局部运动估计是通过基于[2,12,16]描述的梯度方法的多尺度粗到细算法获得的。对于两个连续的帧,图像中每个点的运动可以由等式4描述,运动的线性最小二乘解可以由等式5描述。

公式4、公式5
Ix、Iy、It是强度图中位置(x,y)分别对应x、y、t时的偏导数。
在点(x;y)的很小的邻域内求和。多尺度实现允许估计大的运动。当分析呈现透明现象的场景时,由师泽和麦思[17]描述的运动估计技术可能是合适的。然而,在大多数自然场景中,简单的光流模型为我们的分割算法提供了一个很好的起点。

5.2运动分割

给定光流场,分割的任务是识别相干运动区域。当一组运动模型已知时,基于运动的分类可以直接跟随以识别相应的区域。然而,光学流场的相应运动模型最初是未知的。一个简单的解决方案是生成一组模型,这些模型可以描述序列中通常可能遇到的所有运动。这导致大的假设集,这是不希望的,因为用大量模型进行分类将在计算上很昂贵并且不稳定。
在我们的框架中,我们对运动数据进行采样,以得出一组可能在图像中观察到的运动假设。参考图10,区域生成器最初将图像分成几个区域。在每个区域内,模型估计器计算模型参数,为每个区域产生一个运动假设。这些区域的理想配置是对应于实际相干区域的配置。然而,这种配置是未知的,并且最终是我们想要在分段中获得的。
我们使用一组不重叠的正方形区域来导出一组初始运动模型。初始正方形区域的大小保持最小用以定位估计,并避免估计跨越对象边界的运动。更大的区域将在噪声情况下提供更好的参数估计。
这些区域内的仿射参数通过标准线性回归技术来估计。因为仿射模型是局部运动的线性模型,所以这种估计可以被视为速度空间中的平面拟合算法。回归分别应用于每个速度分量,因为x仿射参数仅取决于速度的x分量,而y参数仅取决于速度的y分量。如果我们假设aTi = [ax0i axx i axy i ay0i ayxi ayyi]是6维仿射参数空间中的第I个向量,其中axi T = [ax0 i axx i axyi]和ayi T = [ay0i ayxi ayyi]对应于x和y分量,T =[1 x y]是回归量,那么运动场方程2和3可以简单地写成:
公式6、公式7

(由于这些矩阵不方便直接复制过来,所以将这个部分原文截图放在下面:)
原文截图
并且对于给定的运动场,ai的线性最小二乘估计如下:
公式8每个区域都用变量 i 进行索引,并在每个区域内进行求和。
无论初始区域大小如何,许多仿射假设都是不正确的,因为初始正方形区域可能包含对象边界。假设的可靠性由其残差σi的平方来表示,其计算方法如下:
公式9
N是分析区域的像素数。残差大于规定阈值的假设被消除,因为它们不能很好地描述分析区域内的运动。
覆盖同一对象的区域的运动模型将具有相似的参数。这些用k-均值聚类算法[19]在仿射运动参数空间中分组,该算法被修改以允许自适应地确定k。在聚类过程中,我们为每组相似的模型导出一个有代表性的模型。这种模型聚类产生一组可能的仿射运动模型,这些模型由场景中的对象展示。此外,它在分割中提供了更大的稳定性,通过用单个模型而不是用各种类似的模型来表示单个相干运动区域。
比例距离,Dm(a1;a2),用于参数聚类过程,以便缩放参数空间中不同分量的距离。选择比例因子,使得沿参数空间中任何分量的单位距离大致对应于图像边界处的单位位移。
公式10、公式11
其中r时图像大致的维度。
在我们的自适应k-means算法中,首先选择一组相隔指定距离的聚类中心。然后每个仿射假设被分配到最近的中心。在分配之后,用聚类的平均位置更新中心。迭代地,修改中心,直到聚类成员不变,或者等价地,集群中心不变。在这些迭代过程中,一些中心可能会靠近其他中心。当任意两个中心之间的距离小于规定的距离时,两个聚类合并为一个聚类,将两个中心缩小为一个中心。通过这种方式,自适应k-means聚类努力用少量的中心来描述数据,同时最小化失真。通过选择具有最大成员的聚类,我们可以期望仅用几个运动模型来表示图像的大部分。

5.3通过假设检验进行区域分配

我们在假设检验框架中使用导出的运动模型来识别相干区域。在假设检验中,我们以最小化运动失真的方式分配图像中的区域。我们使用失真函数,G(I(x;y)):
公式12
i(x;y)表示模型的某个位置(x;y),V(x;y)是估计的局部运动区域,Vai(x;y)是对应于第i个仿射运动假设的仿射运动场。从等式12,我们看到G(I(x;当仿射模型精确描述区域内的运动时,y))达到最小值。然而,在处理真实序列时,情况往往并非如此,因此我们选择了一种将总失真降至最低的分配方式。
由于每个像素位置只分配给一个假设,我们通过最小化每个位置的失真来获得最小的总失真。当每个像素位置被分配给最能描述该位置的运动的模型时,就实现了这一点。通过以这种方式处理每个位置来识别相干运动区域。我们用下面的等式总结分配:
公式13
i0(x,y)是最小失真分配。
然而,并非所有像素都接收到分配,因为由光流估计产生的一些运动矢量可能不能正确描述图像运动。在违反光流估计所使用的假设的区域中,通常在物体边界处,运动估计通常难以使用仿射运动模型来描述。预期运动和观察运动之间的误差大于规定值的任何区域
阈值保持未分配,从而防止不准确的数据破坏分析。我们通过实验发现,1个像素的运动值提供了一个合理的阈值。
我们现在定义二元支持图,它将每个仿射假设的区域描述为:
公式14
因此,对于每个模型,其对应的区域支持图在其最能描述运动的区域中取值为1,而在其他地方取值为0。这些映射允许我们识别模型支持区域,并在随后的迭代中改进仿射运动估计。

5.4迭代算法

在最初的分割步骤中,我们使用正方形区域的数组。这些不会产生如上所述的最佳仿射模型集。然而,在第一次迭代之后,该算法产生一组仿射模型和经历仿射运动的相应区域。通过估计估计区域内的仿射参数,我们获得了更精确地描述区域运动的参数。在每次迭代中,分割变得更加精确,因为仿射运动模型的参数估计是在单个相关运动区域内执行的。
通过对相干区域应用附加约束,获得分割中的附加稳定性和鲁棒性。在重新估计模型之前,将这些约束应用于分割。因为仿射运动分类是在图像中的每一点用全局跨度的模型来执行的,所以模型可能巧合地支持经历不同相干运动的区域中的点,或者它可能支持具有不准确运动估计的点。通常,这导致模型支持彼此不相交的零星点。
图10所示的区域分离器和过滤器识别并消除这些点。当单个模型支持两个不相交的区域时,区域分割器将它们分成两个独立的区域,以便为每个区域生成一个模型。区域滤波器跟随分离器,它消除了小区域,因为小区域中的模型估计将是不稳定的。随后,模型估计器为每个可靠连接的区域产生运动模型。因此,区域分割器与区域过滤器结合,加强了运动区域的局部空间连通性。
有时分裂过程会产生两个区域,尽管它们可以用一个模型来描述。然而,这不是问题,因为为这些区域中的每一个估计的参数将是相似的。在模型合并阶段,对应于这些区域的模型将被聚类成单个模型。
当只有几个点被重新分配时,或者当迭代次数达到允许的最大值时,获得收敛(convergence)。这通常少于20次迭代。在运动分割算法结束时,未分配的区域在分割的细化步骤中被重新分配。在这一步中,我们通过根据仿射运动模型扭曲图像并选择最小化图像对之间的强度误差的模型来分配这些区域。
该分析通过使用当前运动分割结果来初始化下一对帧的分割,从而保持分割的时间一致性和稳定性。仿射模型参数和连续帧的分割将是相似的,因为对象的形状和运动从一帧到另一帧变化缓慢。除了提供时间稳定性之外,用先前分割的模型初始化的分析,对收敛会有更少的迭代。当整个序列上的运动分割完成时,每个仿射运动区域将通过相应的支持图和仿射运动参数在序列中被识别和跟踪。
通常,为了稳定,对后续帧的处理只需要两次迭代,并且参数聚类步骤变得微不足道。因此,大部分的计算复杂性是在初始分割中,每个序列只需要一次。

6.分层合成

上述的鲁棒分割技术为我们提供了一组不重叠的区域,它们像拼图游戏的碎片一样组合在一起。空间分离的区域可以被分配一个共同的标签,因为它们属于相同的运动模型。然而,鲁棒分割本身并不产生分层表示。分割器的输出不提供任何关于深度和遮挡的信息:所有的分段都位于一个平面上。
为了生成真正的分层表示,我们必须采取第二步。来自较长序列的信息必须随着时间的推移进行组合,以便能够积累一个层内的稳定信息。此外,必须建立层之间的深度排序和遮挡关系。这种结合的方法——鲁棒分割和之后的层累积——是当前工作的核心。以前的鲁棒分割器已经迈出了第一步,但没有第二步。(请注意,Darrell和Pentland在他们的鲁棒分割器中使用了一个"多层"神经网络,但是他们的神经层不包含关于深度排序或遮挡的信息,也不包含重叠区域。)
在推导每一层的强度和阿尔法图时,我们观察到不同帧中对应区域的图像仅通过仿射变换而不同。通过将这些变换应用于原始序列中的每个帧,不同帧中的对应区域可以用反向扭曲进行运动补偿。我们在运动补偿中使用双三次插值。
因此,当对每一层运动参数估计被精确估计时,相应的区域将在运动补偿序列中表现为静止的。层强度图和阿尔法图是从这些运动补偿序列中导出的。
然而,由于遮挡,补偿序列中的一些图像可能不包含对象的完整图像。另外,由于不同的照明条件,图像可能具有小的强度变化。为了恢复完整的表示图像和对象的边界,我们收集了图层中每个点的可用数据,并对数据进行了中值运算。该操作可以容易地被看作是:在由支持图定义的区域中,对运动补偿序列的时间中值的滤波操作。
早期的研究表明,运动补偿中值滤波器,能够比时间均值滤波器更好地增强噪声图像并保留边缘信息。
公式15
Layer i是第i层,而Mi,k(x;y)是通过层 i 的估计仿射变换扭曲原始序列的帧k获得的运动补偿图像。注意,中值运算忽略了层不支持的区域。在等式14描述的支持图中,这些区域由0表示。

最后,我们确定遮挡关系。对于每个图层,我们生成一个对应点数的地图,可用于构建图层的强度图。从更多数据生成的强度图中的一个点,在更多帧中可见,并且其在图层表示中的导出强度更可靠。根据逆仿射变换,这些图和相应的层强度图,被扭曲到它们在原始序列中的各自位置。通过强度和可靠性图的验证,层被分配了深度排序。从更多点导出的层,遮挡了从更少点得到的图像,因为遮挡区域在运动补偿阶段,必然具有更少的对应数据点。因此,来自运动分割和时间中值滤波的统计,提供了对象运动、纹理模式、不透明度和遮挡关系的必要描述。

7.实验结果

我们已经在惠普9000系列700工作站上实现了图像分析技术。我们用MPEG花园序列的前30帧来说明分析、表示和合成,其中第1、15和30帧如图6所示。图像尺寸为720 x 480。在这个序列中,树、花坛和一排房子向左移动,但速度不同。靠近摄像机的花坛区域,比靠近远处那排房子的区域移动得更快。
在一对帧上用多尺度由粗到细梯度方法获得的光流如图11a所示。请注意沿着树的遮挡边界的不正确的运动估计,如不同长度的箭头和指向上方的箭头所示。
第一帧的分割图如图11b所示。每个仿射运动区域由不同的灰度级描述。沿着树的边缘的最暗区域对应于运动不容易被仿射模型描述的区域。基于扭曲图像和最小化亮度误差的区域分配,重新分配这些区域,如图11c所示。
我们使用由75个不重叠的正方形区域组成的初始分割图,来导出一组仿射运动模型。然而,我们发现初始区域的准确数量在分割中并不重要。在分配阶段,从k-均值仿射参数聚类中选择剩余误差最小的10个模型进行模型测试。在大约五次迭代之后,使用四个仿射模型分割保持稳定。
我们发现,最初选择的模型数量可以从5个到15个不等,结果相似。这个初始分割需要大约两分钟的计算时间。包括中间操作在内的30帧运动分析的总计算时间约为40分钟。
我们使用第15帧作为图像对齐的参考帧。通过运动分割,我们能够从花坛和房屋层中移除树,并恢复遮挡区域。天空层没有显示。没有纹理的区域,如天空,不能很容易地分配到一个层,因为它们不包含运动信息。我们将这些区域分配到一个描述静止无纹理对象的单一层中。请注意,房屋和花坛层中的重叠区域正在经历类似的运动,因此,这些区域可以由任一层支持,而不会在合成中引入令人讨厌的伪像。
我们可以从图12的图层图中重建整个图像的近似序列,以及遮挡信息、描述对象运动的仿射参数和静止图层。图13显示了对应于图6中三幅图像的三幅合成图像。对象被放置在它们各自的位置,并且树对背景的遮挡可以正确地被层描述。
图15、16、17显示了MPEG日历序列的层分析结果。在这个序列中,一辆玩具火车沿着轨道推动一个球,而摄像机向右平移并缩小。图像左下角的一个小旋转玩具没有产生图层,因为它的运动无法估计。此外,还有日历,它相对于壁纸向下移动,并与壁纸组合成单层。这些区域用单层表示,因为从两个连续帧估计的这些区域,其中的运动可以用特定运动容限内的单个仿射运动来描述。为了处理这个问题,我们需要考虑不同时间尺度上的运动分析和分割。
目前,当图像中的运动区域可以很容易地由仿射运动模型描述时,我们的运动分析技术表现良好。因为我们的分析是基于运动的,为了分割和层提取的稳定性,区域必须有足够的纹理和大的尺寸。因此,有很少的前景物体经历仿射运动的场景适合我们的分析。分层模型不容易描述的复杂运动序列需要特殊处理。
图11(a)(b)(c)
图11:
(a):多尺度梯度法的光流;
(b):通过将光流聚类成仿射运动区域获得的分割;
(c):基于图像变形的一致性检验分割。用图层表示运动图像。

图12
图12:分别对应于图(a-c)中所示的树、花坛和房子的层。每一层的仿射流场是叠加的。

图13
图13:帧0、15和30分别由图(a-c)所示的分层表示重构.

图14
图14:在没有树层的情况下重建的序列分别如图(a-c)所示。

图15
图15:分别在图(a-c)中示出的MPEG日历序列的帧0、15和30。

图16
图16:分别对应于图(a-c)中所示的球、火车和背景的层。

图17
图17:分别合成图(a-c)所示的MPEG日历序列的第1、15和30帧。这些图像是从图16中的图层图像生成的。

8.比较

分层分解可用于图像压缩。在花园序列的情况下,我们能够合成一个完整的30帧序列,从每个层的一个静止图像开始。可以使用传统的静止图像压缩方案来压缩这些层。虽然我们还没有对压缩进行广泛的研究,但我们可以描述一些初步的结果[22]。
重建花园序列必须发送的数据包括强度图、阿尔法图和每个层的运动参数。为了压缩强度图,我们使用了JPEG编码器。地图中的一些块是空的,位于图层支持的有效区域之外;这些用表示空块的符号编码。其他块是部分空的,这些块被平滑地填充,这样JPEG就不会用比特来编码尖锐(虚假)的边缘。为了压缩阿尔法图,我们使用了链码,这是可能的,因为我们将阿尔法表示为二进制图像。运动参数可以在不压缩的情况下发送,因为它们每帧每层仅代表6个数字。
对于360 x 240的分辨率,我们可以使用300千比特来编码30帧(1秒)的花园彩色视频序列,对于720 x 480的分辨率,可以使用700千比特来编码。因此,数据速率分别为300和700千位/秒。序列的仿射运动参数需要40千比特。对于全分辨率序列,阿尔法图以60千比特的链码无损编码,颜色强度图以600千比特的JPEG编码。
数据压缩添加的唯一工件(作为工作对象的零部件)是那些与JPEG编码器相关联的工件,这些工件是固定的,它们被严格地附加到移动的层上。因此,它们不像传统编码器那样“闪烁”或“闪烁”。在上述数据速率下,信噪比为30 dB时,JPEG伪像仅略微可见。
分层编码过程本身可以添加工件,而不考虑数据压缩。例如,由于分层分割是不完美的,有一点天空附着在树的边缘,当树在房子上移动时,这变得可见。此外,运动的仿射近似是不完美的,因此层的合成运动与原始场景中的实际运动不完全匹配。并且时间累积过程会将模糊引入仿射扭曲不正确的区域。我们相信所有这些人为因素都可以通过分析过程的改进来减少。但是在任何情况下,即使层是在没有数据压缩的情况下传输的,重构的序列通常也不是原始序列的完美副本。可以发送错误图像,以便以额外数据为代价来校正重建图像的缺陷。
有趣的是,一些与分层编码相关的伪像,在均方误差意义上可能是严重的,但对人类观察者来说是不可见的。例如,天真的观察者不知道花坛的运动不是真正的仿射。重建的运动略有错误——并且从平方误差的角度来看这是非常错误的——但它看起来完全可以接受。

9.其他应用

因为分层表示将序列分成这样的部分:与场景有意义的关联的部分,所以有可能实现一些有趣的特殊效果。图14显示了没有树层合成的花园序列。这显示了如果没有树,场景会是什么样子;这是一个从未真正存在过的合成序列。遮挡区域被正确恢复,因为我们的表示保持了这些区域中的运动描述。请注意,普通的背景记忆无法达到效果,因为场景的各个区域正在经历不同的运动。
分层表示还提供了帧速率独立性。一旦序列被表示为层,就可以直接合成对应于任意时刻的图像。使用分层格式可以方便地进行慢动作和帧率转换。

10.结论

我们使用这样的分层图像表示:它提供了包含移动对象的场景的有用描述。图像序列被分解成一组层,每一层描述一个区域的运动、强度、形状和不透明度。遮挡边界在图层的alpha贴图(不透明度)中表示为不连续,不需要表示速度的明显不连续。
为了实现分层描述,我们使用鲁棒的运动分割算法,该算法随着时间的推移产生稳定的图像分割和精确的仿射运动估计。我们通过在算法的每一步适当地应用图像约束,来处理运动分割中的许多问题。我们首先估计图像中的局部运动,然后迭代地细化对象形状和运动的估计。一组可能的仿射运动模型由场景中的对象产生,这些对象是:在局部运动数据中被计算出来并在假设检验框架中使用的对象。层是在一系列帧上累积的。
分层表示可用于图像编码。可以使用四层来表示MPEG花园序列的30帧序列,以及每层的仿射运动参数;每一层由一个静止图像表示。这些层可以使用传统的静止帧编码技术进行编码。
合成序列提供了原始序列的近似重建。人们可以在适合分层编码的序列中实现大量的数据压缩。该方法对于容易用分层模型表示的序列更成功,即,包含经历简单运动的几个区域的序列。我们目前正在研究更复杂序列的扩展。
分层分解还在图像分析、帧速率转换和特效方面提供了有用的工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值