1、全景图像拼接原理

1.1 RANSAC算法原理

RANSAC是“RANdom SAmple Consensus(随机抽样一致)”的缩写。它可以从一组包含“局外点”的观测数据集中,通过迭代方式估计数学模型的参数。它是一种不确定的算法——它有一定的概率得出一个合理的结果;为了提高概率必须提高迭代次数。

RANSAC的基本假设是:

(1)数据由“局内点”组成,例如:数据的分布可以用一些模型参数来解释;

(2)“局外点”是不能适应该模型的数据;

(3)除此之外的数据属于噪声。

局外点产生的原因有:噪声的极值;错误的测量方法;对数据的错误假设。

RANSAC也做了以下假设:给定一组(通常很小的)局内点,存在一个可以估计模型参数的过程;而该模型能够解释或者适用于局内点。

RANSAC的算法步骤:

1. 随机从数据集中随机抽出4个样本数据 (此4个样本之间不能共线),计算出变换矩阵H,记为模型M;

2. 计算数据集中所有数据与模型M的投影误差,若误差小于阈值,加入内点集 I

3. 如果当前内点集 I 元素个数大于最优内点集 I_best , 则更新 I_best = I,同时更新迭代次数k ;

4. 如果迭代次数大于k,则退出 ; 否则迭代次数加1,并重复上述步骤;

注:迭代次数k在不大于最大迭代次数的情况下,是在不断更新而不是固定的

其中,p为置信度,一般取0.995;w为"内点"的比例 ; m为计算模型所需要的最少样本数=4;

1.2 单应性矩阵估计

平面的单应性被定义为一个平面到另外一个平面的投影映射。

这边通过ransac算法来求解单应性矩阵。

1.3 图像拼接

使用RANSAC算法估计出图像间的单应性矩阵,将所有的图像扭曲到一个公共的图像平面上。通常,这里的公共平面为中心图像平面。一种方法是创建一个很大的图像,比如将图像中全部填充0,使其和中心图像平行,然后将所有的图像扭曲到上面。由于我们所有的图像是由照相机水平旋转拍摄的,因此我们可以使用一个较简单的步骤:将中心图像左边或者右边的区域填充为0,以便为扭曲的图像腾出空间。

2、图像拼接代码实现

使用RANSAC算法求解单应性矩阵 RansacModel类是用于测试单应性矩阵的类 里面包含了fit()和get_error()方法

fit()方法计算选取的四个对应的单应性矩阵

get_error() 是对所有的对应计算单应性矩阵,然后对每个变换后的点,返回相应的误差

class RansacModel(object):""" Class for testing homography fit with ransac.py fromhttp://www.scipy.org/Cookbook/RANSAC"""def __init__(self, debug=False):self.debug = debugdef fit(self, data):""" Fit homography to four selected correspondences. """# transpose to fit H_from_points()data = data.T# from pointsfp = data[:3, :4]# target pointstp = data[3:, :4]# fit homography and returnreturn H_fro

