(转载地址:http://blog.sina.com.cn/s/blog_4b27c38d01019xlv.html 谢谢作者的分享)
根据全景外在表现形式可以分为柱形全景和球形全景两大类。柱形全景是最简单的全景,就是通常所说的"环视"。在柱形全景中,您可以环水平360度观看四周的景色,但是如果用鼠标上下拖动时,上下的视野将受到限制,上看不到天顶,下看不到地底;球形全景可以达到水平360度,上下180度的效果,在观察球形全景时,观察者位于球的中心,通过鼠标、键盘的操作,可以观察到任何一个角度,完全融入了虚拟环境之中。
场景360度三维全景:
场景型360度(水平、俯仰)根场景360度三维全景的是视角是水平360度,垂直180度,即全视角360X180。可
以说您已经融入了虚拟环境之中了。球形全景照片的制作比较复杂。立方体型全景照片
是由前,后,左,右,上,下6张照片拼接而成。相机位于立方体的中心,也是全视角。
目前拍摄的方式有两种:第一种,用常规片幅相机,以接片形式将拍摄对象,以及,前、
后、左、右、上、下,所有周围场景都拍摄下来。展示时须将照片逐幅拼接起来,形成空
心球形,画面朝内,然后观赏者在球内观看。第二种,它是利用鱼眼镜头或常规镜头拍摄,然后利用专用软件来拼接合成,这种形式所形成的影像只能借助计算机来观赏、演示。这两种拍摄手法均称作内球球形全景。
物体360度三维全景:
物体360度三维全景拍摄时围绕拍摄对象做等距的多维旋转拍摄,直至将整个球体拍遍。 展示时,将图片逐一拼接起来形成球形,画面朝外观看,这种拍摄手法称作外球球形全景。
物体全景是瞄准互联网上的电子商务的,它与风景全景的主要区别是:观察者在物体的(外面)
周围。物体全景也有很广的应用范围:商品和玩具展示,文物观赏,艺术和工艺品展示等等。
全景图概述
每当一个平面图像映射到一个弯曲的表面就会发生图象投影,反之亦然,这中现象特别常见于全景摄影。例如地球的球面可以映射到一块平坦的纸张。由于在我们周围的整个视场的可以被认为是作为球体的表面(对于所有观测角度),我们需要一种能将球形投影到2-D平面以便照片打印的方法。
窄视角 宽视角 (网格基本是方的)(网格严重扭曲) 小的视角相对容易进行形变并投影到平坦的纸上。但是,当试图把一个球形图像映射到一个平面上,有些变形是不可避免的。因此,每一种类型的投影仅仅尝试避免一种类型的失真,这是以牺牲其他失真为代价的。随着视场角增大,观测弧(viewing arc)变得更弯曲,从而全景投影类型之间的差异变得更加显着。什么时候使用那一种投影,在很大程度上取决于每个投影应用。在这里,我们集中介绍在几个最常用。
全景图的种类
Equirectangular:将球形的经度和纬度坐标,直接到水平和垂直坐标的一格,这个网格的高度大约宽的两倍。因此从赤道到两极,横向拉伸不断加剧,南北两个极点被拉伸成了扁平的网格在整个上部和下部边缘。 Equirectangular可以现实整个水平和竖直的360全景。
圆柱投影:类似equirectangular,只是随着目标接近南北两极,纵向也会拉伸,两极会发生无限的纵向拉伸(因此这个扁平网格的顶部和底部没有水平线)。由于这个原因,柱面投影不太适合具有非常大的垂直视角的图像。柱面投影是传统摆动镜头全景胶片相机所提供的标准投影方式。其对于目标尺寸的保持比直线投影更准确,然而这样就将平行于观测者视线的直线渲染成了曲线。
直线投影:主要优点在于,它把三维空间中的所有直线映射成二维网格上的直线。这种投影类型是大多数普通广角镜头所希望的,所以这也许是我们最熟悉的投影方式。它的主要缺点是,随着视角增加,它会大大加剧透视效果,从而导致在图像的边缘的对象产生歪斜。因此,对于远大于120度的全景图,一般不推荐直线投影。
鱼眼投影:目标是创建一个扁平的网格,到该网格中心的距离大约是实际可视角度的正比关系,这样产生的图像类似于观看一个镜面的金属球。这通常不作为全景摄影的拼接方式,但是当使用鱼眼镜头的时候,这种投影方式可以采纳。鱼眼投影的垂直和水平的角度限制为180度或更小,其得到的图像可以放在一个圆里。因此,当直线离图像网格中心越远,曲率就会越大。鱼眼镜头的相机在创建涵盖了整个视野的全景图时候很游泳,因为往往只需很少的照片,就可以创建全景。
摩卡托投影:和圆柱以及equirectangular投影关系非常密切。是这两种类型之间的一种折衷。和柱面投影相比,其产生更小的垂直拉伸和更大的可用的垂直角度,但是直线会更加弯曲。这个投影方式最有名的应用就是在平面地图上,我们也注意到,这个方法的另一种变形:横轴摩卡托投影,可以被用于生成很高的纵向全景图。
正弦投影:目标是保持所有网格区域的面积。如果用这种投影将地球变平,可以使用反变换再次形成一个面积和形状不变的球体。面积相等的特性是非常有用的,因为其保持了一致的水平和竖直分辨率。此投影类似的鱼眼和立体图投影,但它保持了纬线的完全水平。
立体图投影:和鱼眼投影类似,但它通过随着目标远离透视中心,逐渐进行拉伸的方法,保持了更好的透视感。这种透视增长的特性有点类似与直线投影的效果。
OpenCV快速实现全景拼接
最新版的opencv2.4里面有很多新元素。
stitching module 就是一个非常有用的. 在opencv的例程文件夹里,有一个很好的脚本叫做 stitching_detailed.cpp. 这个脚本包括了创建全景图的全部过程,包括特征提取,匹配,warp,以及合成。安装好opencv以后,可以简单的通过命令行来测试这个例程: $ ./stitching_detailed Univ*.jpg
这会使用默认参数来创建一个result.jpg的最终文件,来源的图片是以 "Univ"开头的jpg图像. 可以通过help察看一些设置
$ ./stitching_detailed --help
例如,可以改变投影的方式,默认是球面投影. 下面的例程用摩卡托投影法:
$ ./stitching_detailed Univ*.jpg --warp mercator
结果如下:原图像可以在这里找到
柱面
平面
摩卡托