图像匹配简介

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

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. 化简后带入自相关函数,得到矩阵 M M M
  4. 矩阵 M M M的特征值 λ 1 λ_1 λ1 λ 2 λ_2 λ2和自相关函数值:
类别特征值关系自相关函数值
平面两个特征值都小,且近似相等自相关函数值在各方面都小
直线特征值一大一小自相关函数值在某方向上大,其他方向小
角点两个特征值都大,且近似相等自相关函数在所有方向都大

1.1.2、算法实现

  1. 计算梯度
    在这里插入图片描述
    I x = I ( x + 1 , y ) − I ( x − 1 , y ) , I y = 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(x1,y)Iy=I(x,y+1)I(x,y1)

  2. 计算梯度乘积
    I x 2 = I x ∗ I x I_x^2=I_x*I_x Ix2=IxIx
    I y 2 = I y ∗ I y I_y^2=I_y*I_y Iy2=IyIy
    I x y = I x ∗ I y I_{xy}=I_x*I_y Ixy=IxIy

  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的像素值用 I I I表示
  2. 设定一个阈值t
  3. 以像素p为中心,半径为3得到一个圆,该圆边界上有16个像素
    在这里插入图片描述
  4. 如果这16个像素有n个连续的像素点,都比 I + t I+t I+t大或者比 I − t 小 I-t小 It,那么它就是一个角点。
    实际上也容易理解,如果是一个角点,那么一半偏亮一半偏暗,所以是连续都比 I + t I+t I+t大或者比 I − t 小 I-t小 It。试想如果是平面,可能周围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

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
图像匹配是指在计算机视觉领域中,通过比较两幅图像的特征来确定它们之间的相似性。通常使用特征点和描述子来表示图像的特征。在Python中,可以使用不同的库和算法来进行图像匹配。 一种常用的图像匹配算法是SIFT(尺度不变特征变换)算法。在引用中的代码示例中,使用了PIL库和PCV库中的SIFT模块来进行图像匹配。首先,通过process_image函数处理图像并提取特征点和描述子。然后,使用match_twosided函数对两幅图像的描述子进行匹配,并输出匹配点的数量。 另一种图像匹配算法是Harris角点检测算法。在引用中的代码示例中,使用了PIL库和numpy库进行图像处理,并使用harris库来计算Harris响应和获取特征点和描述子。通过compute_harris_response函数计算Harris响应,然后使用get_harris_points函数获取特征点,并使用get_descriptors函数获取描述子。最后,可以通过比较两幅图像的描述子来进行匹配。 还有一种图像匹配算法是使用OpenCV库进行图像匹配。在引用中的代码示例中,使用了cv2库和numpy库来进行图像处理。通过showpiclocation函数实现图像的定位和匹配,可以将要匹配的图像作为参数传递给函数,并将匹配结果在原图上进行可视化。 综上所述,图像匹配可以使用不同的算法和库来实现,包括SIFT算法、Harris角点检测算法和OpenCV库等。具体选择哪种方法取决于实际需求和问题的复杂程度。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Python计算机视觉之特征提取与图像匹配](https://blog.csdn.net/qq_54685803/article/details/124107552)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [图像匹配---(Python)](https://blog.csdn.net/liyuqian199695/article/details/53888254)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是一个对称矩阵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值