OpenCV实现图像拼接案例

目录
  • 一、penCV图像特征采集
  • 二、OpenCV 特征提取算法
  • 三、OpenCV特征提取
  • 四、OpenCV特征取精
  • 五、OpenCV透视转换

一、penCV图像特征采集

特征提取:

一幅图中总存在着一些独特的像素点,这些点我们可以认为就是这幅图的特征,成为特征点。

计算机视觉领域特征提取:

获取一幅图中存在着一些独特的像素点。

需要解决问题:

  • 1、提取图片中的特征点
  • 2、解决尺度不变性问题,不同大小的图片获取到的特征是一样的。
  • 3、提取到的特征点要稳定,能被精确定位。

二、OpenCV 特征提取算法

特征提取算法:

三、OpenCV特征提取

结果:提取到的特征很粗糙,不是很精确的特征点,导致效果很差。

要求:去粗取精,获取优秀的匹配点。

四、OpenCV特征取精

取一幅图像中的一个SIFT关键点,并找出其与另一幅图像中欧式距离最近的前两个关键点,在这两个关键点中,如果最近的距离除以次近的距离得到的比率ratio少于某个阈值T,则接受这一对匹配点。

五、OpenCV透视转换

透视变换是按照物体成像投影规律进行变换,即将物体重新投影到新的成像平面。透视变换常用于机器人视觉导航研究中,由于相机视场与地面存在倾斜角使得物体成像产生畸变,通常通过透视变换实现对物体图像的校正。

使用cv::warpPerspective()进行透视变换

void cv::warpPerspective(

cv::InputArray src, // 输入图像

cv::OutputArray dst, // 输出图像

cv::InputArray M, // 3x3 变换矩阵

cv::Size dsize, // 目标图像大小

int flags = cv::INTER_LINEAR, // 插值方法

int borderMode = cv::BORDER_CONSTANT, // 外推方法

const cv::Scalar& borderValue = cv::Scalar() //常量边界时使用

);

透视矩阵 :

获取特征矩阵:

a. 根据图像的4个顶点来获取特征矩阵

cv::Mat cv::getPerspectiveTransform( // 返回3x3透视变换矩阵

const cv::Point2f* src, // 源图像四个顶点坐标(点数组)

const cv::Point2f* dst // 目标图像上四个顶点的坐标(点数组)

);

b. 函数来计算透视矩阵H(3*3)

findHomography    (

InputArray     srcPoints,//源平面中点的坐标矩阵.vector<Point2f>类型

InputArray     dstPoints,//目标平面中点的坐标矩阵,vector<Point2f>类型

int     method = 0,

double     ransacReprojThreshold = 3,

OutputArray     mask = noArray(),

const int     maxIters = 2000,

const double     confidence = 0.995

)

六、OpenCV图像配准融合与图像反投影优化

图片拼接流程思想:

