第9章 图像拼接
9 图像拼接
对齐图像和拼接成无缝图像的马赛克算法是计算机视觉领域最古老和应用最广泛的算法。拼接算法创建高分辨率的马赛克照片来生产今天的数字照片和卫星图片。他们通常绑定在数码相机上,用于创建全视角的全景美图。
图像拼接起源于摄影社区,大部分手动的密集方法基于经过调查的地面控制点,或者自动登记的关键点,用来将航空照片转变成大规模的马赛克照片。这个领域的一个关键进步是绑定调整算法,能够同时解决所有照相机的地点位置。从而产生全球一致的解决方案。在创建马赛克照片过程中另一个经常出现的问题是如何消除可视的场景,今年来已经发展了很多的技术。
在胶片摄影中,研制了特别的相机来拍摄超广角全景图,通常通过当相机在围绕自身轴线旋转时候露出的细缝来捕获场景。在20世纪90年代中期,图像对其技术开始应用于通过常见的手持相机拍摄全视角的无缝的全景图。最近这方面的工作已经提出了需要计算全球一致的平面图,用来移除由于视差和运动引起的模糊,并且处理不同的瑕疵。这些技术已经催生了大批的商业拼接产品,在Web上可以找到。
虽然最早期的技术工作是通过直接减少像素与像素之间的差异,最近的大部分算法是根据提取的一个稀疏特征集并且相互匹配,正如第四章所述。这些基于特征的图像拼接方法对场景运动有更加强健的优势,如果方式正确,速度也会更快。然而,最大的优势在于确认场景的能力,例如,自动发现无序的图像集的邻接关系,可以实现普通用户的全自动拼接。
那么,什么是图像拼接中的主要问题呢?对于图像对其,我们可以首先确定适当的数学模型,将一个图像的像素坐标与另一个图像的像素坐标联系起来。9.1节复习了我们已经研究过的基本模型并且提出了一些新的模型。接下来,我们必须以某种方式估计正确的路线来连接起图像不同的部分。第四章讨论了图片中哪些鲜明的特征可以被用来准确的将图像中不同的部分准确的配对。第8章讨论了怎样根据梯度下降来直接比较组合像素(还有其他的最优化技术)也能用来估计这些参数。当多图像存在于一个场景中时,捆绑调整可以用来计算一个全局一致的路线来发现图像之间的相互重叠。在9.2节,我们看看如何修改以前的技术,来创建全景图片的更好的技术。
一旦我们对其了图像,我们必须选择最终组合图像表面的方式来组合已经对其的图像。也需要算法来剪切或者混合重叠部分,即使存在视差,镜头变形,场景运动,或者其他异常情况。
9.1 运动模型
在对齐图像之前,需要建立数学关系来联系两幅图像中的坐标。常见的参数模型都可行,二维变换,平面角度变换,3D相机旋转,镜头扭转,映射到非平面(如圆柱形)的表面。
在2.1和6.1中已经讲了一些模型,特别是在2.1.5中,参数模型描述从不同的视角来看二维表面的变形,也就是8参数模型。我们看到一个相机应对只有旋转变化的应对策略。
在这部分内容中,我们复习了这些模型,将他们应用到不同的拼接场景中。同时,介绍了球形和圆柱形合成表面显示如何在有利的情况下,可以用来对其。决定哪些对其模型最适合于给定的场景或者数据集属于模型选择问题,本书没有讨论。
9.1.1 线性全景运动
调整图像时使用的最简单可行的运动模型,是简单的转化和2D范围内旋转。这正是同一种运动,你可以使用的,如果你有重叠的摄影照片。这是DH的一种技术青睐,称其为结合者。创建这些拼接,展现了可视化的缝合和不一致,添加进了艺术的影响,在Web上称为Flickr,全部在于全景摄像。转换和旋转同样是运动模型,弥补在应用程序中的小相机的议案,正如图片和视频的稳定和组合。
在6.1.3节,我们看到了两个照相机对于同一场景的映射可以用3*3单位矩阵来表示。考虑到矩阵M10时映射,从一个图像上的三维点像素映射到第二个图像上。
当P0矩阵的最后一排取平面方程N0_p+c0,一些点假定在这个平面上。例如:他们的差距是d0=0,我们可以忽略M10的最后一列和最有一行,因为我们不需要关心z缓冲区的深度。由此产生的但应举证~H10(3*3子矩阵M10的左上角)描述在两幅图像之间的像素的映射。
在观察的基础上形成的一些最早的图像拼接的算法。由于可靠的特征匹配技术尚未开发,这些算法使用直接的像素值匹配,例如直接的参数运动估计。进来拼接算法提取特征,与其匹配,经常使用稳健的RANSAC技术来计算一套inliners.最后计算单应性,例如,最小二乘问题的解决方案并给予相应的功能。应用公式反复迭代。
9.1.2 应用:Whiteboard和文件扫描
最简单的图像拼接应用时在一个平板扫描仪上将一系列的图片拼接在一起。比如你有一个大的地图,或者一个小孩的艺术作品,对你的平板扫描仪来说太大。扫描多个文件,确保有足够多的特征来确保足够数量的图片。接下来,采取连续的图像对,根据覆盖部分,提取特征,匹配他们,进行2D刚体变换。最好的匹配特征是使用两个点的RANSAC,有时有必要找到一个最好内联集合。最后在合成表面合成图像(例如,第一次的扫面对其),并且平均他们。你可以看到任何潜在的问题吗?
一个复杂的问题是2D变换是非线性的,所以你将不得不使用非线性最小二乘法或者将变换限制为正交变换,如6.1.3所述。
一个更大的问题存在于成对的校准过程中。对其对越来越多,解决方案可能改变以致不适应全局。在这种情况下,就需要全局优化程序。这种全局优化往往需要解决一个非线性方程组,尽管有时是线性的或者简单的变换,常规最小二乘是一种选择。
一个稍微复杂一点的情况是当你用白板或者其他大型平面对象来采取手持重叠的照片。常规模型是一种映射,但更复杂的模型,例如3D运动模型在理论上也可行。
9.1.3 全景旋转
最典型的全景图像拼接是当相机处于旋转中。试想你站在大峡谷的边缘。相对于几何中心偏远处,你跑动过程中(例如,跑向平面的无穷远处),相机处于旋转之中,这等价于所有的像素点离相机很远(图9.3).设置,我们得到简单的变换矩阵
其中,是简单的相机固有矩阵(2.59),假设,例如,像素从相机的光学中心开始记坐标,上面公式可以改写为
或
这表明了映射方程的简单性,使得所有运动参数准确。代替8参数的单应性模型,我们使用3,4,5参数的3D旋转运动模型,适用于焦距f已知,固定或者变化的情形。估算3D旋转模型使得每一图片本质上更加稳定,比估算一个8自由度的映射矩阵并选择大模型的图片拼接算法。
考虑到这个问题,如何更新旋转矩阵来最好的对其两个重叠的图片?考虑到9.5节给出的估算映射矩阵的估算方法,最好的方法是用不断增长的旋转矩阵来估算并更新,
在用不断变换的矩阵来更新矩阵之前,我们已经写了更新规则.使用2.35节给出的小角近似矩阵,我们可以重写更新矩阵
注意到矩阵中的实体与表6.1和方程6.19中使用的参数参数的一对一联系,例如
我们可以将这些规则应用到方程6.24和9.10中,得到
这给予了我们估算的线性方程。注意到这些更新规则依赖于目标视野的焦距,而独立于当前视野的焦距。这是因为组合算法使得目标存在小扰动。一旦旋转向量被计算出来,旋转矩阵可以用更新。
更新估算焦距的公式有些复杂,由Shum和Szeliski2000给出。在这里将不重复,因为在9.2.1节将要给出一个基于最小化3D射线区别的可供选择的更新规则将要给出。图9.4给出在3D旋转运动模型下4张图片的边缘。
9.1.4 缝隙填补
这部分讲的技术可以预估旋转矩阵和焦距。这些矩阵和焦距可以连接起来创建大的场景。然而,由于一系列错误,这方法只能生成闭合的360度的全景图。相反,总会存在漏洞或者重叠部分。
通过匹配第一幅图到最后一幅图来解决这个问题。两个不同的旋转可以预估错误。通过两个矩阵的四元数除商来区分这些不同之处。也可以通过错误配准来预估焦距。首先,将错误的四元数变换成一个角,用一下方程来更新焦距.
9.5a图显示了第一幅图和其他图片的末端。第一幅图和最后一幅图之间存在一个巨大的洞,由于使用了510的焦距,所以这个缝隙是32度。9.5b图显示了用468更新的焦距填补缝隙后的图片。这些Mosaics图几乎没有视觉错误,然后,9.5a图计算了含有9%的错误的焦距。相关工作已经进行,通过使用平移模型和圆柱形模型来解决焦距预估问题。
不幸的是,这个启发式方法只能工作于一维相机场景,而大部分情况下相机存在运动。9.2节介绍了用以在任意相机运动下移除缝隙和重叠部分的方法。
9.1.5 应用:视频聚合和压缩
图像拼接技术可以用于聚合和压缩由可移镜头的相机拍摄的视频。应用是由Teodosio和Bender1993提出来的,称之为salient stills。Irani, Hsu, and Anandan 1995,Kumar,Anandan,Irani1995,发展了Teodosio和Bender的想法,Irani和Anandan(1998)将其用于其他应用,例如视频压缩和视频索引。早期使用仿射运动模型而受到长焦距的限制,这些技术是由Lee, ge Chen, lung Bruce Lin1997总结的。他们引入了8参数模型并加入了MPEG-4视频压缩标准,图像拼接背景图层被称为video sprites。
在某种方式上说,视频拼接是直接的多图像拼接技术的总结(Steedly,Pal,和Szeliski 2005;Baudisch,Tan,Steedly 2006),潜在的大量独立出现的运动,相机空间,动态物体的理想化处理,这些都是新的挑战。例如,使用median filtering移动前景物体。可供选择的是,前景物体可以提取成独立的图层(Sawhney和Ayer 1996),在后期复合成全景图,有时作为多场景背景(Massey 和Bender1996),有时作为视频覆盖层(Irani和Anandan1998)。视频同样可以用来创建动画panoramic video textures(13.5.2节将给出),全景图像的不同部分将成为动画的帧(Agarwala,Zheng,Pal2005;Rav-Acha,Pritch,Lischinski2005),或者闪耀“video flashlights”到一个组合的mosaic场景(Sawhney,Arpa,Kumar2002)。
视频同样可以提供一个由移动相机拍摄的照片流来创建全景图。这些应用假设视野从一个点出发(光学中心),将会得到令人惊喜的结果。例如,VideoBrush系统(Sawhney,Kumar,Gendel1998)使用从图片中心剥离技术来创建有水平相机拍摄的全景图。这想法可以用于其他相机运动模型和组建自适应多种mosaics概念图片表面(Peleg,Rousso,Rav-Acha2000),同样可以创建立体全景(Peleg,Ben-Ezra和Pritch2001)。相关观点已经用于创建全景多面动画(Wood,Finkelstein,Hughes1997),和使用multiple-center-of-projection images(Rademacher和Bishop1998)和multi-perspective panoramas(Roman,Grag,和Levoy2004;Roman和Lensch 2006;Agarwala,Agrawala,Cohen2006)表示3维复杂场景全景图。
另一个基于视频的全景的变体是concentric mosaics(13.3.3节)(Shum和He1999)。替代创建单个全景图,完整的源视频保留下来并用于重新组合图片(来源于不同的相机)使用射线再次映射(光场景重构),所以是带着3维深度来构建全景图。同样的数据同样可以用于准确重建多基线图片深度(Peleg,Ben-Ezra,和Pritch2001;Li,Shum,Tang2004;Zheng,Kang,Cohen2007)。
9.1.6 柱坐标和球坐标
使用3D运动或者映射矩阵来对齐图片,首先使图片变形成球坐标,然后使用平移模型来对齐他们。然而,这仅仅工作在这些图片是由水平相机拍摄的或者有一个已知的倾斜角。
假设摄像机在标准位置,例如,其旋转矩阵式单位矩阵,所以其光轴可以对应轴,轴对应垂直方向。对应3维点坐标。
我们期望将图像投射到单位半径的柱面上(Szeliski 1996)。柱坐标由一个角度参数和一个高度参数决定,下面是坐标计算公式
正如图所示。从这联系中,可以得到映射坐标公式(Szeliski和Shum 1997),
是一个任意的规模因子(有时称为圆柱半径),可以设置来最小化图片中心规模。映射的逆坐标公式为
图片同样可以映射到一个球面上(Szeliski和Shum1997),这适用于最后的全景包括一个球面或者半球面,而不仅仅是一个柱面。在这种情况下,球面坐标由两个角度参数决定,3D球面坐标公式如下
如图所示,映射坐标公式(Szeliski和Shum1997):
逆坐标公式
注意根据全景透视参数和规模参数用公式9.17来计算坐标会更加简单。
柱面坐标图像拼接算法通常使用在相机处于水平面或者围绕其光轴旋转的场合(Chen 1995)。在这种情况下,不同旋转的图像关联于一个单纯的水平旋转。这使得他成为计算机视觉课程中最初的教学内容,以致完整的全景拼接算法(6.1,8.2,9.1.3节)被拒之门外。图9.8展现了一个由于水平旋转的全景图怎样拼接成柱面坐标下的场景(Szeliski和Shum 1997)。
专业的全景图片制作者通常使用倾斜头部使得他更容易控制倾斜角,以致在倾斜角度不合适的情况下得到改正。机动旋转头部有时用来获得较大的场景(Kopf,Uyttendaele,Deussen 2007)。不仅确保一个水平视野场景的重叠数量,同时使得他可以利用柱坐标和球坐标或者旋转变换来拼接图片。在这种情况下,像素坐标首先使用已知倾斜角来旋转,然后在投射到柱面或者球面上时平移角度(Chen 1995)。有一个已知的平移角度使得计算对其更加容易,因为输入图片的相关位置都已经提前知道,使得对其图片成为可能。图9.9展示了一个全3D场景图投射到球面的情形(Szeliski和Shum 1997)。
最后一个值得一提的坐标是极坐标,极轴沿着光轴而不是垂直轴,
这种情况下,映射方程变为
,r是径向距离(x,y),在平面扮演了相似角度。这映射为广视角的全景提供了一个有吸引力的视觉表面,同时是一个非常好的通过fisheye lense 2.1.6提到的分解模型。注意到的极小化,映射方程变为,相当于焦距的角色。