继图像拼接的课程设计之后,对这方面依旧十分感兴趣。很巧合的是,数图老师表示刚好手上有这么一个项目,要用到这方面的知识,可以让我去作为毕业设计。虽然距离毕业还远,不过如果能选到一个感兴趣并且有一定深度的题目还是很好的。这些天在看论文的时候,了解到这么一个强大的算法,打算写篇文记录下心得吧。
一些图像融合算法
图像拼接主要可以分为两个步骤:图像配准和图像融合。其中图像配准的目的是将图一场景中不同视角的图像投影到同一平面并进行对准。比如我之前这篇博客中使用SIFT特征检测和单应矩阵的目的,就是进行图像配准。
图像配准
经过图像配准之后,就需要进行图像融合。而图像融合的目的就是使两幅图像的重叠区域过渡自然且平滑。在上图中,可以看到明显的边界,这对拼接来说是无法接受的。这主要是因为外部亮度的变化(天空飘过了一朵萌萌的云彩?)以及曝光时相机参数不一致导致的。要消除或缓和这种现象,就需要进行图像融合。
主流的图像融合算法有:
1)加权平均法。这个很好理解,即简单的使用加权的方式从左边过渡到右边。这种方法效果一般,但算法实现极其简单,速度快。课设时我用的就是这个方法。
2)羽化算法 。这种方法过渡会比加权平均法自然,但会造成不好的模糊效果。
3)拉普拉斯金字塔融合。有的地方也称为多分辨率融合算法。这种方法是将图像建立一个拉普拉斯金字塔,其中金字塔的每一层都包含了图像不同的频段。分开不同频段进行融合效果出奇的好。这也是本文主要介绍的方法。
高斯金字塔、拉普拉斯金字塔
之前在写SIFT相关博客的时候说到过高斯金字塔。图像金字塔的意思无非就是对原图进行下采样,然后塞到一个C++的Vector或者其他什么语言中的数组里。在可视化的时候,最大的图像放在最下面,最小的图像放在最上面,所以称为图像金字塔。
图像金字塔
而高斯金字塔的每一层的构建步骤分为两步:首先对下一层的图像进行高斯模糊。这个步骤相信读者都了解,是图像处理中最基本的概念。然后删除模糊后的图像的偶数行和列,就得到了当前层的图像了。不断进行这个步骤,最终就得到了高斯金字塔。
拉普拉斯金字塔的构造需要用到高斯金字塔。拉普拉斯金字塔第i层的数学定义如下
每一层的定义
意思是拉普拉斯金字塔每一层的图像为同一层高斯金字塔的图像减去上一层的图像进行上采样并高斯模糊的结果。说的有点绕,可以看网上的这幅图进行理解。
高斯金字塔与拉普拉斯金字塔的关系
算法原理
1)首先建立两幅图像高斯金字塔,然后建立一定层数