【计算机视觉】图像全景拼接 RANSAC相关推荐

  1. 计算机视觉第四次实验--基于RANSAC的图像全景拼接

    计算机视觉第四次实验–基于RANSAC的图像全景拼接 文章目录 计算机视觉第四次实验--基于RANSAC的图像全景拼接 一.明确图像拼接整体流程 二.APAP算法 三.算法流程: 四.最小割问题(最大 ...

  2. 计算机视觉(五)--图像全景拼接原理及实现

    一.图像全景拼接的原理 图像全景拼接就是将多张图片(两两间存在一定的重叠部分,可以是不同时间.不同视角或者不同传感器获得的)拼成一幅无缝的全景图或高分辨率图像的技术.也就是将两幅存在一定重合部分的图像 ...

  3. 计算机视觉--图像的拼接融合

    计算机视觉--图像的拼接融合 一.全景图像拼接原理介绍 1.1 背景介绍 1.2 基本原理 1.3 图像拼接整体流程 二.全景图像拼接实验 2.1 代码实现 2.2 不同场景的实验结果与分析 2.2. ...

  4. 计算机视觉:全景拼接(Panorama Stitching)

    计算机视觉:全景拼接(Panorama Stitching) 原理 环境 代码 示例 原理 全景拼接是将多幅图像拼接成一幅大尺度图像.同一个相机拍摄空间同一平面的两张图像,这两张图像之间的映射关系可以 ...

  5. Python计算机视觉——图像到图像的映射

    Python计算机视觉--图像到图像的映射 文章目录 Python计算机视觉--图像到图像的映射 写在前面 1 单应性变换 1.1 直接线性变换算法 1.2 仿射变换 2 图像扭曲 2.1 图像中的图 ...

  6. OpenCV C++案例实战十二《图像全景拼接》

    OpenCV C++案例实战十二<图像全景拼接> 前言 一.OpenCV Stitcher 1.功能源码 2.效果 二.图像全景拼接 1.特征检测 2.计算单应性矩阵 3.透视变换 4.图 ...

  7. 可以使用的图像全景拼接opencv

    引自:基于Python和OpenCV实现图像的全景拼接_半濠春水的博客-CSDN博客_python opencv 图片合成 使用环境opencv4.5.4.58,python3.6,numpy1.19 ...

  8. CV:计算机视觉技术之图像基础知识(二)—以python的skimage和numpy库来了解计算机视觉图像基础(图像存储原理-模糊核-锐化核-边缘检测核,进阶卷积神经网络(CNN)的必备基础)

    CV:计算机视觉技术之图像基础知识(二)-以python的skimage和numpy库来了解计算机视觉图像基础(图像存储原理-模糊核-锐化核-边缘检测核,进阶卷积神经网络(CNN)的必备基础) 目录 ...

  9. CV:计算机视觉技术之图像基础知识—以python的cv2库来了解计算机视觉图像基础

    CV:计算机视觉技术之图像基础知识-以python的cv2库来了解计算机视觉图像基础 目录 一.图像中的傅里叶变换 1.时域和频域 2.傅里叶变换 3.图像中的傅里叶变换

最新文章

  1. HBase shell 命令执行
  2. shell脚本——系统变量 与 变量(定义 使用 只读 删除)
  3. react篇章-React 组件-向组件传递参数
  4. 深拷贝的缺点_JavaScript 深拷贝
  5. 安装python3.6报错_CentOS 7下安装Python3.6 及遇到的问题小结
  6. Sigmoid函数与逻辑回归
  7. InstallShield For .Net制作.Net项目安装包之完整代码
  8. [css] ui设计中px、pt、ppi、dpi、dp、sp之间的关系?
  9. matlab怎么实现OFDM仿真,OFDMmatlab实现仿真源代码
  10. java.util.ResourceBundle用法
  11. STM32工作笔记0079---UCOSIII时间片轮转调度
  12. 教你用python爬虫下载1w+『ppt模板』
  13. 关于sourcetree这是一个无效源路径的解决办法
  14. 繁体字转换 java_java代码实现简体繁体转换
  15. mac日历显示国家节假日及补班日期
  16. 服务器七雄争霸官方网站,七雄争霸特效城堡半价购买 全新服务器等您来挑战...
  17. 无人配送这半年:从风口到浪潮
  18. 常见的java面试知识点
  19. 搜狗workflow项目研究(一)综述
  20. 蓝桥杯三月刷题 第10天

热门文章

  1. 运动用什么耳机比较好,运动蓝牙耳机推荐
  2. python折线图:y=2x+1,y=sinx
  3. 计算机考试邮件操作题,计算机考试操作题主要知识点
  4. 调度工具Rundeck安装使用
  5. 央视CCTV2对迅雷区块链应用技术“玩客云”做出代表性示例性表扬
  6. Bsin-PaaS:开源的企业级开发框架
  7. 获取Url地址中参数的3种方法
  8. 在spring引入log4j
  9. e舞成名3月新歌脚谱更新
  10. 在大数据时代下,数据资产成为了财富的新定义