全景图像拼接

全景图像拼接一、图像拼接1、图像拼接技术2、图像拼接算法分类二、拼接流程1、基本流程一、图像拼接1、图像拼接技术图像拼接技术就是将数张有重叠部分的图像(可能是不同时间、不同视角或者不同传感器获得的)拼成一幅无缝的全景图或高分辨率图像的技术。在医学成像、计算机视觉、卫星数据、军事目标自动识别等领域具有重要意义。2、图像拼接算法分类图像拼接目前有很多算法,图像拼接的质量,主要依赖于图像的配准程度,因此通过不同的图像匹配方式将算法分为以下两种:1、基于区域相关拼接算法该算法比较传统和普遍,从待拼
摘要由CSDN通过智能技术生成

一、图像拼接

1、图像拼接技术

图像拼接技术就是将数张有重叠部分的图像(可能是不同时间、不同视角或者不同传感器获得的)拼成一幅无缝的全景图或高分辨率图像的技术。
在医学成像、计算机视觉、卫星数据、军事目标自动识别等领域具有重要意义。

2、图像拼接算法分类

图像拼接目前有很多算法,图像拼接的质量,主要依赖于图像的配准程度,因此通过不同的图像匹配方式将算法分为以下两种:

1、基于区域相关拼接算法

  • 该算法比较传统和普遍,从待拼接图像的灰度值出发,对待配准图像中一块区域与参考图像中的相同尺寸的区域使用最小二乘法或者其它数学方法计算其灰度值的差异(1.通过累加各点灰度的差值,2.计算两块区域的对应像素点灰度值的相关系数,相关系数越大,则两块图像的匹配程度越高,3.两者中计算相关系数的效果更好)。对此差异比较后来判断待拼接图像重叠区域的相似程度,由此得到待拼接图像重叠区域的范围和位置,从而实现图像拼接。
    也可以通过FFT 变换将图像由时域变换到频域,然后再进行配准。对位移量比较大的图像,可以先校正图像的旋转,然后建立两幅图像之间的映射关系。

2、基于特征相关拼接算法

  • 于特征的配准方法不是直接利用图像的像素值,而是通过像素导出图像的特征,然后以图像特征为标准,对图像重叠部分的对应特征区域进行搜索匹配,该类拼接算法有比较高的健壮性和鲁棒性。
    在两幅图像对应的特征集中利用特征匹配算法尽可能地将存在对应关系的特征对选择出来。一系列的图像分割技术都被用到特征的抽取和边界检测上。

二、拼接流程

1、基本流程

将两幅或多幅具有重叠区域的图像,通过特征匹配将具有相同的特征点(SIFT特征点)的图像拼接在一起,将来自多个不同视角拍摄的图像变换到同一视角下,拼接成一张宽视野图像

1、针对某个场景拍摄多张/序列图像
2、计算第二张图像与第一张图像之间的变换关系

  • 提取特征点,生成描述符
  • 特征匹配

3、将第二张图像叠加到第一张图像的坐标系中

  • 图像映射、图像扭曲

4、变换后的融合/合成
5、在多图场景中,重复上述过程

三、特征匹配的噪声处理

在进行图像匹配之前都需要找出输入的两张图片(或者多张)的特征点(SIFT特征点)然后再匹配上这些特征点,但是这可能会出现一个问题,如果图像的噪声太大,会直接影响后来的匹配结果
要想尽可能的减少这些噪声点的影响,可以通过拟合特征点的方法。以下介绍几种拟合方法:

1、直线拟合

给定若干二维空间中的点,求直线 y = a x + b y=ax+by=ax+b ,使得该直线对空间点的拟合误差最小。直线确定步骤:1、随机选择两个点 2、根据该点构造直线 3、给定阈值,计算 inliers 数量
在这里插入图片描述在这里插入图片描述

2、圆拟合

用同样的方法,两点确定一条直线,三点可以确定一个圆,我们随机确定三个点,然后确定一个圆的方程,然后计算在圆上的 inliers 值。

3、曲线拟合

拟合一条较复杂的曲线,可以给定一个多项式给定一个方程式:我们求解出了这个多项式的参数,就相当于求解出了拟合的曲线。
在这里插入图片描述

在这里插入图片描述

四、RANSAC算法

RANSAC 是“RANdom SAmple Consensus”(随机一致性采样)的缩写。该方法是用来找到正确模型来拟合带有噪声数据的迭代方法。给定一个模型,例如点集之间的单应性矩阵,RANSAC 基本的思想是,数据中包含正确的点和噪声点,合理的模型应该能够在描述正确数据点的同时摒弃噪声点。 即从一组数据集(包含噪声点的数据集)中,能够从中挑选出正确的点,获取能够正确拟合的参数模型。

RANSAC算法的步骤:

  • 选择4对匹配特征点(选择4对特征点因为单应性矩阵有8个自由度,需要4个特征点,每个特征点都能构造2个方程,然后求解单应性矩阵,但是任意3个点或4个点不能在同一条直线上)
  • 根据直接线性变换解法DLT计算单应性矩阵H
  • 对所匹配点,计算映射误差
  • 根据误差阈值,确定inliers数量
  • 针对最大的inliers集合,重新计算单应性矩阵H

五、代码实现


from numpy import dot, array
from numpy import vstack
from pylab import *
from PIL import Image

from PCV.geometry import homography, warp
from PCV.localdescriptors import sift
np.seterr(invalid='ignore')
"""
这是3.3节中的全景示例。
"""

# 设置数据文件夹的路径

featname = ['H:\Pych\图像拼接\图片/yintong' + str(i + 5) + '.sift' for i 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
压缩包中包含的具体内容: 对给定数据中的6个不同场景图像,进行全景图拼接操作,具体要求如下: (1) 寻找关键点,获取关键点的位置和尺度信息(DoG检测子已由KeypointDetect文件夹中的detect_features_DoG.m文件实现;请参照该算子,自行编写程序实现Harris-Laplacian检测子)。 (2) 在每一幅图像中,对每个关键点提取待拼接图像的SIFT描述子(编辑SIFTDescriptor.m文件实现该操作,运行EvaluateSIFTDescriptor.m文件检查实现结果)。 (3) 比较来自两幅不同图像的SIFT描述子,寻找匹配关键点(编辑SIFTSimpleMatcher.m文件计算两幅图像SIFT描述子间的Euclidean距离,实现该操作,运行EvaluateSIFTMatcher.m文件检查实现结果)。 (4) 基于图像中的匹配关键点,对两幅图像进行配准。请分别采用最小二乘方法(编辑ComputeAffineMatrix.m文件实现该操作,运行EvaluateAffineMatrix.m文件检查实现结果)和RANSAC方法估计两幅图像间的变换矩阵(编辑RANSACFit.m 文件中的ComputeError()函数实现该操作,运行TransformationTester.m文件检查实现结果)。 (5) 基于变换矩阵,对其中一幅图像进行变换处理,将其与另一幅图像进行拼接。 (6) 对同一场景的多幅图像进行上述操作,实现场景的全景图拼接(编辑MultipleStitch.m文件中的makeTransformToReferenceFrame函数实现该操作)。可以运行StitchTester.m查看拼接结果。 (7) 请比较DoG检测子和Harris-Laplacian检测子的实验结果。图像拼接的效果对实验数据中的几个场景效果不同,请分析原因。 已经实现这些功能,并且编译运行均不报错!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值