综合关注几篇的papers的图像融合算法,对整个过程作归纳,与大家分享(^_^)。基于sift特征的全景拼接方法的整个过程的大致流程:
- 对需拼接的图像进行预处理,主要是几何校正和消噪。对于几何校正,因为我们考虑的是视频的实时处理,那么我们只需考虑摄像机的所有运动形式,其中包含8个自由度,可用投影变换来表示。H=[m0 m1 m2;m3 m4 m5;m6 m7 1],考虑到它的算法复杂度已经有n的3次方,我们可以考虑通过控制摄像机的运动方式来减少复杂度,比如令摄像机只有平移旋转和缩放,即仿射变换,降低了一次复杂度。消噪的话考虑到DOG本身就是一种很好的带通滤波器,这一步省略。
- 提取图像SIFT特征点描述算子。由于高斯函数是唯一可能的尺度空间核函数,所以整个SIFT算法是基于“尺度不变”的特征。
- 对于二维图像的尺度空间L(X,Y,σ), 水平方向和垂直方向与滤波器(高通,低通)相卷积,从而得到G(X,Y,σ),即尺度可变高斯函数。
- 而DOG是不同尺度的高斯差分核和图像卷积而成[注]。DOG的方式相当于一个人从远和近两个不同的地方看景物,它的边缘是不会很大有变化的。由于它的边缘效应很强,所以会加强很多高频随机噪声。这时候需要去除不符条件的算子,通过拟合三维二次函数的得到一个理论的极值点函数,这时候需要设定一个比例,大于这个比例的点剔除。剔除之后要把特征点生成人眼适应的描述算子。
- 由于为了要让算子具备旋转不变性,我们在以特征点为中心的领域窗口采样,并用直方图统计邻域像素的梯度方向。10度一柱,直方图的峰值代表特征点处邻域梯度的主方向,即该特征点的主方向。为了增强系统的鲁棒性,当存在另一个相当于主峰值80%能量的峰值时,则将这个方向认为是该特征点的辅方向。然后将区域内所有点的梯度方向转过一个上述确定的主方向的角度(以确保旋转不变性)。
- 然后将区域分为4*4=16个正方形子区域,每个区域中的点按梯度大小和正态分布加权,绘制出8个方向的直方图,所以每个特征点可得到一个128维的描述子向量,然后继续将特征向量的长度归一化,去除光照变化的影响。
- 进行特征匹配,得到特征匹配对。以前都是采用Kd-Tree算法,我们在这里使用近似最近邻算法,即BBF算法。该方法采用一个优先级队列使搜索一次从节点与被查询节点距离由近及远的顺序进行。(BBF算法更适合维度高的特征向量,而SIFT特征是128维向量,较为实用)
- 匹配提取,得到鲁棒的特征匹配对。由于只采用RANSAC算法可能会导致鬼影现象,所以需要改进RANSAC算法,以RANSAC确定的配准误差阀值的90%作为配准阀值提取最终的仿射变换矩阵,增强鲁棒性。
- 进行图像融合。由于图像融合是为了视频做准备,实时性要求很高,所以复杂度高的算法在这里不适用。
- 在关注几篇论文里面都是采用线性融合算法对重合区域使用双线性插值,一般是渐入渐出的加权平均算法,这样虽然可以较快获得图像,但是重合部分较多时会造成耗时变长,重合区域会非常模糊,且图中若出现新物体时会让它的亮度大大降低。考虑到图像清晰度和实时性两点,以及这项技术如果实现得到应用之后的应用性,
- 中值滤波比较适合。主要思想是利用中值滤波器来解决重合部分像素值的突变。用直观的方式来解释的话就是利用中值滤波去除高于某个阀值的点,消除像素值的突变,保持光强连续性。中值滤波法的好处在于可以增强细节,保持较高频的图像信息,特别是突出变化目标,这非常实用。
- 如果我们能够改进中值滤波法,降低它在GPU上的运行时间,那它就可以作为一种最适合的方式。 还有就是关于消除拼接图像的鬼影效果,目前,考虑到我们采用的图像融合办法出现鬼影的概率不是很高,所以可以选择最简单的Collage算法。Collage算法好比拼贴画用特定图像覆盖重叠区域来形成图像,优点是简单迅速,但容易出现断层。所以需要用Seam cost function标准来评价,来提高拼接效果。
[注]2006年Michael Grabner简化了DOG算子,减少了运算量。DOG算子的优点在于它有很强的移植性和普适性。当K设为1.6时,即为高斯拉普拉斯算子的近似。而在DOG算法中,它是一种模拟视网膜上的神经从影像中提取信息从而提供给大脑,这是K约等于为5.
关于Image Engineering& Computer Vision更多讨论与交流,敬请关注本博客和新浪微博songzi_tea.
时间: 2024-11-03 03:38:58