基于Harris的图像拼接技术(MATLAB源代码)

合集下载

在Matlab中进行图像配准和形变分析

在Matlab中进行图像配准和形变分析

在Matlab中进行图像配准和形变分析图像配准是计算机视觉和医学影像处理中的一个重要技术,它用于对多个图像进行比较、分析和匹配。

图像形变分析则是对配准后的图像进行进一步分析,得到图像中的形变信息。

在Matlab中,有多种方法可以实现图像配准和形变分析,下面将介绍一些常用的方法及其应用。

一、基础知识在进行图像配准和形变分析之前,需要了解图像的基本概念和表示方式。

在Matlab中,图像通常表示为一个矩阵,每个元素代表图像中某个像素的灰度值或颜色值。

图像配准的目标是将两幅或多幅图像进行对齐,使它们在空间上完全或部分重叠。

为了实现配准,需要找到两个图像之间的几何变换关系。

常见的几何变换包括平移、旋转、缩放和仿射变换。

形变分析是对配准后的图像进行进一步分析,得到图像中的形变信息。

形变可以分为刚体形变和非刚体形变。

刚体形变是指图像中的物体保持形状和大小不变,只发生位置上的改变;非刚体形变是指图像中的物体发生形状和大小的改变。

二、图像配准方法1. 特征点匹配法特征点匹配是一种常用的图像配准方法。

它通过在图像中提取出一些显著的特征点,如角点和边缘点,然后在不同图像之间进行特征点的匹配,从而得到两个图像之间的几何变换关系。

在Matlab中,可以使用SURF算法(加速稳健特征)来提取特征点,并使用RANSAC算法(随机抽样一致性)来进行特征点的匹配。

通过这种方法,可以实现较好的图像配准效果。

2. 互信息法互信息是一种在图像配准中常用的相似性度量方法。

它通过计算两个图像间的信息增益来评估它们的相似性。

在Matlab中,可以使用imregister函数来实现基于互信息的图像配准。

3. 形状上下文法形状上下文是一种用于描述和匹配不同形状的方法。

在图像配准中,可以使用形状上下文来描述图像中的特征点,并基于形状上下文的距离度量来进行特征点的匹配。

在Matlab中,可以使用shape_context函数来实现形状上下文法。

三、图像形变分析方法1. 网格形变法网格形变是一种常用的图像形变分析方法。

浅谈基于matlab的图像拼接技术在医学图像处理中的应用_李娟

浅谈基于matlab的图像拼接技术在医学图像处理中的应用_李娟

JOURNAL OF JINING MEDIC AL UNIVERSIT Y V o l132No.62009#方法#技术#浅谈基于matlab的图像拼接技术在医学图像处理中的应用李娟张宝昌孙娟(济宁医学院现代教育技术中心,山东日照276826)摘要医学拼接在医学影像研究中有着广泛的应用。

利用图片对器官整体研究时,需要将具有重叠区域的多源信道所采集到的关于同一器官的图像进行图像配准、图像融合等图像拼接技术处理,生成一副关于器官的立体影像图。

本文讨论了医学图像处理中图像拼接的几种基本算法。

每种图像拼接算法在图像处理中都有各自不同的处理效果,各有优、缺点。

在实际使用中,根据不同的情况采用不同的拼接算法,以达到更好的效果。

关键词医学成像;图像匹配;图像拼接;图像配准;图像融合中图分类号:T P391文献标志码:A文章编号:1000-9760(2009)12-0433-04Analysis of image stitching technology in medical image processingLI J uan,ZH A N G Bao-chang,S UN J uan(Center o f M odern Educational T echnolog y,Jining M edical U niv ersity,Rizhao276826,China)Abstract:Medical images in medical research have a wide range of a pplications.It is needed to have overlap-ping regions of multi-source channel of the collected images on the same organs,im age registration,image fusion processing and other image-splicing tec hniques to produce a three-dimensional image of the organ,when we use pictures to c omplete a comprehensive study of the organ.This artic le discusses several ba sic algorithm of image m osaic in m edical image proc essing.Each image mosaic algorithm and image proc essing have different treatment, eac h with its own advantages and disadvantages.I n practice,ac cording to the different circum stances of different splicing algorithm,in order to achieve better results.Key words:Medical imaging;Imaging matc hing;Image mosaic在医学影像学方面,大幅度的全景图像能帮助医生对病灶及其周围部位的情况进行全面、直观地观察[1];然而显微图像的放大倍数与视野范围一直是不能兼得的。

