harris角点检测和SIFT

本文介绍了Harris角点检测和SIFT(尺度不变特征转换)算法在图像处理中的应用。Harris角点检测通过计算图像局部自相似性的变化来识别角点,而SIFT则通过构建尺度空间和高斯差分金字塔来实现尺度不变的特征匹配。Harris角点检测的关键在于计算特征矩阵并比较特征值,而SIFT则涉及多分辨率金字塔、极值检测和方向分配。这两种方法在图像识别和匹配中具有重要作用。
摘要由CSDN通过智能技术生成

Harris角点检测

#harris角点检测就是利用模板来找出像素值突变的部分
一般利用自相似性来表示模板移动后的差异
对于图像l(x,y),当再点(x,y)处平移(Δx,Δy)后的自相似性:
c(x,y,Δx,Δy) = ∑w(u,v)(I(u,v)-I(u+Δx,v+Δy)_2,
其中W(x,y)是以(x,y)为中心的n*n窗口,(u,v)属于W(x,y),
公式中的w(x,y)是窗口中每个像素的权重,可以是常数,也可以是高斯加权函数。
在这里插入图片描述
角点检测步骤:
1 得到梯度值
2 合成相对应矩阵
3 计算矩阵的特征值
4 比较两个特征值λ1 λ2
若其中一个特征值大,一个特征值小,则说明自相似性函数数值在一个方向上大,在一个方向上小,则为边界;
若两个特征值都小且近似相等,则为平面;
若两个特征值都大,且近似相等,则为角点。
5 若角点周围也检测到其他干扰,用极大值抑制

cv示例:
cv2.cornerHarris()四个参数依次为
img:数据类型为float32的入图像
blockSize:角点检测中指定区域的大小
ksize:Sobel求导中使用的窗口的大小
k:取值参数为[0.04,0.06]

import cv2 as cv
import numpy as np

img = cv.imread('.png')#使用时需要注意图片的维度,与下边的【0,0,255】维度对应
gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
gray = np.float32(gray)
dst = cv.cornerHarris(gray,2,3,0.04)
img[dst>0.01*dst.max()] = [0,0,255]
cv.imshow('dst',img)
cv.waitkey(0)
cv.destroyAllWindows()

平移不变性图像特征匹配算法—SIFT

图像尺度空间

在一定的范围内,无论物体是大还是小,人眼都可以分辨出来。然而计算机却很难有相同的能力。所以要考虑让机器能够对物体在同意尺度下有一个统一的认知,就需要考虑图像在不同尺度下都存在的特点。

尺度空间的获取通常通过高斯模糊来实现
不同σ的高斯函数决定了地图想的平滑程度,σ越大,图像越模糊。在这里插入图片描述

在这里插入图片描述

多分辨率金字塔

每一层分辨率的金字塔中,都要包含n个高斯模糊图像

高斯差分金字塔(DOG)

即将相同点忽略,找出不同点。
用从一层中,即分辨率相同的不同高斯滤波函数结果相互做差,得到n-1个结果。

在这里插入图片描述
DOG定义公式:
D(x,y,σ)=[G(x,y,kσ)-G(x,y,σ)] * I(x,y)
=L(x,y,kσ)-L(x,y,σ)

DoG空间极值检测:为了寻找尺度空间的极值点,每个像素点要和其图像域(统一尺度空间)和尺度域(相邻的尺度空间)的所有的相邻点进行比较,当其大于或小于所有相邻点时,该点就是极值点。如下图所示,中间的检测点要和其所在图像的33邻域8个像素点,以及上下两层的29个像素点进行比较。
在这里插入图片描述
关键点的精确定位:
一维数据可以用泰勒级数进行拟合
在这里插入图片描述
三维数据使用矩阵:
在这里插入图片描述
消除边界响应

特征点的主方向特征点可以得到三个信息(x,y,σ,θ),即位置,尺度,和方向。具有多个方向的关键点可以被复制成多分,然乎将方向值分别赋给复制后的特征点,一个特征点就产生了多个坐标、尺度相等,但方向不同的特征点。

生成特征描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值