MATLAB图像融合拼接

本文说明的内容是图像拼接,采用基于特征点的匹配方法将两张定点拍摄的照片进行拼接,合成一张图,将全景图生成简化成两张图片的拼接,具体可以分为以下几点:

掌握图像灰度化、图像投影变换、图像特征点提取、图像仿射矩阵变换及图像融合。

1、在数字图像的预处理中,灰度图像是进行图像识别与处理的基础。彩色图像转换为灰度图像的方法主要有平均值法、最大值法和加权平均值法。

2、图像的投影变换也是图像拼接不可或缺的过程,待拼接的图像素材往往不在一个坐标系下,直接拼接会因为角度的问题导致景物扭曲变形,目前普遍的方式是将图像投影到几何体表面上,如球面,立方体或柱面上。

3、特征点是进行本图像匹配方法的基础,质量的好坏将直接影响匹配的精度和效率,特征点应具有旋转、平移不变形等特性,保证不会因为相机的曝光等原因造成图像的错误匹配。

4、图像特征点提取之后,需要根据特征点计算图像的放射矩阵,从而对图像进行变换而实现拼接。放射变换的过程中,插值的方法确保图像不失真。

5、图像拼接完成后,最后需要将图像融合,使两幅图像不会因为曝光等原因造成可视的匹配错误。

图1 基于特征点图像拼接步骤

详细步骤:

1、图像的灰度化

在图像处理中,灰度化一直作为预处理的一部分,有时不仅仅是算法的需要,也是将三维降成一维从而减小计算量与增加运行速度的重要方法。彩色图像转换为灰度图像的方法有平均值法、最大值法及加权平均值法,其转换公式为:

平均值法,gray=(R+G+B)/3;

最大值法,gray=max(R,G,B)

加权平均值法,gray=(R×0.3+G×0.59+B×0.11)

其中 R、G、B 为红、绿、蓝分量,gray 为转换后的灰度值。本程序中采用matlab自带的rgb2gray函数,该函数是用加权平均值法计算的。

2、投影到柱面

图像投影是将待拼接的两幅图像投影到同一个坐标系下,这样能避免因角度问题引起图像中景物扭曲变换,可以分为球面投影、柱面投影、立方体投影。理论上,球面投影更加科学,但是球面投影带来的弊端是储存方式,所以柱面投影往往用的是更多的,柱面张开后是矩形,在数据存储方面具有优势。本方案采用柱面投影的方法,以下是投影公式:

图2 柱面投影几何关系示意图

3、特征提取

特征提取的算法有许多,其中Lowe提出的SIFT算法是一种非常有名的算法,得到了广泛的应用,也被不断地改良。这种算法是建立了多尺度空间,确定特征点的位置,同时确定特征点所在尺度,以达到尺度抗缩放的目的,并提取旋转不变特征描述符以达到仿射变换的目的。

特征提取分为两步,第一步是特征点的提取,在图像中找到一些具备一定性质的点,第二步为特征点增加描述,使特征点之间能相互区别。

3.1 特征点提取

特征点是图像中的一些特别的点,它是图像经过变化后得到的点,这些点应该具有一些性质:选取的特征明显,易于提取,在待匹配的图中足够多且分布广。

其中SIFT的特征点提取方法是先利用高斯卷积核生成尺度空间,因为高斯卷积核是实现尺度变换的唯一线性核。二维图像的尺度空间定义:

在寻找特征值时,为了减少计算量,只提取了半张图的特征点,当提取右半张图像的特征点时,每个特征点的横坐标值就需要增加半个图像宽度。

3.2 增加描述因子

仅仅找到特征点并不够,还应该为这些特征点增加一些描述,使特征点具备区别其他特征点的性质,这样就可以通过两幅图的相互匹配的特征点计算得到两幅图的仿射变换矩阵。

图3 特征点描述因子的示意图

如图3所示,每个点,根据它周围的点的方向,统计起来共同来描述这个点,那么这个点就有了描述因子,可以区别该特征点与其他特征点。该描述因子就具备了尺度不变性及旋转不变性。尺度的变化不改变方向,而旋转的变换只会引起直方图左移或右移。

4、图像排序

通过特征点,可以计算两幅图像的相关程度,就可以确定图像的排序,从而自动为图像寻找正确的顺序。

图4图片排序示意图

1、将图像分为两类,队列组和待排序组;

2、对待排序组每幅图计算左右半张图的特征点得到TempPointLft与TempPointRht;

3、计算队列组第一张的左半张和最后一张的右半张得到PointLft与PointRht;

4、找到匹配度最大按序排入队列;

5、重复步骤2-4.

5、计算仿射矩阵

得到了两幅图像之间的特征点,并且根据特征点一一对应的关系便可以得到两幅图像之间的相对关系(拉伸,旋转关系)。以此便可以计算出图像之间的仿射变换矩阵。

如图5所示,一张图片可以通过与仿射矩阵卷积完成变换,矩阵中各个值可以通过表1确定。由于后续的图像融合中需要运用到图像平移量,所以,对于仿射矩阵,不仅要求理解仿射矩阵意义,还需要知道各个参数所代表的变换意义。

表1 放射性变换中变换矩阵T的取值表

仿射性变换类型
平移 1 0 0 1
缩放 0 0 0 0
逆时针旋转 0 - 0
水平切变 1 0 0 1 0
垂直切变 1 0 0 1 0
整体切边 1 0 1 0

6、插值投影变换

