基于特征的图像匹配c语言,一种基于SIFT和SUSAN特征的图像匹配方法

2024-03-25 01:59

本文主要是介绍基于特征的图像匹配c语言,一种基于SIFT和SUSAN特征的图像匹配方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摘   要: 针对SIFT方法在角点检测上的不足,提出了一种基于SIFT和SUSAN混合特征匹配的自动匹配算法。算法应用SIFT 和SUSAN 两种具有互补特性的局部不变特征,利用SIFT方法检测空间极值特征点,利用SUSAN方法检测角点,结合两种特征点位置,利用SIFT方法生成匹配特征向量,最后根据最近邻特征点距离与次近邻特征点距离之比确定初始匹配点对,实现图像的配准。实验表明该算法有效,能够提高图像的自动匹配准确性。

关键词: 图像匹配; SIFT特征; SUSAN角点

图像匹配是图像处理的一个基本问题,在计算机视觉、图像配准、信息检索等领域得到了广泛的应用,是很多基于图像内容应用的基础。随着计算机技术的发展和数字图像应用的日益广泛,图像匹配技术在诸多领域内发挥越来越重要的作用。长期以来, 国内外很多学者都致力于解决图像匹配的技术问题。

简单来说,图像匹配就是找出两幅图像中相同或相似景物,目前图像匹配的方法一般分为基于区域匹配和基于特征匹配两类。

近年来,在计算机视觉领域,基于局部不变量描述符的方法在目标识别和图像匹配方面取得了显著发展。SIFT特征描述符克服了传统图像匹配在图像尺度、视差变化的局限性。参考文献[1]对10种最具代表性的特征匹配描述算子进行了实验和性能比较,结果表明, SIFT特征描述符在对光照变化、图像旋转、比例缩放、几何变形、模糊和图像压缩等6种情况下性能最好。

本文在SIFT方法的基础上加入SUSAN角点检测的思想,提出一种新的更加稳健的图像匹配方法。

1 SIFT特征检测

2004年, LOWE D提出了一种新的点特征匹配算法——SIFT(Scale Invariant Feature Transform)算法,较好地解决了场景部分遮挡、旋转缩放、视点变化引起的图像变形等问题,并且有效应用于目标识别、图像复原、图像拼接等领域。

SIFT算法首先在尺度空间进行特征点检测,并确定关键点的位置和所处的尺度,然后使用关键点邻域梯度的主方向作为该点的方向特征,以实现算子对尺度和方向的无关性。

1.1 尺度空间理论

尺度空间理论是一种对图像从多尺度考察图像特征的理论方法,能够发掘出很多从单一尺度无法发现的图像特征。

SIFT方法选用了高斯函数,利用其标准差σ作为尺度参数与图像进行卷积运算以产生多尺度的图像。一幅二维图像的尺度空间定义为:

515540fd5878798df33da55a762da373.gif

1.5 特征描述子

首先以特征点为中心取8×8的邻域作为采样窗口,窗口内每个方格代表特征点尺度空间的一个像素,箭头方向代表该像素的梯度相对于特征点方向的相对方向,箭头长度代表梯度的模,大圆圈代表加权的范围。然后利用直方图统计的方法,在每 4×4 的小块上计算 8 个方向的梯度方向直方图,即可形成 4 个种子点,如图1所示。

每个种子点可以产生8个方向信息,共4×8=32个方向信息,按顺序就可以组成32维的特征向量。本文采用16×16的采样窗口,一共产生16个种子点,产生16×8=128维的特征向量,更多的种子点可以增加匹配的稳定性。

2 SUSAN角点检测

1997年 SMITH S M和 BRADY J M提出了一种最小核值相似区SUSAN(Smallest Univalue Segment Assimilating Nucleus)算法,它直接对图像灰度值进行操作,方法简单,算法效率高,定位准确,对多个区域的角点也能精确检测,对局部噪声不敏感,抗噪能力强。

2.1 SUSAN方法简介

