无人机拍摄图片全景图拼接

发布时间:2019-03-08 浏览次数:110

                                                                                                 作者:林嘉文、宋戈、陈桦

背景介绍

光伏产业发展迅速,累计装机容量在 2016 年末达到 77.42GW,继 2015 年超越德国之后继续保持世界第一;光伏电站增量减少,光伏产业优化存量结构,推动产业技术升级,技术升级的一个主要方面是光伏电站运维方式,更加智能化的运维将是未来发展方向;目前光伏电站运维方法较为传统,主要依靠监控与巡检,所需人力成本巨大,无法平衡运维成本与收益,其中故障位置的检测成本占据了运维成本的绝大部分;光伏组件的热斑识别可以通过无人机航拍图片结合人工智能算法完成,极大降低电站运维所需的人力成本。热斑识别的展示考虑到GPS的精度问题,需要一个相对的位置展示,因此需要将可见光图片标记热斑之后拼接起来。

 

2.      无人机通过机身云台挂载可见光相机与红外光相机对光伏电站进行巡检,获取两类图像信息以及图像的附件信息,可见光图像和红外图像如下所示,附加信息主要包含无人机经纬度、高度,无人机姿态角,镜头焦距,焦平面分辨率四个信息。


 

3.      基于图像特征的拼接方法

大致思路:全景图像的拼接从两张图像的拼接开始。首先对每张可见光图像提取特征点,其次将两两图像中的特征点进行匹配,寻找在实际场景下为同一个点的特征点对,而后计算单应性变换矩阵(一种能够将图片A变换到图片B坐标系下指定位置的矩阵,用于后续拼接工作),最后将两两图像的重叠区域加权融合,得到拼接完毕后的图像。

