360度全景拼接中的若干问题及优化措施

2016-12-14 20:58孙昊琛
艺术科技 2016年10期
关键词:全景图全景纹理

摘 要:360度全景图是一种低成本的虚拟现实技术,能够增强与用户交互,并且其以图像拼接技术为手段,能够强化场景的渲染效果。全景技术是虚拟现实最直观、低廉的实现方法,在感官上实现的一种伪3D效果。本文通过分析360度全景拼接中存在的问题,提出了以下优化措施,以期能够实现高清图像的快速拼接。

关键词:390度;全景拼接;虚拟现实;全景图

360度全景图是一种对所拍摄场对象进行几何关系映射的平面图,展示了360度球型模型或立方模型内的所有场景,具有369度水平视角和180度垂直视角的图像,通过拖动鼠标左键,经过全景播放器的校正处理后,才能形成一种伪3D的视觉特征。

1 360度全景拼接中的图像校正

1.1 多次拼接带来的问题及优化措施

在拼接的时候,首先要计算出图像的变换模型,用两张图像的特征点进行匹配,然后为了得到一张全景图,用该模型变换待拼接的图像,最后才能拼合和融合图像。但是经过多次积累后,会使图像拼接后产生大面积的形变。所拼接的图像,一张是“待拼接图像”,一张是“参考图像”。在拼接的过程中,如果只是对“待拼接图像”进行图像变换,那么部分场景将发生一定程度的形变。为了尽可能降低场景发生形变的概率,保证场景不出现大的形变,本文提出了两个点优化措施:

(1)在图像大小方面,保持“待拼接图像”和“参考图像”二者相近。如果我们有4张图像,为了取得更好的效果,将其编为①、②、③、④,然后我们采用以下拼接步骤:

首先将①和②进行拼接,然后将组合的结果标记为“①②”;然后将③和④进行拼接,同时将组合的结果标记为“③④”;最后进行“①②”和“③④”的拼接,并将其拼合的结果标记为“①②③④”。

(2)将“待拼接图像”和“参考图像”轮流设置成为“待拼接图像”。此方法可以使这种形变不会全部集中于一个方向上。如果有四张图像,我们现在依次将它们进行编号,分别为a、b、c、d,如果想要拼接后的图像大小不变,可以根据以下步骤进行拼合:

首先我们将a设为参考图像,将b设为待拼接图像,然后将a和b进行拼合,将b进行图像变换,并将其拼合后的图像记为“ab”;然后我们将c设为参考图像,将拼合后的“ab”设为待拼接图像,拼合后的图像记为“abc”;最后将d设为待拼接图像,将拼合后的“abc”设为参考图像,将d进行图像变换,并将其拼合后的图像记为“abcd”。

使用上述两种方法进行拼接就能最大限度地减少大面积形变。

1.2 对全景图进行整体校正

在经过多次拼接之后,图像会在一定程度上产生形变。而在水平方向上,每一列像素点的个数基本一样,导致图像呈现出“弯曲”的状态,因此,我们需要将每列的像素点“移动”到同一水平线上,这样便能将图像“拉直”。但是,如果我们只是简单地移动像素,也不能有效地阻止部分图像的场景进行形变。因此,为了校正图像中场景的形变,可以采用以下解决算法:

第一,对每列中心位置进行计算,并及时在数组center中进行保存;

第二,在数组center中查找落在[centerpoint-1, centerpoint+1]中最多的区域,选择centerpoint为所有列期望的中心点,让其最终形成一条直线;

第三,为了构造出两个矩阵M和N,分别在真实中心位置和期望中心位置的上、下选取3对偏移值;

第四,为了得到图像变换模型,利用多项式变换公式:

(1)

将矩阵M和N作为控制点加以图像变换,那么,变换后的图像正是校正后的图像。

这种算法能够将原始图像中的发生形变的场景还原到较真实的场景,能够将“弯曲”的图像“拉直”。

2 360度全景拼接中的首尾相接问题及优化措施

2.1 图像首尾的确定