matlab图像融合课程设计

matlab图像融合课程设计

matlab图像融合课程设计一、课程目标知识目标:1. 学生能理解图像融合的基本概念,掌握MATLAB软件在图像处理中的应用。

2. 学生能掌握图像融合的基本方法,如加权融合、多尺度融合等,并了解各自优缺点。

3. 学生能运用MATLAB实现不同类型的图像融合,并对融合效果进行定量和定性分析。

技能目标:1. 学生能运用MATLAB软件进行图像预处理,如读取、显示和保存图像。

2. 学生能运用MATLAB编程实现图像融合算法,并对融合参数进行调整。

3. 学生能运用相关评价指标对融合效果进行评估,提出优化方案。

情感态度价值观目标:1. 学生通过学习图像融合技术,培养对图像处理领域的兴趣和热情。

2. 学生在团队协作中,培养沟通与协作能力,提高解决问题的信心和责任感。

3. 学生通过了解图像融合在现实生活中的应用,认识到技术发展对社会进步的重要性。

课程性质:本课程为选修课,适用于高年级本科生或研究生,旨在帮助学生掌握图像融合技术,提高实际问题解决能力。

学生特点:学生具备一定的数学基础和编程能力,对图像处理领域有一定了解,但可能对MATLAB软件应用和图像融合技术尚不熟悉。

教学要求:课程注重理论与实践相结合,要求学生在掌握基本理论知识的基础上,通过MATLAB实践操作,提高解决实际问题的能力。

教学过程中,注重启发式教学,引导学生主动探索和思考,提高学生的创新意识和实践能力。

通过课程学习,使学生能够独立完成图像融合相关任务,并为后续深入研究打下基础。

二、教学内容1. 图像融合基本概念:图像融合的定义、分类及其应用场景。

2. MATLAB图像处理基础:图像的读取、显示、保存等基本操作,以及MATLAB图像处理工具箱的介绍。

3. 图像融合方法:- 加权融合法:原理、实现步骤及MATLAB编程示例。

- 多尺度融合法:原理、实现步骤及MATLAB编程示例。

- 其他融合方法:如基于变换域的融合方法、基于稀疏表示的融合方法等。

基于Harris—Laplace特征点的多时相SPOT图像配准方法

基于Harris—Laplace特征点的多时相SPOT图像配准方法

