【图像配准】SIFT图像配准【含Matlab源码 1007期】

news2024/10/6 8:30:22

⛄一、SIFT配准简介

SIFT即尺度不变特征变换,是用于图像处理领域的一种描述。这种描述具有尺度不变性,可在图像中检测出关键点,是一种局部特征描述子。
1 SIFT算法特点:
(1)具有较好的稳定性和不变性,能够适应旋转、尺度缩放、亮度的变化,能在一定程度上不受视角变化、仿射变换、噪声的干扰。
(2)区分性好,能够在海量特征数据库中进行快速准确的区分信息进行匹配
(3)多量性,就算只有单个物体,也能产生大量特征向量
(4)高速性,能够快速的进行特征向量匹配
(5)可扩展性,能够与其它形式的特征向量进行联合

2 SIFT算法实质
在不同的尺度空间上查找关键点,并计算出关键点的方向。
在这里插入图片描述
3 SIFT算法实现特征匹配主要有以下三个流程:
(1)提取关键点:关键点是一些十分突出的不会因光照、尺度、旋转等因素而消失的点,比如角点、边缘点、暗区域的亮点以及亮区域的暗点。此步骤是搜索所有尺度空间上的图像位置。通过高斯微分函数来识别潜在的具有尺度和旋转不变的兴趣点。
(2)定位关键点并确定特征方向:在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。然后基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向。所有后面的对图像数据的操作都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。
(3)通过各关键点的特征向量,进行两两比较找出相互匹配的若干对特征点,建立景物间的对应关系。

4 尺度空间
(1)概念
尺度空间即试图在图像领域中模拟人眼观察物体的概念与方法。例如:观察一颗树,关键在于我们想要观察是树叶子还是整棵树:如果是一整棵树(相当于大尺度情况下观察),那么就应该去除图像的细节部分。如果是树叶(小尺度情况下观察),那么就该观察局部细节特征。
SIFT算法在构建尺度空间时候采取高斯核函数进行滤波,使原始图像保存最多的细节特征,经过高斯滤波后细节特征逐渐减少来模拟大尺度情况下的特征表示。
利用高斯核函数进行滤波的主要原因有两个:
a 高斯核函数是唯一的尺度不变核函数。
b DoG核函数可以近似为LoG函数,这样可以使特征提取更加简单。同时,David. Lowe作者在论文中提出将原始图像进行2倍上采样后滤波能够保留更多的信息便于后续特征提取与匹配。其实尺度空间图像生成就是当前图像与不同尺度核参数σ进行卷积运算后产生的图像。
(2)表示
L(x, y, σ) ,定义为原始图像 I(x, y)与一个可变尺度的2维高斯函数G(x, y, σ) 卷积运算。
在这里插入图片描述
5 高斯金字塔的构建
(1)概念
尺度空间在实现时使用高斯金字塔表示,高斯金字塔的构建分为两步:
a 对图像做高斯平滑;
b 对图像做降采样。
在这里插入图片描述
图像的金字塔模型是指将原始图像不断降阶采样,得到一系列大小不一的图像,由大到小,从下到上构成的塔状模型。原图像为金子塔的第一层,每次降采样所得到的新图像为金字塔的一层(每层一张图像),每个金字塔共n层。为了让尺度体现其连续性,高斯金字塔在简单降采样的基础上加上了高斯滤波。如上图所示,将图像金字塔每层的一张图像使用不同参数做高斯模糊,Octave表示一幅图像可产生的图像组数,Interval表示一组图像包括的图像层数。另外,降采样时,高斯金字塔上一组图像的初始图像(底层图像)是由前一组图像的倒数第三张图像隔点采样得到的。
(2)表示
高斯图像金字塔共o组、s层,则有
在这里插入图片描述
6 DOG空间极值检测
(1)DOG函数
在这里插入图片描述
(2)DoG高斯差分金字塔
a 对应DOG算子,需构建DOG金字塔。
可以通过高斯差分图像看出图像上的像素值变化情况。(如果没有变化,也就没有特征。特征必须是变化尽可能多的点。)DOG图像描绘的是目标的轮廓。
在这里插入图片描述
b DOG局部极值检测
特征点是由DOG空间的局部极值点组成的。为了寻找DoG函数的极值点,每一个像素点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。特征点是由DOG空间的局部极值点组成的。为了寻找DoG函数的极值点,每一个像素点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。如下图,中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。
在这里插入图片描述
b 去除边缘效应
在边缘梯度的方向上主曲率值比较大,而沿着边缘方向则主曲率值较小。候选特征点的DoG函数D(x)的主曲率与2×2Hessian矩阵H的特征值成正比。
在这里插入图片描述
在这里插入图片描述
7 关键点方向分配
(1)通过尺度不变性求极值点,需要利用图像的局部特征为给每一个关键点分配一个基准方向,使描述子对图像旋转具有不变性。对于在DOG金字塔中检测出的关键点,采集其所在高斯金字塔图像3σ邻域窗口内像素的梯度和方向分布特征。梯度的模值和方向如下:
在这里插入图片描述
(2)本算法采用梯度直方图统计法,统计以关键点为原点,一定区域内的图像像素点确定关键点方向。在完成关键点的梯度计算后,使用直方图统计邻域内像素的梯度和方向。梯度直方图将0~360度的方向范围分为36个柱,其中每柱10度。如下图所示,直方图的峰值方向代表了关键点的主方向,方向直方图的峰值则代表了该特征点处邻域梯度的方向,以直方图中最大值作为该关键点的主方向。为了增强匹配的鲁棒性,只保留峰值大于主方向峰值80%的方向作为该关键点的辅方向。
在这里插入图片描述
8 关键点描述
对于每一个关键点,都拥有位置、尺度以及方向三个信息。为每个关键点建立一个描述符,用一组向量将这个关键点描述出来,使其不随各种变化而改变,比如光照变化、视角变化等等。这个描述子不但包括关键点,也包含关键点周围对其有贡献的像素点,并且描述符应该有较高的独特性,以便于提高特征点正确匹配的概率。
在这里插入图片描述
Lowe实验结果表明:描述子采用4×4×8=128维向量表征,综合效果最优(不变性与独特性)。

