图像匹配简介
迪丽瓦拉
2025-05-31 05:41:19
0

引用:深度学习应用在图像匹配的效果如何?

0、简介

图像匹配时后续高级图像处理的关键,近年来众多学者提出了许多优秀的方法,比如基于深度学习的特征点匹配算法、实时匹配算法、3D点云匹配算法、共面线点不变量匹配算法、以及基于深度学习的图像区域匹配等。

我们将各种图像匹配方法分为局部不变特征点匹配、直线匹配、区域匹配三类,介绍其优缺点和适用场景,利用DTU和Graf数据集来对各种方法进行比较。

1、局部不变特征点匹配

局部不变特征点匹配是发展最早的,一幅图像的特征点由关键点和描述子组成。关键点是特征点(在图像中的)位置、方向、尺度等信息;描述子通常是一个向量,描述关键点邻域的像素信息。在特征匹配时,通常只需要在向量空间对两个描述子进行比较,距离相近则判定为同一个特征点。

特征点从名字可以看出,选择的点具有一些特别的特征,所以一开始时角点、边缘点都可以作为潜在的特征点。

角点检测算法中最常用的是基于图像灰度的方法,如下图是角点检测。
图:角点

1.1、Harris

Harris角点检测原理详解
思维之际-Harris角点

1.1.1、基本原理

该算法通过两个正交方向上强度的变化率对角点进行定义
在这里插入图片描述
如上图,假设我们每次只能看到绿色方框大小的面积,那么我们通过绿色方块遍历整个图像来检测角点会发生以下几种情况:

  • 1、当某次区域灰度变化较小时,认为该绿色区域没有角点(如左图),在X、Y方向上梯度(变化)较小。
  • 2、当某次在一个方向上移动时,灰度发生了较大变化,而另一个方向移动时灰度变化较小,则该区域可能是一条直线(如中图),在X、Y方向的梯度上一个较大,一个较小。
  • 3、当某次在任意方向上移动时,灰度都发送了变化,则该区域可能存在角点(如右图),在X、Y方向上的梯度都很大。

推理总结:

  1. 首先给出点和附近点的自相关函数,表示该点和周围点的关系,其值越小证明点到该附近点的方向上灰度值变化平缓;反之灰度值变化激烈;
  2. 对附近点的表示进行一阶近似,方便化简
  3. 化简后带入自相关函数,得到矩阵MMM
  4. 矩阵MMM的特征值λ1λ_1λ1​,λ2λ_2λ2​和自相关函数值:
类别特征值关系自相关函数值
平面两个特征值都小,且近似相等自相关函数值在各方面都小
直线特征值一大一小自相关函数值在某方向上大,其他方向小
角点两个特征值都大,且近似相等自相关函数在所有方向都大

1.1.2、算法实现

  1. 计算梯度
    在这里插入图片描述
    Ix=I(x+1,y)−I(x−1,y),Iy=I(x,y+1)−I(x,y−1)I_x=I(x+1,y)-I(x-1,y),I_y=I(x,y+1)-I(x,y-1)Ix​=I(x+1,y)−I(x−1,y),Iy​=I(x,y+1)−I(x,y−1)

  2. 计算梯度乘积
    Ix2=Ix∗IxI_x^2=I_x*I_xIx2​=Ix​∗Ix​
    Iy2=Iy∗IyI_y^2=I_y*I_yIy2​=Iy​∗Iy​
    Ixy=Ix∗IyI_{xy}=I_x*I_yIxy​=Ix​∗Iy​

  3. 高斯加权
    在这里插入图片描述
    考虑到周围的梯度也能帮助判断角点,所以中心点梯度=中心点梯度*高斯权重
    M:
    在这里插入图片描述

  4. 应当计算M的特征值,但实际没有计算特征值,而是曲线救国求响应值R
    在这里插入图片描述
    detM:表示矩阵M的行列式
    trace:迹
    α:经验常数,一般为0.04~0.06
    然后将小于阈值t的R置零:
    在这里插入图片描述
    特征值与R的隐含关系:
    在这里插入图片描述
    所以说变相计算了特征值

  5. 数据剔除
    比如out[R >= np.max(R) * th] = [255, 0, 0]认为大于R最大值的0.1倍的才算是角点,将其标记位[255,0,0]用于展示

1.2、FAST

1.2.1、基本原理

  1. 现在判断像素p是不是一个角点,首先将p的像素值用III表示
  2. 设定一个阈值t
  3. 以像素p为中心,半径为3得到一个圆,该圆边界上有16个像素
    在这里插入图片描述
  4. 如果这16个像素有n个连续的像素点,都比I+tI+tI+t大或者比I−t小I-t小I−t小,那么它就是一个角点。
    实际上也容易理解,如果是一个角点,那么一半偏亮一半偏暗,所以是连续都比I+tI+tI+t大或者比I−t小I-t小I−t小。试想如果是平面,可能周围16个像素点比中心像素值高低都有,但是连续高或低的概率是很小的。