SUSAN方法其实是利用圆形模板遍历整个图像,如果模板内其他像素值与模板中心像素值相差小于一定阈值,就认为该点与中心点具有近似的灰度值,模板内满足这样条件的像素组成的区域称为核值相似区USAN(Univalue Segment Assimilating Nucleus)。利用这个区域可以将像素点的性质分成几类考虑,而属于直角角点的大概就是具有1/4模板大小的USAN区的像素点,如图2所示。

10c51b3dca0bdccf6aa012c272b1537f.gif

2.2  USAN区域

USAN区域利用中心点与周围像素的差值和预先设定的阈值进行比较得出,其相似比较函数表示为:

4bd23cc0d31d3df1011a1aaa1dbf9d28.gif

2.3 角点检测

SUSAN方法通过设定角点阈值,利用角点响应函数判断角点位置,计算公式如下:

01c63be861cf0f1034ba503e0320afbf.gif

其中g为角点阈值,它影响检测到的角点形状,g越小,检测到的角点越尖锐,一般设定为1/2模板区域大小。

SUSAN角点检测的最后一个阶段,就是寻找初始角点响应的局部最大值,在局部范围内,如果中心像素的初始响应是此区域内的最大值,则判断其属于角点。

3 基于SIFT和SUSAN特征检测

SIFT方法能够从尺度空间寻找出具有结构化特性的特征点,但是可能在视觉上没有特殊意义,而实际图像中很多具有视觉意义的特征位置,如角点利用SIFT方法检测会出现位置偏移或者漏检的情况,如图3所示。]

284563d30a44c9a4ad708bee43604fb4.gif

从图3可以看出,最右角出现漏检,其他角的特征点均发生一定程度的位置偏移,这是由于高斯平滑的过程中极值点会随着像素扩散引起的。但是图像上的角点往往是进行图像匹配比较理想的特征,SIFT方法并没有很好地将角点利用起来,遗漏了某些重要的角点信息。

本文在SIFT的基础上引入SUSAN角点检测就是为了增强其对图像特性信息的利用率,从而应用于图像匹配上得到更多有意义的正确匹配点,因为SUSAN能够有效检测出图像中的角点,如图4所示。

a6babf588ac718a273774d382c6a251e.gif

由图4可以看出,SUSAN方法能够准确定位并检测到4个角点。SUSAN角点检测的优点在于可以简单快捷地检测出图像的明显形状特征,但是针对纹理图像或者低对比度图像,效果并不明显。

通过以上分析, 本文在SIFT方法的基础上引入SUSAN角点检测思想,基本能够将图像中的结构化信息特征和形状信息的特征检测出来。算法的流程图如图5所示。

c7aca89e36a1edc924480978d0211477.gif

4 特征匹配

已经找出图像上的特征向量,接下来的任务就是特征匹配,即对特征向量作相似性度量判断其相似程度。本文采用两个向量的欧氏距离作为相似性的判断度量,欧氏距离定义如下:

6b87d788118a04e90a2d0459ea24fa72.gif

取图像1中的某个关键点,并找出其与图像2中欧式距离最近的前两个关键点,在这两个关键点中,如果最近的距离除以次近的距离小于某个比例阈值,则接受这一对匹配点。如果降低这个比例阈值,匹配点数目会减少,但更加稳定。最后再设定一个匹配点数目阈值,如果匹配点数目大于阈值,就认为两幅图像是相似的。

5 实验结论

在Core 2, 2.2 GHz CPU, 2.0 GB RAM的PC机上运行Solaris 10操作系统,采用C 语言编程实现了本文提出的算法,通过实验图片验证本文方法的有效性(限于篇幅,下文仅给出一组实验结果),并将本文算法与SIFT算法进行了实验分析和比较。实验中,最近邻特征点距离与次近邻特征点距离之比取0.7。