9 关键点匹配
(1)分别对模板图(参考图,reference image)和实时图(观测图,
observation image)建立关键点描述子集合。目标的识别是通过两点集内关键点描述子的比对来完成。具有128维的关键点描述子的相似性度量采用欧式距离。
(3)匹配可采取穷举法完成,但所花费的时间太多。所以一般采用kd树的数据结构来完成搜索。搜索的内容是以目标图像的关键点为基准,搜索与目标图像的特征点最邻近的原图像特征点和次邻近的原图像特征点。
Kd树如下如所示,是个平衡二叉树
在这里插入图片描述
10 总结
SIFT特征具有稳定性和不变性,在图像处理和计算机视觉领域有着很重要的作用,其本身也是非常复杂的,由于接触SIFT不是很久,对其中的相关知识了解还很不足,经多方查阅参考,写得此文,内容还不够详尽,望多多见谅。以下是SIFT算法的粗略总结。
(1)DoG尺度空间的极值检测。
(2)删除不稳定的极值点。
(3)确定特征点的主方向
(4)生成特征点的描述子进行关键点匹配。

⛄二、部分源代码

%% I. 清空环境变量
clear all
clc
for i = 1:num
[vector, count] = fscanf(g, ‘%f %f %f %f’, [1 4]); %row col scale ori
if count ~= 4
error(‘Invalid keypoint file format’);
end
locs(i, 😃 = vector(1, 😃;

[descrip, count] = fscanf(g, '%d', [1 len]);
if (count ~= 128)
    error('Invalid keypoint file value.');
end
% Normalize each input vector to unit length
descrip = descrip / sqrt(sum(descrip.^2));
descriptors(i, :) = descrip(1, :);

end
fclose(g);

⛄三、运行结果

在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]]侯思祖,陈宇,刘雅婷.基于互信息的紫外成像仪中图像配准研究[J].半导体光电. 2020,41(04)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/102271.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]计算机毕业设计Node.js博客管理系统(程序+LW)

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

springboot多数据源---2事务

一、多数据源事务控制 在多数据源下,由于涉及到数据库的多个读写。一旦发生异常就可能会导致数据不一致的情况, 在这种情况希望使用事务 进行回退。 但是Spring的声明式事务在一次请求线程中只能使用一个数据源进行控制 但是对于多源数据库: …

C#语言实例源码系列-设置桌面背景

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册 👉关于作者 众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中…

36寸便携旅行小吉他怎么选?八款高性价比颜值的儿童初学女生新手入门吉他品牌推荐!

本期介绍民谣吉他里的36英寸的Mini桶型,主要适用于小孩或者喜欢带琴外出旅行的朋友们,也被称为儿童吉他或者旅行吉他。这些吉他基本上也是配备标准指板的,演奏体验与大吉他一样。相比桶型较大的吉他,其音量会 相对较小&#xff0c…

zibll子比主题6.7用户徽章功能详解及配置教程[V6.7新功能]

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 用户徽章功能是现在很多社交类网站和app必不可少的功能了,能有效的增加网站交互的趣味性。 zibll子比主题V6.7就更新了用户徽章功能,接下来我们就来了解一下这个…

[3D数据深度学习] (PC/服务器集群cluster)CPU内存/GPU显存限制及解决办法

[3D数据深度学习] (PC/服务器集群cluster)内存/显存参数设置1. 硬件配置推荐2. 深度学习流程及遇到的问题3. CPU内存限制及参数设置4. GPU显存限制及参数设置3D数据的深度学习目前研究远不如2D深度学习成熟,其中最大的一个原因之一就是收到硬…