到此这篇关于OpenCV实现图像拼接案例的文章就介绍到这了,更多相关OpenCV 图像拼接内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python+OpenCV实现图像拼接

    本文实例为大家分享了利用python和OpenCV实现图像拼接,供大家参考,具体内容如下 python+OpenCV实现image stitching 在最新的OpenCV官方文档中可以找到C++版本的Stitcher类的说明, 但是python版本的还没有及时更新, 本篇对python版本的实现做一个简单的介绍. 由于官方文档中还没有python版本的Stitcher类的说明, 因此只能自己去GitHub源码上找, 以下是stitching的样例: from __future__ import

  • OpenCV全景图像拼接的实现示例

    本文主要介绍了OpenCV全景图像拼接的实现示例,分享给大家,具体如下: left_01.jpg right_01.jpg Stitcher.py import numpy as np import cv2 class Stitcher: #拼接函数 def stitch(self, images, ratio=0.75, reprojThresh=4.0,showMatches=False): #获取输入图片 (imageB, imageA) = images #检测A.B图片的SIFT关键特

  • OpenCV 图像拼接和图像融合的实现

    目录 基于SURF的图像拼接 1.特征点提取和匹配 2.图像配准 3. 图像拷贝 4.图像融合(去裂缝处理) 基于ORB的图像拼接 opencv自带的拼接算法stitch 1.opencv stitch选择的特征检测方式 2.opencv stitch获取匹配点的方式 图像拼接在实际的应用场景很广,比如无人机航拍,遥感图像等等,图像拼接是进一步做图像理解基础步骤,拼接效果的好坏直接影响接下来的工作,所以一个好的图像拼接算法非常重要. 再举一个身边的例子吧,你用你的手机对某一场景拍照,但是你没有办

  • opencv2实现10张图像上下左右拼接融合

    本文实例为大家分享了opencv2实现多张图像上下左右拼接融合的具体代码,供大家参考,具体内容如下 在前面的"opencv2两张图像拼接融合_基于SURF特征提取"博文中,实现了两张左右图像的拼接融合,后来我也实现了多张图像的拼接融合.但是opencv2自带一种函数,直接就实现了图像的上下左右拼接.具体程序如下: #include <iostream> #include<vector> #include <fstream> #include &quo

  • 基于Python和openCV实现图像的全景拼接详细步骤

    基本介绍 图像的全景拼接,即"缝合"两张具有重叠区域的图来创建一张全景图.其中用到了计算机视觉和图像处理技术有:关键点检测.局部不变特征.关键点匹配.RANSAC(Random Sample Consensus,随机采样一致性)和透视变形. 具体步骤 (1)检测左右两张图像的SIFT关键特征点,并提取局部不变特征 : (2)使用knnMatch检测来自右图(左图)的SIFT特征,与左图(右图)进行匹配 : (3)计算视角变换矩阵H,用变换矩阵H对右图进行扭曲变换: (4)将左图(右图)

  • Python+OpenCV实现图像的全景拼接

    本文实例为大家分享了Python+OpenCV实现图像的全景拼接的具体代码,供大家参考,具体内容如下 环境:python3.5.2 + openCV3.4 1.算法目的 将两张相同场景的场景图片进行全景拼接. 2.算法步骤 本算法基本步骤有以下几步: 步骤1:将图形先进行桶形矫正 没有进行桶形变换的图片效果可能会像以下这样: 图片越多拼接可能就会越夸张. 本算法是将图片进行桶形矫正.目的就是来缩减透视变换(Homography)之后图片产生的变形,从而使拼接图片变得畸形. 步骤2:特征点匹配 本

  • 使用c++实现OpenCV图像横向&纵向拼接

    功能函数 // 图像拼接 cv::Mat ImageSplicing(vector<cv::Mat> images,int type) { if (type != 0 && type != 1) type = 0; int num = images.size(); int newrow = 0; int newcol = 0; cv::Mat result; // 横向拼接 if (type == 0) { int minrow = 10000; for (int i = 0;

  • OpenCV实现图像拼接案例

    目录 一.penCV图像特征采集 二.OpenCV 特征提取算法 三.OpenCV特征提取 四.OpenCV特征取精 五.OpenCV透视转换 一.penCV图像特征采集 特征提取: 一幅图中总存在着一些独特的像素点,这些点我们可以认为就是这幅图的特征,成为特征点. 计算机视觉领域特征提取: 获取一幅图中存在着一些独特的像素点. 需要解决问题: 1.提取图片中的特征点 2.解决尺度不变性问题,不同大小的图片获取到的特征是一样的. 3.提取到的特征点要稳定,能被精确定位. 二.OpenCV 特征提

  • 详解C++ OpenCV实现图像拼接的原理及方法

    目录 前言 一.图像拼接相关原理 图像特征采集 特征提取算法 透视变换 透视矩阵 图像拷贝 二.案例实现 Step1:导入目标图片 Step2:特征点提取和匹配 Step3:图像配准 Step4:图像拷贝 Step5:图像融合 完整代码 三.总结 前言 本文以实现图像拼接为目标,把分割开的图像进行拼接还原,核心的内容包括:OpenCV图像拼接相关原理以及OpenCV图像拼接案例的实现 一.图像拼接相关原理 图像特征采集 一幅图中总存在着一些独特的像素点,这些点我们可以认为就是这幅图的特征,即为特

  • python opencv进行图像拼接

    本文实例为大家分享了python opencv进行图像拼接的具体代码,供大家参考,具体内容如下 思路和方法 思路 1.提取要拼接的两张图片的特征点.特征描述符: 2.将两张图片中对应的位置点找到,匹配起来: 3.如果找到了足够多的匹配点,就能将两幅图拼接起来,拼接前,可能需要将第二幅图透视旋转一下,利用找到的关键点,将第二幅图透视旋转到一个与第一幅图相同的可以拼接的角度: 4.进行拼接: 5.进行拼接后的一些处理,让效果看上去更好. 实现方法 1.提取图片的特征点.描述符,可以使用opencv创

  • 详解Python OpenCV数字识别案例

    前言 实践是检验真理的唯一标准. 因为觉得一板一眼地学习OpenCV太过枯燥,于是在网上找了一个以项目为导向的教程学习.话不多说,动手做起来. 一.案例介绍 提供信用卡上的数字模板: 要求:识别出信用卡上的数字,并将其直接打印在原图片上.虽然看起来很蠢,但既然可以将数字打印在图片上,说明已经成功识别数字,因此也可以将其转换为数字文本保存.车牌号识别等项目的思路与此案例类似. 示例: 原图 处理后的图 二.步骤 大致分为如下几个步骤: 1.模板读入 2.模板预处理,将模板数字分开,并排序 3.输入

  • python opencv 图像拼接的实现方法

    初级的图像拼接为将两幅图像简单的粘贴在一起,仅仅是图像几何空间的转移与合成,与图像内容无关.高级图像拼接也叫作基于特征匹配的图像拼接,拼接时消去两幅图像相同的部分,实现拼接合成全景图. 具有相同尺寸的图A和图B含有相同的部分与不同的部分,如图所示:             用基于特征的图像拼接实现后: 设图像高为h,相同部分的宽度为wx 拼接后图像的宽w=wA+wB-wx 因此,可以先构建一个高为h,宽为W*2的空白图像,将左图像向右平移wx,右图像粘贴在右侧.则右图像刚好覆盖左图像中的相同部分

  • OpenCV实现多图像拼接成一张大图

    本文实例为大家分享了OpenCV实现多图像拼接成大图的具体代码,供大家参考,具体内容如下 开始尝试merge函数,具体如下: 定义四个矩阵A,B,C,D.得到矩阵combine. #include<iostream> #include <core/core.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> using namespace std

  • python之OpenCV的作用以及安装案例教程

    OpenCV的作用及安装 OpenCV简介 OpenCV是一个开源的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.提供了Python.Ruby.MATLAB等语言的接口,并且实现了图像处理和计算机视觉方面的很多通用算法,可以给开发者调用. OpenCV应用领域 计算机视觉领域方向 人机互动 物体识别 图像分割 人脸识别 动作识别 运动跟踪 机器人 运动分析 机器视觉 结构分析 汽车安全驾驶 OpenCV涉及的技术 图像数据的操作: 分配.释放.

随机推荐