【计算机视觉】图像全景拼接

本文介绍了图像全景拼接的原理与实现,包括SIFT特征匹配、RANSAC优化单应性矩阵、APAP精确配准以及网络流的最小割方法选择最佳拼接缝。实验分析表明,景深丰富的场景拼接效果优于景深单一的场景,而不同角度的图像拼接可能存在困难。
摘要由CSDN通过智能技术生成

1.实验原理

1.1图像拼接整体流程

  1. 根据给定图像/集,实现特征匹配。
  2. 通过匹配特征计算图像之间的变换结构。
  3. 利用图像变换结构,实现图像映射。
  4. 针对叠加后的图像,采用APAP之类的算法,对齐特征点。(图像配准)
  5. 通过图割方法,自动选取拼接缝。
  6. 根据multi-band blending策略实现融合。

1.2实验步骤的基本原理

1.2.1 SIFT算法(图像匹配特征)

SIFT是用于图像处理领域的一种描述。这种描述具有尺度不变性,可在图像中检测出关键点,是一种局部特征描述子。
SIFT算法相较于Harris算法精确不仅提高了精度,而且大大提高了关键点的稳定性,所以较为通用。
SIFT算法在多尺度空间由于采用DOG算子检测关键点,相比传统的基于LOG算子的检测方法,运算速度大大加快;
SIFT算法在构造描述子时,以子区域的统计特性,而不是以单个像素作为研究对象,提高了对图像局部变形的适应能力。

1.2.2 RANSAC算法( 图像匹配特征优化,求解单应性矩阵)
  • 优化
    SIFT算法的描述子稳健性很强,比Harris角点要来得精确,但是它的匹配正确率也并不是百分百的,会受到一些噪声点的干扰,有时就会因为不同地方有类似的图案导致匹配错误。
    RANSAC算法便是用来找到正确模型来拟合带有噪声数据的迭代方法。

  • 求解单应性矩阵
    RANSAC算法用于图像变换的单应性矩阵的计算。
    fit()方法对选择的4个点对拟合一个单应性矩阵。get_error()方法对每个对应点对使用该单应性矩阵,然后返回相应的平方距离之和,所以RANSAC算法能够判断哪些点对是正确的,哪些是错误的。
    在拼接的过程中,通过将响速和单应矩阵H相乘,然后对齐次坐标进行归一化来实现像素间的映射。通过查看H中的平移量,我们可以决定应该将该图像填补到左边还是右边。当该图像填补到左边时,由于目标图像中点的坐标也变化了,所以在“左边”情况中,需要在单应矩阵中加入平移。

具体参考上个实验博客。

1.2.3 APAP算法(精确图像配准,消除鬼影)

因为得到的透视变换矩阵是基于全局特征点对进行的,即一个刚性的单应性矩阵完成配准。为提高配准的精度,Apap将图像切割成无数多个小方块,对每个小方块的变换矩阵逐一估计。

Apap虽然能够较好地完成配准,但非常依赖于特征点对。若图像高频信息较少,特征点对过少,配准将完全失效,并且对大尺度的图像进行配准,其效果也不是很好,一切都决定于特征点对的数量。

这条博(https://blog.csdn.net/xuanwu_yan/article/details/9400321)里面较为详细地介绍了APAP算法的原理。

1.2.4 网络流的最小割和最大流(选取最佳拼接缝切割)

寻找最佳拼接缝算法中,Graph Cut很经典。它将计算机视觉问题和网络流联系在一起。寻找最佳拼接缝等价于求网络流的最小割。 在网络流问题中,最小割和最大流相等。

  • 最小割问题

一个有向图,并有一个源顶点(source vertex)和目标顶点(target vertex).边的权值为正,又称之为容量(capacity)
一个st-cut(简称割cut)会把有向图的顶点分成两个不相交的集合,其中s在一个集合中,t在另外一个集合中。
这个割的容量(capacity of the cut)就是A到B所有边的容量和。注意这里不包含B到A的。最小割问题就是要找到割容量最小的情况。

  • 最大流问题

跟mincut问题类似,maxflow要处理的情况也是一个有向图,并有一个原顶点(source vertex)和目标(target vertex).边的权值为正,又称之为容量(capacity)。
一个st-flow(简称flow)是为每条边附一个值,这个值需要满足两个条件1 0<=边的flow <<边的capacity2 除了s和t外,每个顶点的inflow要等于outflow。一个flow的值(value of the flow)就是t的inflow。Maxflow就是找到这个最大值。
会发现Mincut和maxflow的问题是对偶的,解出了maxflow也就知道了incut的解。

  • 解maxflow的算法Ford-Fulkerson,简称FF算法。
    (1)初始化,所有边的flow都初始化为0
    (2)沿着增广路径增加flow。增广路径是一条从s到t的无向路径,但也有些条件,可以经过没有满容量的前向路径(s到t)或者是不为空的反向路径(t->s)

两个定理:

  • 增广路径定理(Augmenting Path theorem):一个流f是最大流当且仅当没有增广路径。
  • 最小割最大流定理(Maxflow-mincut theorem):Maxflow的值等于最小割的容量。
1.2.5 multi-band blending策略(融合拼接图像曝光)

多波段融合的思想是对待融合的图像分别构建拉普拉斯金字塔,(拉普拉斯算子可以提取出图像的高频信息,在拉普拉斯金字塔中,越往上层的图像越高频)然后对同一层图像按照某种规则融合,一般是Alpha blending/Feathering;对于不同层图像(不同频率段的图像)进行不同规则的融合,高频部分blend slowly,低频部分blend quickly;对融合后的图像金字塔重建得到最终结果图,如下图。

在这里插入图片描述

2.图像拼接的实现与分析

2.1 核心代码

# -*- coding: utf-8 -*-
from pylab import *
from numpy import *
from PIL import Image

# If you have PCV installed, these imports should work
from PCV.geometry import homography, warp
from PCV.localdescriptors import sift

"""
This is the panorama example from section 3.3.
"""

# set paths to data folder


path = r"D:\testdata\sift"

# set paths to data folder
featname = [path + str(i+1) + '.sift' for i in
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值