如何加快?
如果每次都检查16个像素点和中心像素点的大小关系,速度不够理想,所以有办法加快:该方法仅仅检查在位置1,9,5和13四个位置的像素,首先检测位置1和位置9,如果它们都比阈值暗或比阈值亮,再检测位置5和位置13。

1.2.2、优缺点

速度快,可用于实时性要求高的场合。但是FAST仅处理单一尺度图像,且孤立的噪点也容易被检测出来,当图像早点较多时会产生外点,鲁棒性下降

1.3、SIFT

SIFT算法原理
Sift中尺度空间、高斯金字塔、差分金字塔(DOG金字塔)、图像金字塔
Sift算子特征点提取、描述及匹配全流程解析
SIFT

SIFT即尺度不变特征变换,具有尺度不变性,是一种局部特征描述子。

1.3.1 前置知识:高斯金字塔和HOG金字塔

高斯金字塔
在这里插入图片描述
(注意这里的同尺寸的是一组图像,一组图像里面有很多层)

HOG金字塔
DOG(Difference of Gaussian),于是便很好理解了。
在这里插入图片描述
左边是高斯金字塔,每组的不同层之间做差,便得到了DOG金字塔。
归一化后的DOG金字塔图像,这些特征正是SIFT所要提取的“稳定”特征[DOG金字塔是高频信息,它包括了各种特征点以及边界噪点等,所以后面在搜寻关键点时会有筛掉边界点噪点的步骤]
在这里插入图片描述

1.3.2 原理

  1. 空间极值点检测(关键点的初步探查)
    假设你现在得到了DOG金字塔,现在来判断一个像素点是不是极值点:1)先和自己的邻域像素点比较,比如和周围3x3的8个像素点比较;2)在和同组内尺寸相同,模糊程度不同)上层和下层图像的邻域比较,比如和上层同位置的9个点(3x3)比较,再和下层同位置的9个点比较,总共比较3*3*2=18个点.
    这样保证了在尺度空间和邻域上都是极值点。一个点如果在DOG尺度空间本层以及上下两层的26个领域中是最大或最小值时,就认为该点是图像在该尺度下的一个特征点。

  2. 特征点的精确定位
    因为诸如噪声等在DOG中也会出现,即对噪声和边缘等敏感,所以要将上步初步检测的关键点进行筛选。
    这里如何实现的很多博客都没写明白,emmm…
    (对DOG函数求导是得到梯度,看梯度得到周围的关系,根据周围的关系来判断是不是合格的?)
    经过这一步,图中仅保留真正的特征点。

经典的图像匹配算法----SIFT

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
A.机器学习入门算法(三):基... 机器学习算法(三):K近邻(k-nearest neigh...
数字温湿度传感器DHT11模块... 模块实例https://blog.csdn.net/qq_38393591/article/deta...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
Redis 所有支持的数据结构... Redis 是一种开源的基于键值对存储的 NoSQL 数据库,支持多种数据结构。以下是...
win下pytorch安装—c... 安装目录一、cuda安装1.1、cuda版本选择1.2、下载安装二、cudnn安装三、pytorch...
MySQL基础-多表查询 文章目录MySQL基础-多表查询一、案例及引入1、基础概念2、笛卡尔积的理解二、多表查询的分类1、等...
keil调试专题篇 调试的前提是需要连接调试器比如STLINK。 然后点击菜单或者快捷图标均可进入调试模式。 如果前面...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
IHome主页 - 让你的浏览... 随着互联网的发展,人们越来越离不开浏览器了。每天上班、学习、娱乐,浏览器...
TCP 协议 一、TCP 协议概念 TCP即传输控制协议(Transmission Control ...
营业执照的经营范围有哪些 营业执照的经营范围有哪些 经营范围是指企业可以从事的生产经营与服务项目,是进行公司注册...
C++ 可变体(variant... 一、可变体(variant) 基础用法 Union的问题: 无法知道当前使用的类型是什...
血压计语音芯片,电子医疗设备声... 语音电子血压计是带有语音提示功能的电子血压计,测量前至测量结果全程语音播报࿰...
MySQL OCP888题解0... 文章目录1、原题1.1、英文原题1.2、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3...
【2023-Pytorch-检... (肆十二想说的一些话)Yolo这个系列我们已经更新了大概一年的时间,现在基本的流程也走走通了,包含数...
实战项目:保险行业用户分类 这里写目录标题1、项目介绍1.1 行业背景1.2 数据介绍2、代码实现导入数据探索数据处理列标签名异...
记录--我在前端干工地(thr... 这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前段时间接触了Th...
43 openEuler搭建A... 文章目录43 openEuler搭建Apache服务器-配置文件说明和管理模块43.1 配置文件说明...