在处理投影变换及后续图像融合中仿射变换中,都需要对坐标变换进行插值计算。如果简单的对坐标点取最近值,会使图像产生锯齿边(其实就是灰度值不连续的一种表现)。而双线性插值就能有效的削弱这种现象。

图6双线性插值示意图

7、图像融合

两幅图像确定了融合位置还是不够的,在融合区域会出现明显的边界,出现这种现象的原因一般有几种:一方面是亮度差值的存在;一方面是因为投影圆柱面,圆柱面的参数理论值与实际值之间的偏差造成;还有可能是图像获取时,采集到的图像本身就会出现边缘失真现象。针对拼接痕迹,采用浅入浅出的方法。拼接部分的两幅图像分别乘一个系数,该系数随着距离的变化而变化。

图7渐入渐出融合示意图

MATLAB图像融合拼接相关推荐

  1. matlab图像融合评价,MATLAB 图像融合评估算法

    MATLAB 图像融合评价算法 function laplacian(ori_A,ori_B) path(path,'FusionEvaluation/') %Ori_A = imread('cloc ...

  2. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  3. matlab图像融合

    matlab图像融合 [r,c]=size(y1);            %根据低频融合算法进行图像融合 for i=1:r            %首先取两幅源图像相应的小波分解系数绝对值最大者的 ...

  4. MATLAB实战系列(四十)-小波变换MATLAB图像融合

    前言 图像融合是综合两幅或者多幅图像的信息,以获取同一场景下更加准确.更加全面.更可靠的图像描述.图像融合可以克服单一图像在几何.光谱.和空间分辨率等方面存在的局限性. 以下是我为大家准备的几个精品专 ...

  5. nsct matlab,图像融合 NSCT算法 matlab

    [实例简介] 经典图像融合算法, NSCT算法,为matlab 和 C++ 混合编译,修改图像地址即可方便使用 [实例截图] [核心代码] NSCT └── NSCT_toolbox ├── atro ...

  6. 【MATLAB图像融合】[2]像素加权融合及图像融合的主观性

    一.像素加权融合 原理        在上一篇文章中提过,在MATLAB中,图像会以矩阵的形式读入.存入程序,对像素级的操作就是对矩阵中每个元素的操作.因此,如果想实现带权的操作,那么对像素点赋予权值 ...

  7. 非负矩阵图像融合MATLAB,图像融合的非负矩阵分解算法

    第 17 卷 第 9 期 2005 年 9 月 计算机辅助设计与图形学学报 JOURNAL OF COMPUTER2AIDED DESIGN & COMPUTER GRAPHICS Vol17 ...

  8. 【MATLAB图像融合】[13]PCNN脉冲耦合神经网络基本原理

    →这是一篇学习笔记. →但考虑要发出来,还是排版了,请放心食用. PCNN在图像融合中应用广泛 1.脉冲耦合的神经元之间有有耦合和无耦合两种形式.,有耦合的神经元之间存在能量传播,产生同步脉冲发放,从 ...

  9. MATLAB图像融合分割系统

    摘 要 图像分割是一种重要的图像分析技术.对图像分割的研究一直是图像技术研究中的热点和焦点.图像分割是一个很关键的图像分析技术,是由图像处理进到图像分析的关键步骤.它的目的就是把图像中感兴趣的那部分分 ...

最新文章

  1. 对LinqtoExcel的扩展 【数据有限性,逻辑有效性】
  2. SpringBoot+Vue 完整的外卖系统,手机端和后台管理,可以玩一下!
  3. 精益分析体系构建如何“因企制宜”?
  4. flex自定义的分区域状态显示控件——原创
  5. C++派生类对象和基类对象赋值
  6. 在Java web中使用json
  7. Ubuntu下安装NetBeans步骤和相关问题的解决方法
  8. Bailian4094 秘密会谈【水题】
  9. 转载:网关的概念以及形象的比喻
  10. 很好听,可没机会跟你分享
  11. Ubuntu 12.04下Proftpd FTP服务器配置
  12. 服务器系统计划任务不执行,Windows 2008 r2任务计划程序执行批处理失败问题解决方法...
  13. c语言成绩管理程序设计,成绩管理程序设计报告(含代码C语言
  14. 轨迹(形状)相似性判断与度量方法
  15. mysql修改字段类型语句
  16. 疯狂涨知识!拥有百万粉丝的大牛讲述学Android的历程,挥泪整理面经
  17. Eureka注册服时报错:Root name (‘timestamp‘) does not match expected (‘applications‘) for type `org.springfr
  18. 解读李子柒品牌:重新认识IP消费品
  19. 服务器dp接口显示器,DP接口功能十分强大_液晶显示器_液晶显示器应用技术-中关村在线...
  20. 基于PHP化妆品销售网上商城网站

热门文章

  1. 2008世界旅游大使中国赛区总决赛在正定华丽落幕
  2. mysql函数名称顿号_在中文Windows 7的输入中文标点符号状态下,按下列( )可以输入中文标点符号顿号...
  3. android 软解8k视频,外媒:别被忽悠了!手机目前支持8K视频毫无意义
  4. 27岁武大计算机博士生,入选华为“天才少年”
  5. Python全栈(十)Django框架之9.聚合函数和表达式
  6. 腰椎间盘突出伴马尾神经损伤患者不适合做哪些运动?
  7. Astah如何导出图片
  8. BIUT Blockchain Explorer功能介绍
  9. 逛InfoComm China 2019 必打卡展位之“亿联网络”
  10. 小米civi价格偏贵,要赢得消费者认可不容易