基于特征点检测和匹配的图像识别

特征点
一个图像的特征点由两部分组成:关键点(keypoint)和描述子(Descriptor)。关键点指的是该特征点在图像中的位置,有些还具有方向、尺度等信息。描述子通常是一个向量,按照人为的设计方式,描述关键点周围像素的信息。通常描述子是按照外观相似的特征应该有相似的描述子设计的。因此,在匹配的时候,只要两个特征点的描述子在向量空间的距离相近,就可以认为它们是同一个特征点。
特征点的匹配通常需要三步:
(1)提取图像中的关键点–查找图像中具有某些特征的像素
(2)根据得到的关键点位置,计算特征点的描述子
(3)根据特征点的描述子,进行匹配
特征检测
在图片中找到感兴趣区域的过程就叫做特征检测。opencv中提供了多个特征检测算法:

  • Harris corner detection:角点是在所有方向像素变化剧烈的点,Harris和Stephens提出了检测这样区域的快速方法。opencv:cv2:cornerHarris
  • Shi-Tomasi corner detection:通常比Harris更优,它们查找N个最强的角点。opencv:cv2:goodFeaturesToTrack
  • Scale-Invariant Feature Transform(SIFT):在图像大小改变时角点检测的效果就不好了,Lowe提出了一个描述图像里与角度大小无关的关键点的方法。在opencv3中,SIFT在contrib模块里。opencv3:cv2:xfeatures2d.SIFT_create()
  • Speed-Up Robust Features(SURF):SURF将SIFT中的Laplacian of a Gaussisan(LOG)用一个方框滤波代替(box filter)代替。opencv3:cv2:xfeatures2d.SURF_create()

一般而言,一个物体的角点最能股代表物体的特征,所以特征检测又叫角点(Corner) 检测。
harris是最早的特征提取算法,opencv实现如下:

dst = cv2.conrnerHarris(gray,blockSize=2,ksize=5,k=0.04)
# blockSize - 检测的临点数
# ksize -sobel边缘检测的核
# k -目标函数的一个参数(一般取值较小)

harris corner算法能够解决旋转不变性问题,但不能解决尺度变化问题,由此提出了SIFT算法

SIFT

SIFT(ScaleInvariant Feature Transform,尺度不变特征变换)是一种尺度不变特征检测法。SIFT特征对旋转、尺度旋转、亮度变化等保持不

  • 1
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值