主要步骤和算法:(1SIFT算法提取图像的特征点,(2)图像特征点匹配(3RANSAC算法计算单应性变换矩阵(4)简单线性加权融合图像

图像拼接的大体思路就是这样了,下面我们详细介绍每一步。

(1)      SIFT算法提取图像的特征点:

SIFT,全称为尺度不变特征转换(Scale-invariant feature transform),主要用来寻找图像中的局部性特征主要寻找方式是将图像展开成高斯差分尺度空间,在其中寻找极值点作为特征点,对每个特征点提取出一个抗尺度、抗旋转、抗光照的向量,作为该点的特征描述子。

通俗来说,在这一步,我们能够得到图像中的所有特征点及它们对应的特征向量。

 

SIFT算法流程图:


 

(2)      图像特征点匹配

比较最近邻距离与次近邻距离的SIFT匹配方式:

在上一步中,我们得到了所有图像的特征点及其特征向量,下面我们对不同图像的特征点进行匹配。

假设有两幅图像AB,对于图像A中一个特征点a的特征向量,我们在图像B中寻找与欧式距离最近的两个特征点,在这两点中,如果最近距离和次近距离的比值小于某个阈值ratio,则接受最近距离对应的特征点对,否则拒绝这一组点对。

直观理解:


则认为最近距离对应的两点为同一个点。

通俗来说,对于图像A中的一个特征点a来说,当a与图像B中的某个特征点b的相似程度足够高,以至于这个相似程度远远大于a和图像B中所有其他特征点的相似程度时,我们才接受ab的匹配。显然,如果降低上述比例阈值ratio,最终得到的匹配点数目会减少,但匹配点的相似程度会更高,反之亦然。

这一步结束后,我们就得到了两两图片之间的特征点匹配对。下一步,我们要基于这些匹配点对计算单应性变换矩阵。

(3)   RANSAC算法计算单应性变换矩阵

首先解释一下单应性变换的概念。单应性变换:将一幅图像中的所有点转化到另一幅图像坐标系下对应位置的变换。如下图所示,单应性变换表示左图中的点转换到右图中的点的过程。


 

RANSAC算法过程:

       假定拼接两张图片的过程中,至少需要n组特征点对才能估计出一个单应性变换矩阵。共有P组特征点对(P>n)。在这P组点对中随机选择n组,构成集合S1,用这n组特征点对估计一个单应性变换矩阵M1S1中的n组特征点对称为inliers

       M1去测试不在集合S1中的其他特征点对,若某组点对关于M1的投影误差在一定范围内,则将它放入S1中,归类为inliers

       将以上步骤重复若干次(一般为500次),每次保留inliers数目更多的模型对应的单应性变换矩阵,作为当前得到的最佳单应性变换矩阵。

       循环结束后,用当前所有的inliers重新估计一个单应性变换矩阵,作为最终的变换矩阵。

通过RANSAC算法,可以得到图像间的单应性变换矩阵,这样我们就知道了在拼接两张图像AB时,应该把A拼到B的什么位置。下一步,我们需要将两图的重叠部分进行融合。

(4)      简单线性加权融合:

由于光照、颜色等原因会使得两图交界部分产生明显的拼接痕迹,所以我们用需要特定的处理方法去淡化拼接痕迹。我们采用的解决思路是加权融合,使得重叠部分能实现两幅图像的缓慢过渡,具体做法是对于重叠部分的每个点,将两幅图像在该点的像素值按照一定的加权方式得到拼接后该点的像素值。如下图所示,对于重叠区域的任一像素点M,计算M和两原图中心点间的距离,假设分别为ab,且M在两图中的像素值分别为IaIb, 则在拼接后的图像中,点M的像素值为



通过上述四步,我们就完成了基于图像信息的两图拼接,我们使用下面展示的两张图片进行拼接,拼接效果如下图所示:

 



 

可以看到,在图像边缘部分出现了一些重影现象,但整体效果比较可观。

 

4.      基于图像特征拼接算法的提升:

针对初始拼接算法存在的一些缺陷,包括:对单应性变换矩阵的估计不够准确、图像融合方法不能够很好地消除一部分的重影,我们希望进行一些改进。同时,如果我们使用这种朴素的方法逐步拼接多张图片,会造成拼接误差的持续增加,为了避免这样的问题我们也需要有新的方法。

 

(1)       光束平差法优化单应性变化矩阵:

使用光束平差法能够从全局角度优化多张图片的单应性变换矩阵,达到全局最小的重投影误差。之所以它的效果这样优异,是因为它同时对相机内参矩阵、外参矩阵以及3D重构点的坐标进行估计,并通过迭代的方法逐步地逼近可能存在的最优解。一个简单的示意图如下图所示。


一旦我们求得3D点的坐标估计、相机内参矩阵的估计和外参矩阵的估计,我们就可以通过投影变换将每个相机投影出的图片放置到一张大的“画布”上,这样,所以的相机把图片投影上去之后就形成了多张图拼接在一起的初步结果了。

(2)      多频带融合代替简单线性加权融合:

上一步我们已经在“画布”上画上了很多张图片,但是这些图片在互相交叉的区域会显得非常凌乱,如果只是通过简单的线性加权就会出现严重的重影和模糊现象,所以我们用多频带融合的方法替代简单的线性加权融合方法。

       计算输入图像AB的高斯金字塔GAGB, 输入图像AB,得到GA0,GA1,GA2……GAnGB0,GB1,GB2……GBn

       计算输入图像的拉普拉斯金字塔LALA0,LA1,LA2……LA(n-1))和LBLB0,LB1,LB2……LB(n-1)

       将处于拉普拉斯金字塔同一层的图像进行加权融合,得到拼接后的图像金字塔LCLC0,LC1,LC2……LC(n-1)

       将高层的拉普拉斯金字塔一次扩展直至和LC0具有相同的分辨率,记作LC00,LC11,LC22……LC(n-1)n-1

       将上述得到的LC22……LC(n-1)n-1依次叠加则得到最终输出图像C

 

通过上述两个算法的提升,得到的全景图拼接结果就是下面这样啦!