计算机视觉—opencv图像拼接

一、图像拼接
1、图像拼接技术

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

2、图像拼接算法分类

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

  1. 基于区域相关拼接算法
    该算法比较传统和普遍,从待拼接图像的灰度值出发,对待配准图像中一块区域与参考图像中的相同尺寸的区域使用最小二乘法或者其它数学方法计算其灰度值的差异(1.通过累加各点灰度的差值,2.计算两块区域的对应像素点灰度值的相关系数,相关系数越大,则两块图像的匹配程度越高,3.两者中计算相关系数的效果更好)。对此差异比较后来判断待拼接图像重叠区域的相似程度,由此得到待拼接图像重叠区域的范围和位置,从而实现图像拼接。
    也可以通过FFT 变换将图像由时域变换到频域,然后再进行配准。对位移量比较大的图像,可以先校正图像的旋转,然后建立两幅图像之间的映射关系。
  2. 基于特征相关拼接算法
    于特征的配准方法不是直接利用图像的像素值,而是通过像素导出图像的特征,然后以图像特征为标准,对图像重叠部分的对应特征区域进行搜索匹配,该类拼接算法有比较高的健壮性和鲁棒性。
    在两幅图像对应的特征集中利用特征匹配算法尽可能地将存在对应关系的特征对选择出来。一系列的图像分割技术都被用到特征的抽取和边界检测上。
二、图像拼接基本步骤
1、基本流程
  1. 根据给定图像/集,实现特征匹配
  2. 通过匹配特征计算图像之间的变换结构
  3. 利用图像变换结构,实现图像映射
  4. 针对叠加后的图像,采用APAP之类的算法, 对齐特征点
  5. 通过图割方法,自动选取拼接缝
  6. 根据multi-band bleing策略实现融合
三、图像拼接原理
1、特征匹配

特征是要匹配的两个输入图像中的元素,为了给图像提供更好的特征匹配,采用角点匹配,进行定量测量。在视点变化时,角点特征是稳定的。角点检测算法有Harris角点检测算法、SIFT特征点检测算法、FAST角点检测算法、SURF特征点检测算法。
本次实验使用的Opencv stitch源码中默认第一选择是SURF特征点检测,第二是ORB特征点检测。
SURF(Speeded Up Robust Features)改进了特征的提取和描述方式,用一种更为高效的方式完成特征的提取和描述。它是SIFT的高效变种,也是提取尺度不变特征,算法步骤与SIFT算法大致相同,但采用的方法不一样,SURF算法要比SIFT算法更高效。

2、计算图像之间的变换结构

SIFT算法:变换过程在上一篇博客有详细介绍。
SURF算法:

  1. SURF使用Hessian矩阵来检测特征点,该矩阵是x,y方向的二阶导数矩阵,可测量一个函数的局部曲率,其行列式值代表像素点周围的变化量,特征点需取行列式值的极值点。
  2. 特征点定位:通过特征点邻近信息插补来定位特征点。
  3. 方向定位:通过计算特征点周围像素点x,y方向的哈尔小波变换,并将x,y方向的变换值在xy平面某一角度区间内相加组成一个向量,在所有的向量当中最长的(即x、y分量最大的)即为此特征点的方向。
  4. 特征描述子:选定了特征点的方向后,其周围相素点需要以此方向为基准来建立描述子。此时以 5 ∗ 5 5*5 5∗<
  • 5
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenCV是一个开源的计算机视觉库,它提供了许多图像处理和计算机视觉的功能。图像拼接是一种常见的计算机视觉任务,它涉及到将多张图像拼接在一起,形成一个更大的全景图像。在Python中,可以使用OpenCV库来实现图像拼接。 PyCharm是一种流行的Python集成开发环境(IDE),它提供了许多功能,包括代码编辑、调试、测试和版本控制等。使用PyCharm可以更方便地编写和运行Python代码,同时还可以利用其内置的调试工具来查找和修复代码中的错误。 要在PyCharm中使用OpenCV进行图像拼接,可以按照以下步骤进行操作: 1. 安装OpenCV库:在PyCharm中,可以通过PyPI(Python包索引)来安装OpenCV库。可以在PyCharm的终端中输入“pip install opencv-python”来安装OpenCV库。 2. 读取图像:使用OpenCV库中的imread函数来读取要拼接的图像。可以将这些图像保存在同一个文件夹中,或者使用不同的文件夹来分别存储它们。 3. 调整图像大小:为了使图像能够正确地拼接在一起,需要对图像进行大小调整。可以使用resize函数来调整图像的大小。 4. 合并图像:使用OpenCV库中的imwrite函数将调整大小后的图像合并在一起。可以使用cv2.imshow函数来显示合并后的图像,以便检查拼接的效果。 5. 保存图像:使用imwrite函数将合并后的图像保存到文件中。 以上是基本的图像拼接流程,具体实现时可能还需要考虑一些其他因素,例如相机标定、图像配准等。这些操作可以使用OpenCV库中的其他函数来实现。 总之,使用PyCharm和OpenCV库可以实现图像拼接,并且可以方便地进行调试和测试。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值