计算机视觉——全景图像拼接(作业四)

文章目录1. 基本原理1.1 图像拼接的几何原理2. 使用步骤1.引入库2.读入数据总结1. 基本原理本章学习内容为全景图像拼接,需要我们创建全景图、拼接图像。即将两幅或多幅具有重叠区域的图像,通过特征匹配将具有相同的特征点的图像拼接在一起,将来自多个不同视角拍摄的图像变换到同一视角下,拼接成一张宽视野图像。这里的特征点指代SIFT特征点,SIFT是具有很强稳健性的描述子,比起其他描述子,产生更少的错误匹配。以下是图像拼接的基础流程:针对某个场景拍摄多张/序列图像;计算第二张图像与第一张图
摘要由CSDN通过智能技术生成


1. 基本原理

本章学习内容为全景图像拼接,需要我们创建全景图、拼接图像。即将两幅或多幅具有重叠区域的图像,通过特征匹配将具有相同的特征点的图像拼接在一起,将来自多个不同视角拍摄的图像变换到同一视角下,拼接成一张宽视野图像。
这里的特征点指代SIFT特征点,SIFT是具有很强稳健性的描述子,比起其他描述子,产生更少的错误匹配。

以下是图像拼接的基础流程:

  1. 针对某个场景拍摄多张/序列图像;
  2. 计算第二张图像与第一张图像之间的变换关系:
    a. 提取特征点,生成描述符;
    b. 特征匹配;
  3. 将第二张图像叠加到第一张图像的坐标系中;
    a. 图像映射;
    b. 图像扭曲;
  4. 变换后的融合/合成
  5. 在多图场景中,重复上述过程

1.1 图像拼接的几何原理

全景融合的 3D 几何解释:

  1. 图像被投影到共同的拼接平面上(同一坐标系);
  2. 在拼接平面上实现全景融合;
  3. 在拼接的应用中,其实可以简化理解为 2D图像的变换,叠加过程;

1.2 2D图像变换原理

给定变换模型 x ′ = h ( x ) x'= h(x) x=h(x) ,以及输入图像 f ( x ) f(x) f(x), 根据 f ( x ) f(x) f(x)计算变换后的图像 g ( x ’ ) = f ( h ( x ) ) g(x’) = f(h(x)) g(x)=f(h(x))有两种方法,分别为前向映射和逆向映射。

前向映射
对于 f ( x ) f ( x ) f(x) 中的每个像素 x x x,根据变换模型计算相应的映射坐标 x ′ = h ( x ) x' = h( x ) x=h(x) ,并将 x x x的像素值赋给 g ( x ′ ) g ( x') g(x)
在这里插入图片描述
当像素落在两个像素之间时:近邻插值
在这里插入图片描述

逆向映射
对于 g ( x ′ ) g ( x') g(x)中的每个像素 x ′ x' x,根据变换模型计算相应的映射坐标 x = h − 1 ( x ′ ) x = h^{−1} ( x') x=h1(x),并将x的像素值赋给 g ( x ′ ) g( x') g(x)
在这里插入图片描述
当像素落在两个像素之间时:线性插值/双线性插值:
在这里插入图片描述

介绍一下主要的插值方法:

  1. 最近邻插值;
  2. 线性插值;
  3. 双线性插值;
  4. 三线性插值;

图像映射流程

  1. 针对两张/多张图像提取特征;
  2. 特征匹配;
  3. 根据图像变换特点,选取合适的变换结构;
  4. 根据DLT等方法计算变换结构;
  5. 采用正向/逆向映射,利用插值方式实现图像映射变换;

1.3 直线拟合

给定若干二维空间中的点,求直线 y = a x + b y = ax + b y=ax

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
压缩包中包含的具体内容: 对给定数据中的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检测子的实验结果。图像拼接的效果对实验数据中的几个场景效果不同,请分析原因。 已经实现这些功能,并且编译运行均不报错!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值