【跨层注意力:多层次融合】

Multi-level features fusion via cross-layer guided attention for hyperspectral pansharpening (基于跨层注意力引导的多层次特征融合高光谱全色锐化) 近年来,卷积神经网络(CNN)在计算机视觉中的成功应用引起了人…

新手入门吉他买什么牌子好?有哪些值得推荐的吉他品牌,附上初学者吉他选购攻略!【避坑指南】

在选购吉他之前,大家必须提前了解的一些关于吉他的知识,提前做好功课,不怕挑选不到适合的吉他,新手入门吉他怎么选?怎么选到适合自己的吉他?带着这些问题在这里我将详细地给大家一一讲解,同时最…

如何做好客户精细化管理?

很多人都知道客户精细化管理的重要性,但并不是所有人都掌握客户精细化管理的科学方法。 目前,客户精细化管理最常用的方法是基于RFM模型的客户细分方法。 RFM分析是客户关系分析中一种简单实用客户分析方法,他将最近一次消费、消费频率、消…

Java项目:基于ssm智能餐厅管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目主要分为服务员、厨师、收银员、经理四种角色; 主要功能包括: 客户可以根据自己的要求去选择菜品,厨师…

23种设计模式的分类和应用场景总结【设计模式】

23种设计模式的分类和应用场景总结【设计模式】设计模式分类创建型模式结构型模式行为型模式设计模式的几种原则应用场景总结各种模式的详细介绍创建型模式设计模式分类 23种设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。 创建型模式 &#x1f34…

(附源码)SSM高考志愿智能选择系统 毕业设计 134565

SSM高考志愿智能选择系统 摘 要 高中教育的普及使得每年高考人数攀升,与此同时,信息不对称会使部分考生处于劣势,造成获录学校或专业性价比不高、报录比偏低、复读率增高、考研热等问题。针对这些情况,本文设计并实现了高考志愿智…

【时钟识别】Hough变换指针式时钟识别【含GUI Matlab源码 2085期】

⛄一、简介 1 仪表示数识别流程 基于刻度准确定位的指针式仪表示数识别方法包括预处理、指针检测、刻度定位、油位计表盘中心拟合与仪表读数计算5个部分。该方法无需预先添加任何表盘信息,算法流程如图2所示。整个流程分为两步且同时进行——第1步,将油位计图像进行灰度化和边…

DPDK技术原理概述

DPDK 基本技术指标准的 DPDK 数据平面开发包和 I/O 转发实现技术,本次将概述该部分的主要技术原理。 1 技术原理与架构 由于采用软件转发和软件交换技术,单服务器内部的转发能力是 NFV 系统的主要性能瓶颈。在各类高速转发的 NFV 应用中,数…

赣货通全球桥接江西制造全球开花,贸易强国供应链出海江西在奋进

“赣货通全球”平台是什么? “赣货通全球”平台是江西制造进入全球供应链的数字贸易平台,平台免费为江西制造打造永不落幕线上国际化“赣品展”。核心的后台功能为企业用户提供大数据获客及营销功能,同时为企业提供贸易全流程的第三方外贸综合服务&…

Ubuntu18.04复现mmdetection3d

文章目录一、环境搭建二、测试demo三、数据预处理四、训练参考一、环境搭建 从零配置深度学习环境参考:ubuntu18.04 AnnacondaCUDA10.2CuDNN7.6.5使用anaconda创建虚拟环境 conda create -n open-mmlab3d python3.8 conda activate open-mmlab3d安装torch 先从官网…

自然语言处理竞赛相关比赛项目、比赛经验、工具、算力平台资源分享

本资源主要收录NLP竞赛经验贴、通用工具、学习资料等,本项目源于2020年7月一次竞赛的经历,当时在找参考资料时遇到了很多困难,包括内容分散、质量不高等。2021年3月开始更新本项目,志在帮助NLPer提升模型性能。2021年6月开放本项目…

大一Web课程设计 基于HTML家乡主题网页项目的设计与实现——中国牡丹之都山东菏泽(6页)

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法,如盒子的嵌套、浮动、margin、border、background等属性的使用,外部大盒子设定居中,内部左中右布局,下方横向浮动排列,大学学习的前端知识点和布局方式都有…

MySQL高级【索引概述索引结构】

目录 索引概述 无索引演示:一种表没有索引的查找方式 有索引演示:以二叉树进行演示 索引的优缺点 索引结构 二叉树: B-Tree(多路平衡查找树) BTree树 Hash数据结构 索引概述 索引它是一种有序的数据结构&…

测开真的是测试工程师的发展终点吗?

前言 在一线大厂,没有测试这个岗位,只有测开这个岗位,即使是做业务测试,那么你的title也是测开。 所以想聊一聊测开的看法,但不代表这是正确的看法,仅供参考。 没来阿里之前我对测开的看法 一直以为专职…