7 3
中, 若使 得 归一 化 的 L pae函数 al c
L ( , n= .L ( , ) y ,r I P X o )o 2 + , o ) - n 1 (
[ 者 简 介】 朝 辉 ( 9 6 ) 男 , 苏 常 州 人 , 教授 , 士 , 究 方 向 : 字 摄 影 测 量 与 图像 匹 配 。 作 杨 17 一 , 江 副 博 研 数
第 2期
杨朝 辉 : 于 H r s L pae特征 点的 多时相 S O 基 ar - a lc i P T图像 配 准方 法
Vo . NO 2 1 29 .
J n. 2 2 u 01
基 于 H ri L pae ar — a lc 特征 点的 s 多时相 S OT图像配准方法 P
杨 朝 辉
( 州科技学 院 环境科学与工程学院 , 苏 苏州 251 ) 苏 江 10 1
摘 要 :提 出 一 种 改 进 的 多 时 相 S O P T图 像 配 准 方 法 。首 先 通 过 分 块 提 取 H— L特 征 点 , 保 特 征 点 分 布 均 匀 : 后 确 然 对 H L特 征 点 进 行 匹 配 , 过 R N A — 通 A S C一 致 性 检 验构 建 配 准模 型 ; 后 利 用 图像 重 采 样 得 到 图 像 配 准结 果 。 验 结 最 实 果 表明 , 该方 法 能 够 有 效 地 解 决 不 同时 相 S O P T图像 在 几 何 变形 、 物 改 变 等 情 况 下 的 配 准 , 有 较 高 的 自动 化 程 度 地 具
式 中 :e[ = — 2t c [ = 曰, 为判 断 阈值 , dt M]AB C , ae r M]A+ 死 k为经 验值 , 常为 00 ~ . 。 提取 出的 H ri 特征 点 通 . 00 在 4 6 ar s

在Matlab中进行图像融合与图像叠加的方法与技巧

在Matlab中进行图像融合与图像叠加的方法与技巧

在Matlab中进行图像融合与图像叠加的方法与技巧引言:随着数字图像处理和计算机视觉领域的发展,图像融合和图像叠加变得越来越重要。

图像融合是指将多幅图像合成为一幅具有更清晰、更丰富信息的图像,而图像叠加则是在保留所叠加图像的原始信息的同时,使图像更加丰富和易于理解。

Matlab作为一种强大的科学计算工具,提供了丰富的图像处理函数和工具箱,可以很方便地进行图像融合与图像叠加。

一、图像融合的方法与技巧1. 融合算法图像融合的基本方法有加权平均法、空间域融合法、频域融合法、小波融合法等。

加权平均法是最简单的方法,通过计算图像像素的平均值来融合。

空间域融合法是通过对直接融合的图像进行空间域操作来提取融合结果。

频域融合法则是通过将图像转换到频域,然后进行频域操作来实现融合。

小波融合法是基于小波变换的方法,利用小波分析的多尺度分解能力对图像进行分析和融合。

根据具体需求和图像的特点,选择合适的融合算法是非常重要的。

2. 图像预处理在进行图像融合之前,通常需要进行图像预处理,以提高融合结果的质量。

常用的图像预处理方法包括灰度拉伸、直方图均衡化、滤波等。

灰度拉伸是通过对图像的像素值进行线性变换,将图像像素值的范围拉伸到合适的范围内,从而增加图像的对比度。

直方图均衡化则是将图像的像素值在灰度直方图上均匀分布,以增强图像的细节。

滤波是通过对图像进行滤波操作,如低通滤波、高通滤波等,以去除图像中的噪声和不需要的细节。

3. 图像融合的策略图像融合的策略可以根据具体需求来选择。

常见的策略包括全局融合和局部融合。

全局融合是将所有图像的信息进行融合,得到整体的融合结果。

而局部融合则是将不同图像的不同区域进行融合,以保留更多的细节和纹理。

根据具体应用和需求,选择合适的融合策略可以使融合结果更加符合实际需求。

4. 参数设置与调整在进行图像融合过程中,不同的算法和方法有各自的参数,根据不同的图像和具体应用,需要适时地进行参数的设置和调整。

matlab中的detectharrisfeatures -回复

matlab中的detectharrisfeatures -回复

matlab中的detectharrisfeatures -回复Matlab中的detectHarrisFeatures函数是一个用于检测图像中Harris角点的函数。

在本文中,我们将一步一步地回答与这个函数相关的问题,从函数的目的和输入参数到如何使用和优化这个函数。

第一步:了解Harris角点检测算法在解释detectHarrisFeatures函数之前,我们首先需要了解Harris角点检测算法的原理。

Harris角点检测算法是一种用于检测图像中角点的经典算法。

它基于角点的特征,即图像上曲线交叉或曲率变化显著的点。

Harris 角点检测算法使用局部窗口的二阶矩矩阵来计算Harris响应函数,根据阈值筛选出具有较高响应值的像素点作为角点。

第二步:了解detectHarrisFeatures函数的输入参数detectHarrisFeatures函数有多个输入参数,了解这些参数是使用该函数的重要前提。

下面是detectHarrisFeatures函数的常用参数列表:1. I:待检测的图像。

这是唯一一个必需的参数,它指定了我们要对哪个图像进行角点检测。

2. Name-Value参数对:可选参数,用于进一步指定检测的各种设置。

比如,'MinQuality'参数指定了检测到的角点最小质量,'FilterSize'参数指定了输入图像的响应滤波器尺寸,'ROI'参数指定了感兴趣区域等。

第三步:使用detectHarrisFeatures函数进行角点检测使用detectHarrisFeatures函数进行角点检测非常简单。

我们只需要提供待检测的图像作为输入参数,然后函数将返回一个包含检测到的角点位置信息的角点检测结果对象。

下面是一个简单的使用示例:matlabI = imread('image.jpg');corners = detectHarrisFeatures(I);在上面的示例中,我们使用imread函数读取了一张图片,然后将该图片作为输入参数传递给detectHarrisFeatures函数。

自适应阈值Harris算法遥感图像配准的FPGA实现

自适应阈值Harris算法遥感图像配准的FPGA实现

第24期2023年12月无线互联科技Wireless Internet Science and TechnologyNo.24December,2023作者简介:汪强(1997 ),男,安徽宣城人,硕士研究生;研究方向:图像处理及FPGA 开发㊂自适应阈值Harris 算法遥感图像配准的FPGA 实现汪㊀强,郭来功(安徽理工大学电气与信息工程学院,安徽淮南232001)摘要:针对Harris 角点检测器响应值R 的阈值选择而导致角点失真问题,文章提出了一种基于现场可编程门阵列(FPGA )的自适应Harris 角点检测器实现遥感图像的配准方式㊂该方式依据非最大值抑制(NMS )处理后的响应值对阈值进行实时变化㊂实验结果显示,优化架构在硬件资源仅增加2.76%的情况下,准确率相应提升了8.31%㊂因此,文章提出的遥感图像配准架构适用于硬件资源有限的平台㊂关键词:Harris 角点检测器;FPGA ;非最大值抑制(NMS );遥感图像配准中图分类号:TP391㊀㊀文献标志码:A 0㊀引言㊀㊀在众多的计算机视觉应用中,Harris 角点检测被视为关键的预处理技术,例如特征识别㊁动态追踪㊁图像配准㊁3D 模型构建等㊂在众多常用的计算方法中,选择合适的阈值通常会对最终结果产生长远和深刻的影响㊂但是,在Harris 算法的应用中,阈值的选择只能依赖于个体的经验判断[1]㊂过高的阈值不仅可能导致角点信息的丢失,还可能引发伪角点的出现;较低的阈值不仅导致角点质量的下降,还会提高其对噪声的敏感性[2]㊂潘聪等[3]通过消除伪角点的方法,成功地实施了基于FPGA 的Harris 角点自适应阈值检测㊂本研究在其基础上,对自适应阈值算法进行了优化,并利用FPGA 将其成功应用于遥感图像配准技术中㊂1㊀Harris 角点检测算法㊀㊀在图像中,角点是正交轴渐变较高的点,Harris 算法能满足这些条件的点[4]㊂扫描窗口w (x ,y )(位移u 在x 方向,v 在y 方向),得到式(1):E (u ,v )=ðw (x ,y )[I (x +u ,y +v )-I (x ,y )]2(1)其中,w (x ,y )为(x ,y )处的窗口位置;I (x ,y )为(x ,y )处的强度;I (x +u ,y +v )为移动窗口(x +u ,y +v )处的强度㊂因为算法的最终目的是找到有角点(强度变化很大)的窗户㊂因此,必须最大化公式(1),则对公式(1)使用泰勒展开,得到公式(2):E (u ,v )=ð[I (x ,y )+uI x +vI y -I (x ,y )]2(2)展开公式(2),并用-I (x ,y )抵消I (x ,y ),得到公式(3):E (u ,v )=ðu 2I 2x+2uvI x I y +v 2I 2y(3)公式(3)可以用矩阵形式表示为:E (u ,v )=[u ㊀v ]ðw (x ,y )I 2xI x I y I x I y I 2y éëêêùûúú()u v éëêêùûúú(4)则公式(4)可表示为以下形式:E (u ,v )=[u ㊀v ]M u v éëêêùûúú(5)最后,计算遥感图像中每个窗口的分数,以确定其是否可能包含符合条件的角点:R =det (M )-k (trace (M ))2(6)其中,det (M )=λ1λ2;trace (M )=λ1+λ2㊂λ1和λ2相关数学意义如图1所示㊂在非最大抑制(NMS)中,如果半径r =1,则边界框为2ˑr +1=3㊂在这种情况下,考虑中心像素上的3ˑ3邻域㊂如果中心像素大于周围像素,则将其视为角点㊂同时将与半径内的周围像素进行比较㊂2㊀硬件实现架构㊀㊀遥感图像配准的硬件实现架构如图1所示,依次通过导数生成模块㊁高斯滤波模块㊁角点获得模块(角点提取和非最大值抑制)和优化后的自适应阈值模㊀㊀㊀㊀图1㊀λ1㊁λ2特征值相关数学意义块,以实现遥感图像角点的提取㊂至于图像配准部分,本次实验选择了特征法和区域法㊂2.1㊀导数生成模块㊀㊀导数生成器分别计算每一个像素水平方向和垂直方向的导数及其乘积[3]㊂先读取SDRAM存储器中图像灰度数据,再用IP核的加法器㊁减法器和乘法器来实现I2x㊁I2y和I x I y值的计算㊂其中,设置这3个数值的输出位宽为32㊂2.2㊀高斯滤波模块㊀㊀对上一步计算得到的3幅梯度图像进行高斯平滑处理,得到3个高斯值㊂高斯滤波模块窗口大小设置为3ˑ3,主要由X方向和Y方向进行㊂其中,图像在FPGA中是逐行输出的,因此需要通过延迟的方式来获得3ˑ3窗口内的9个图像像素值㊂其中实验输入的遥感图像大小为128ˑ128,对图像的第一二行分别进行128延迟和256延迟[5]㊂2.3㊀角点获得模块㊀㊀将高斯滤波得到的3个高斯值代入公式(7),得到遥感图像中每一个像素的Harris角点响应函数值R,其中R为该局部区域的最大值[6]㊂其计算需要完成3个乘法计算,并保存至寄存器中,其中乘以参数k (设k=0.06)的计算,使用算数右移来完成㊂同时避免造成角点团簇现象,R需要非最大值抑制(NMS),即去除一些较小值,将其中一些大于阈值的R输出进行后一级的角点配准功能[5]㊂2.4㊀自适应阈值模块㊀㊀阈值的选择对图像候选角点的质量也有很大影响㊂寻找理想阈值需要在未检测到的真角和检测到的假角之间进行权衡比较,这个阈值因图像而异[7]㊂本文设计的自适应模块结构如图2所示,依据NMS 后角点数量值N,分3个区间对阈值进行调节,同时利用简单地左右移1个单位以实现P值的乘除法,其中P取2.2ˑ10-7㊂图2㊀自适应阈值模块实现结构2.5㊀遥感图像配准模块㊀㊀特征法是通过图像中的特征点来进行图像的配准操作㊂核心的步骤包括:首先从2张图片中抽取特征点或描述特征的子项㊂再对2张图片中的特征点或描述子项进行匹配,以确定它们之间的匹配关系㊂依据所识别的相应关联,进行图像变换矩阵的计算㊂最后,对其中一张图像执行变换操作,确保2张图像在空间维度上达到配准状态㊂至于后2步通常采用最小二乘法来进行问题的解决,这样就可以达到图像的精确配准㊂3㊀仿真验证与分析㊀㊀该部分采用FPGA和MATLAB对比的方式进行㊂其中,FPGA采用Intel(Altera)公司CycloneⅣE系列的EP4CE15F23C6型开发平台,开发环境为Quartus II18.0,使用Verilog HDL完成数据流的描述㊂遥感图像配准仿真对比结果如图3 5所示㊂图3㊀传统遥感图像配准的MATLAB仿真4㊀结语㊀㊀本文提出的基于FPGA的自适应阈值Harris特征提取和遥感图像配准架构,以NMS为载体,改进自适应阈值模块,在FPGA占用资源增加2.76%的情况下,适度提高了遥感图像角点检测速度和配准精度㊂图4㊀传统遥感图像配准的FPGA仿真图5㊀自适应遥感图像配准的FPGA 仿真参考文献[1]孙万春.基于视频的公共场所人数统计研究[D ].重庆:重庆理工大学,2018.[2]孙万春,张建勋,朱佳宝,等.S -Harris :一种改进的角点检测算法[J ].重庆理工大学学报(自然科学),2018(10):156-161.[3]潘聪,黄鲁.基于FPGA 的自适应阈值Harris 角点检测硬件实现[J ].微型机与应用,2016(19):44-46,49.[4]SIKKA P ,ASATI A R ,SHEKHAR C.Real timeFPGA implementation of a high speed and areaoptimized Harris corner detection algorithm [J ].Microprocessors and Microsystems ,2021(2):1-6.[5]王跃霖.基于FPGA 的动态目标检测与跟踪系统的研究[D ].兰州:兰州交通大学,2018.[6]闫小盼,敖磊,杨新.Harris 角点检测的FPGA 快速实现方法[J ].计算机应用研究,2017(12):3848-3851.[7]MAURYA S ,CHOUDHURY Z ,PURINI S.Accuracyconfigurable FPGA implementation of Harris corner detection [C ].2022IEEE Computer Society Annual Symposium on VLSI (ISVLSI ).Nicosia ,2022:422-427.(编辑㊀沈㊀强)FPGA implementation of adaptive threshold Harris algorithm for remotesensing image registrationWang Qiang Guo LaigongSchool of Electrical and Information Engineering Anhui University of Technology Huainan 232001 ChinaAbstract Aiming at the problem of corner distortion caused by the threshold selection of the response value R ofHarris corner detector an adaptive Harris corner detector based on FPGA is proposed to achieve remote sensing imageregistration.This method changes the threshold in real -time based on the response value after Non Maximum Suppression NMS processing.The experimental results show that the optimized architecture achieved an accuracyimprovement of 8.31%with only a 2.76%increase in hardware resources.Therefore the remote sensing imageregistration architecture proposed in this article is suitable for computing on platforms with limited hardware resources.Key words Harris corner detector FPGA Non Maximum Suppression NMS remote sensing image registration。

基于Harris算子的图像拼接高精度检测技术

基于Harris算子的图像拼接高精度检测技术
( c o lo dclI sr me ta d F o gn ei ,Unv ri fS a g a frS n ea dTeh oo y,S a g a 0 0 3 S h o fMe i n tu n n o d En iern a g iest o h n h i o de e c n lg y n h n h i2 0 9 ,Chn ) ia
I a e m o a c a d hi h pr c s t c i n t c o o y m g s i n g e ie de e to e hn l g b sng o a rs o e a o a i n H r i p r t r
M EI a g a g, E i n n y n XI Hamig,HAN u, O h n Y L GU S Ou
Ab ta t no d rt ce s h eet gac r c fme ia n tu n s sr c :I r e o i ra eted tci c u ayo dclisr me t ,wec n u et emeh d n n a s h t o
o g s i U s g Ha rs o e a o , fa u e p i t a e e ta td a c r t l ; a c r c f fi ma e mo ac . i ri p r t r e t on s c n b x r c e c u a ey n r cu a y o 第3 2卷来自第 1 期 光



Vo. 2,No 1 13 .
Fe r a y 0 0 b u r ,2 1
21年 2 00 月
OP CAL I TRUM ENTS TI NS
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

function points=myHarris(pic) % 功能:寻找 Harris 角点 % 输入:RGB 图像或 gray 图像
% 输出:角点所在的行、纵的 N×2 矩阵 if length(size(pic))==3 pic=rgb2gray(pic); end pic=double(pic); hx=[-1 0 1]; Ix=filter2(hx,pic); hy=[-1;0;1]; Iy=filter2(hy,pic); Ix2=Ix.*Ix; Iy2=Iy.*Iy; Ixy=Ix.*Iy; h=fspecial('gaussian',[7 7],2); Ix2=filter2(h,Ix2); Iy2=filter2(h,Iy2); Ixy=filter2(h,Ixy); [heigth,width]=size(pic); alpha=0.06; R=zeros(heigth,width); for i=1:heigth for j=1:width M=[Ix2(i,j) Ixy(i,j);Ixy(i,j) Iy2(i,j)]; R(i,j)=det(M)-alpha*(trace(M)^2); end end Rmax=max(max(R)); pMap=zeros(heigth,width); for i=2:heigth-1 for j=2:width-1 if R(i,j)>0.01*Rmax tm=R(i-1:i+1,j-1:j+1); tm(2,2)=0; if R(i,j)>tm pMap(i,j)=1; end end end end [row,col]=find(pMap==1); points=[row,col];
function drawHarrisCorner(pic1,points1,pic2,points2) % 功能:画出 Harris 角点的连接
% 输入: % pic1、pic2:待拼接的图像 % points1、points2:Harris 角点位置 X1=points1(:,2); Y1=points1(:,1); X2=points2(:,2); Y2=points2(:,1); dif=size(pic1,2); imshowpair(pic1,pic2,'montage'); hold on plot(X1,Y1,'b*'); plot(X2+dif,Y2,'b*'); set(gcf,'Color','w');
function [newLoc1,newLoc2]=pointsSelect(loc1,loc2) % 功能:筛选匹配特征点对,获取高精度的控制点 % 输入: % loc1、loc2:粗匹配特征点位置 % 输出: % newLoc1、newLoc2:精匹配控制点位置 slope=(loc2(:,1)-loc1(:,1))./(loc2(:,2)-loc1(:,2)); for k=1:3 slope=slope-mean(slope); len=length(slope); t=sort(abs(slope)); thresh=t(round(0.5*len)); ind=abs(slope)<=thresh; slope=slope(ind); loc1=loc1(ind,:); loc2=loc2(ind,:); end newLoc1=loc1; newLoc2=loc2;
function matchs=myMatch(des1,des2)
% 功能:特征点双向匹配 % 输入: % des1、des2:特征点描述信息构成的矩阵 % 输出: % matchs:匹配的特征点对应关系 len1=length(des1); len2=length(des2); match1=zeros(len1,2); cor1=zeros(1,len2); for i=1:len1 d1=des1(:,i); for j=1:len2 d2=des2(:,j); cor1(j)=(d1'*d2)/sqrt((d1'*d1)*(d2'*d2)); end [~,indx]=max(cor1); match1(i,:)=[i,indx]; end match2=zeros(len2,2); cor2=zeros(1,len1); for i=1:len2 d2=des2(:,i); for j=1:len1 d1=des1(:,j); cor2(j)=(d1'*d2)/sqrt((d1'*d1)*(d2'*d2)); end [~,indx]=max(cor2); match2(i,:)=[indx,i]; end matchs=[]; for i=1:length(match1) for j=1:length(match2) if match1(i,:)==match2(j,:) matchs=[matchs;match1(i,:)]; end end end
function des=myHarrisCornerDescription(pic,points) % 功能:Harris 角点特征描述 % 输入: % pic:原图像 % points:角点位置 % 输出: % des:8×N 的角点特征描述矩阵 if length(size(pic))==3 pic=rgb2gray(pic); end len=length(points); des=zeros(8,len); for k=1:len p=points(k,:); pc=pic(p(1),p(2)); des(1,k)=pic(p(1)-1,p(2)-1)-pc; des(2,k)=pic(p(1),p(2)-1)-pc; des(3,k)=pic(p(1)+1,p(2)-1)-pc; des(4,k)=pic(p(1)+1,p(2))-pc; des(5,k)=pic(p(1)+1,p(2)+1)-pc; des(6,k)=pic(p(1),p(2)+1)-pc; des(7,k)=pic(p(1)-1,p(2)+1)-pc; des(8,k)=pic(p(1)-1,p(2))-pc; des(:,k)=des(:,k)/sum(des(:,k)); end
tb=tpic1(:,:,k); ta(re==0)=tb(re==0); im(:,:,k)=ta; end clear ta tb re tpic1 im=getPicture(im,SZ); im=uint8(im); if length(size(pic1))==2 im=rgb2gray(im); end
function im=picMatched(pic1,newLoc1,pic2,newLoc2)
% 功能:获取拼接之后的图片 % 输入: % pic1、pic2:待拼接图片 % newLoc1、newLoc2:变换控制点矩阵 % 输出: % im:拼接后的图片 if length(size(pic1))==2 pic1=cat(3,pic1,pic1,pic1); end if length(size(pic2))==2 pic2=cat(3,pic2,pic2,pic2); end SZ=2000; X1=newLoc1(:,2); Y1=newLoc1(:,1); X2=newLoc2(:,2); Y2=newLoc2(:,1); sel=randperm(length(newLoc1),3); x=X2(sel)'; y=Y2(sel)'; X=X1(sel)'; Y=Y1(sel)'; U=[x;y;ones(1,3)]; V=[X;Y;ones(1,3)]; T=V/U; cntrX=SZ/2; cntrY=SZ/2; im=zeros(SZ,SZ,3); for i=1:size(pic2,1) for j=1:size(pic2,2) tmp=T*[j;i;1]; nx=round(tmp(1))+cntrX; ny=round(tmp(2))+cntrY; if nx>=1 && nx<=SZ && ny>=1 && ny<=SZ im(ny,nx,:)=pic2(i,j,:); end end end im=imresize(im,1,'bicubic'); tpic1=zeros(SZ,SZ,3); tpic1(1+cntrY:size(pic1,1)+cntrY,1+cntrX:size(pic1,2)+cntrX,:)=pic1; re=rgb2gray(uint8(im))-rgb2gray(uint8(tpic1)); for k=1:3 ta=im(:,:,k);
function im=getPicture(pic,SZ) % 功能:获取图像有用区域 % 输入: % pic:拼接图像 % SZ:预定图像尺寸 % 输出: % im:有用区域图像 if length(size(pic))==2 pic=cat(3,pic,pic,pic); end k=1; while k<SZ if any(any(pic(k,:,:))) break end k=k+1; end ceil=k; %上边界 k=SZ; while k>0 if any(any(pic(k,:,:))) break end k=k-1; end bottom=k; %下边界 k=1; while k<SZ if any(any(pic(:,k,:))) break
基于 Harris 角点的图像拼接技术(MATLAB 源代码)
clc clear all % 读入图片 pic1=imread('lena1.jpg'); pic2=imread('lena2.jpg'); % Harris 角点检测 points1=myHarris(pic1); points2=myHarris(pic2); % 画出 Harris 角点 figure(1) drawHarrisCorner(pic1,points1,pic2,points2); % 角点特征描述 des1=myHarrisCornerDescription(pic1,points1); des2=myHarrisCornerDescription(pic2,points2); % 角点粗匹配 matchs=myMatcedPoints1=points1(matchs(:,1),:); matchedPoints2=points2(matchs(:,2),:); % 粗匹配角点连线 figure(2) drawLinedCorner(pic1,matchedPoints1,pic2,matchedPoints2); % 角点精匹配 [newLoc1,newLoc2]=pointsSelect(matchedPoints1,matchedPoints2); % 精匹配角点连线 figure(3) drawLinedCorner(pic1,newLoc1,pic2,newLoc2); % 图像拼接 im=picMatched(pic1,newLoc1,pic2,newLoc2); % 显示拼接图像 figure(4) imshow(im); set(gcf,'Color','w');
相关文档
最新文档