首先,在拼接和生成全景图之前,我们拥有的是一组单独的图像,这一组图像中的各种场景是拼接后的全景图像的最重要的构成元素。但是,究竟哪张图像应该成为全景图像的终点呢?哪张图像可以作为拼接起点呢?假设图像的首尾都是纯白色的背景,那么他们的拼合一定是无缝的;但是图像的首尾部分都是纹理细腻的场景,为了保证无缝的拼接,就必须要精确的缝合。因此,应该尽量根据图像的纹理特征熵值,在实现的过程中,我们来选取较为“简单的”区域作为图像的首尾,进行判断。那么我们可以用熵值来对图像中的纹理信息进行量化,熵值大,图像中包含的纹理信息大,熵值小,图像中的纹理少。熵值的定义以下面公式所示:

(2)

其中P(i,j)表示灰度共生矩阵在第i行、第j元素的值,L则表示灰度级的数目。

为了找出熵值最小的图像,在具体的实现中,我们要计算图像中部分区域的熵值(一般取图像中心区域)。这样不仅能够提高计算的精准度,同时也能进一步加快计算的速度。

其次,在处理首尾相接光线自然过渡的问题上,我们可以通过计算图像局部区域的纹理特征,将图像分成两部分分别作为全景图像的首、尾,满足一下公式(2)中的关系,找出熵值最小的图像。

2.2 首尾相接

在全景图的呈现过程中,应当尽量避免图像的首尾被用户看到。因此,本文引入了偏移值和图像斜率的定义,来保证图像首尾场景的无缝拼接。如果图像首尾的上、下端偏移值相等、图像斜率为0,那么,该图像是首尾相接的。事实上,如果我们只是将图像首尾附近的强行进行变换,图像也会产生严重的失真。为了解决这个问题,可以采用基于全局坐标约束的算法,通过图像变换,保持场景的真实性。并且为了实现图像的首尾相接,可以采用全局坐标变换约束,将场景区域的四个端点对应的坐标变换到目标图像的四个端点坐标,即图像中的每一块区域都参与图像的变换。

3 360度全景拼接中高清图像的拼接方案及拼接顺序的确定

在图像的拼合过程中,只有提高全景图的拼接速度,才能提高整体步骤的速度。在特征点的提取算法中,可近似看成与图像中像素点的总数成线性,关系图像的分辨率和算法的执行时间成正比。如果此时的图像分辨率较高,那么将耗费相当长的时间来提取特征点。此外,拼合十张左右的图像才能拼接成一幅360度全景图,这样算下来,最终会耗掉更多时间。因此,我们在拼接的过程中既要努力提高拼接的速度,同时又不能降低全景图的质量,这就要对“待拼接图像”进行采样,同时记录下采样的尺度,同时对采样的图像进行特征提取。在对图像的特征进行提取和认真匹配之后,再把特征点的位置乘以采样尺度,这样就将特征点的位置还原成为大图的位置。

如何从图像中找出与该图像有重叠部分的图像呢?在不引入其他信息下,当前需要找出与之“相邻”的图像,才能使该图像与所有图像进行特征匹配,这样会使算法的复杂性进一步增加,效率非常低下。因此,可以采用基于文件名命名规则的图像拼接序列自动感知算法。首先,按照文件名的大小,将待拼接的这组图像做升序排列,然后取前两张图像进行特征匹配。如果没有找到匹配区域,我们要先按照降序对组文件名进行排序,然后再进行特征匹配,匹配时取出排序后的前两张图像,如果找到了匹配,再按照该序列顺序进行拼接。

参考文献:

[1] 吴辉.全景影像的优化生成及其并行处理方法[D].南京:南京师范大学,2014.

[2] 赵卫林,陈继华,李勇.基于图像的经纬仪测量目标快速瞄准技术[J].宇航计测技术,2014,34(3).

作者简介:孙昊琛(1985—),男,山东聊城人,山西传媒学院制作系讲师,研究方向:影视摄影与制作。

猜你喜欢
全景图全景纹理
戴上耳机,享受全景声 JVC EXOFIELD XP-EXT1
使用纹理叠加添加艺术画特效
嫦娥四号月背之旅全景图
全景敞视主义与侦探小说中的“看”
TEXTURE ON TEXTURE质地上的纹理
从5.1到全景声就这么简单 FOCAL SIB EVO DOLBY ATMOS
消除凹凸纹理有妙招!
奇妙岛全景图
奇妙岛全景图