图6利用SIFT方法,左图和右图分别生成了356个和369个特征点,最终产生12对匹配对,其中两个错误匹配对;图7利用SUSAN方法,左图和右图分别生成了315个和358个特征点,最终产生25对匹配点,其中两个错误匹配对;图8结合两种方法,左图和右图分别生成了671个和727个特征点,最终产生33对匹配对,其中一个错误匹配对。

f9a7cd7f7d9003e4b4c9f7843b6ae666.gif

3a767230770d801af7368d5d1af72561.gif

SUSAN方法在更少的特征点中可以找出更多匹配点对,而且错误匹配率没有增加,由此可见,角点信息在特征匹配上非常有效。本文方法利用两种特征,得到更多的特征匹配对,并且降低了错误匹配率。

参考文献

[1] M IKOLAJCZYK K, SCHM ID C. A performance evaluation of local descriptors[J]. IEEE Transactions on Pattern  Analysis & Machine Intelligence, 2005,27(10):1615-1630.

[2] BROWN M, LOWE D. Invariant features from interest point groups[C].In Proceedings of the 13th British Machine Vision Conference. Cardiff: [s. n.], 2002:253-262.

[3] LOWE D. Object recognition from local scale-invariant features[C].In Proceedings of the International Conference on Computer. Corfu ,Greece:[s.n.],1999:1150-1157.

[4] SMITH S M, BRADY J M. SUSAN——a new approach to low level image processing[J]. Computer Vision,1997,23(10):45-78.

这篇关于基于特征的图像匹配c语言,一种基于SIFT和SUSAN特征的图像匹配方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/843504

相关文章

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

浅谈主机加固,六种有效的主机加固方法

在数字化时代,数据的价值不言而喻,但随之而来的安全威胁也日益严峻。从勒索病毒到内部泄露,企业的数据安全面临着前所未有的挑战。为了应对这些挑战,一种全新的主机加固解决方案应运而生。 MCK主机加固解决方案,采用先进的安全容器中间件技术,构建起一套内核级的纵深立体防护体系。这一体系突破了传统安全防护的局限,即使在管理员权限被恶意利用的情况下,也能确保服务器的安全稳定运行。 普适主机加固措施:

webm怎么转换成mp4?这几种方法超多人在用!

webm怎么转换成mp4?WebM作为一种新兴的视频编码格式,近年来逐渐进入大众视野,其背后承载着诸多优势,但同时也伴随着不容忽视的局限性,首要挑战在于其兼容性边界,尽管WebM已广泛适应于众多网站与软件平台,但在特定应用环境或老旧设备上,其兼容难题依旧凸显,为用户体验带来不便,再者,WebM格式的非普适性也体现在编辑流程上,由于它并非行业内的通用标准,编辑过程中可能会遭遇格式不兼容的障碍,导致操

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

【北交大信息所AI-Max2】使用方法

BJTU信息所集群AI_MAX2使用方法 使用的前提是预约到相应的算力卡,拥有登录权限的账号密码,一般为导师组共用一个。 有浏览器、ssh工具就可以。 1.新建集群Terminal 浏览器登陆10.126.62.75 (如果是1集群把75改成66) 交互式开发 执行器选Terminal 密码随便设一个(需记住) 工作空间:私有数据、全部文件 加速器选GeForce_RTX_2080_Ti

【VUE】跨域问题的概念,以及解决方法。

目录 1.跨域概念 2.解决方法 2.1 配置网络请求代理 2.2 使用@CrossOrigin 注解 2.3 通过配置文件实现跨域 2.4 添加 CorsWebFilter 来解决跨域问题 1.跨域概念 跨域问题是由于浏览器实施了同源策略,该策略要求请求的域名、协议和端口必须与提供资源的服务相同。如果不相同,则需要服务器显式地允许这种跨域请求。一般在springbo

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵魂,TTS 技术都扮演着至关重要的角色。从最初的拼接式方法到参数化技术,再到现今的深度学习解决方案,TTS 技术经历了一段长足的进步。这篇文章将带您穿越时

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX