1.1.3 图片拼接原理
刚才讲到要围绕镜头节点旋转并进行拍摄,才可以将相邻的两张图片进行拼接。通常使用软件通过算法进行拼接,主要原理是计算出相邻两张图片的位置关系,将其融合成为一张图片。目前主流的拼接软件有Photoshop、PTGui。拼接软件主要使用的拼接算法有两种,分别是基于区域特征拼接算法和基于光流特征拼接算法,这里主要介绍前者。
1. 基于区域特征拼接算法
基于区域特征拼接算法是最为传统和应用最普遍的算法之一。基于区域特征拼接算法从待拼接图像的灰度值出发,对待配准图像中的一块区域与参考图像中的相同尺寸的区域,使用最小二乘法或者其他数学方法计算其灰度值的差异,据此来判断符合拼接图像重叠区域的相似程度,由此得到待拼接图像重叠区域的范围和位置,从而实现图像拼接。
基于区域特征拼接算法是根据像素信息导出图像特征,然后以图像特征作为标准来搜索和匹配图像重叠部分相应特征区域的拼接算法。这种拼接算法具有比较好的稳定性。基于区城特征拼接算法有两个操作步骤:先提取特征,再对特征进行匹配。
例如,如图1-13所示,每对图片(图片1和图片2)之间都有25%的重叠。首先,从两个图像中提取具有明显灰度变化的点、线和区域;再将两个图像的特征集中,利用匹配算法尽可能将具有对应关系的特征位置对齐;最后将对齐的图像进行融合。
图1-13 上下、左右图片有重叠
2. 成功拼接图片的关键
VR全景图的拼接算法都基于两个画面的相关性,将相关性作为拼接的参考元素才可以成功拼接,所以我们拍摄的相邻两张图片必须要有足够的,能提供给计算机识别和计算位置关系的重叠画面样本,这是成功拼接图片的必要条件。
在VR全景图中,所拍摄的相邻两个画面的图片至少要保证有25%的重叠才可以有效地拼接,在25%的重叠中要保证有足够多的有特征的画面。如果相邻画面都为相同的纯色(如无云的蓝天、纯白色的墙壁等),就很难计算出相邻画面的位置关系,导致无法成功拼接。我们可以通过制造一些同时出现在两个画面中的特征,或者记录更大面积的重叠画面来保证图片拼接成功。
如图1-14所示,待拼接的图片素材共有5张,这里就有5个重叠区域,红色区域是相互重叠的内容,这样图片1和图片2就可以通过拼接软件进行拼接处理。这5张图片素材两两重叠就可以拼接出水平视角为360°的影像,如果中间有1张图片缺失,就会导致整个图片无法完整拼接,所以相邻图片之间的相互重叠是必需的。
图1-14 重叠图片