[C#][opencvsharp]opencvsharp sift和surf特征点匹配

SIFT特征和SURF特征比较 

[C#][opencvsharp]opencvsharp sift和surf特征点匹配_第1张图片

SIFT特征基本介绍

SIFT(Scale-Invariant Feature Transform)特征检测关键特征:

  • 建立尺度空间,寻找极值
  • 关键点定位(寻找关键点准确位置与删除弱边缘)
  • 关键点方向指定
  • 关键点描述子

建立尺度空间,寻找极值

工作原理

构建图像高斯金字塔,求取DOG,发现最大与最小值在每一级

构建的高斯金字塔,每一层根据sigma的值不同,可以分为几个待级,最少有4个。

关键点定位
  • 我们在像素级别获得了极值点的位置,但是更准确的值应该在亚像素位置,如何得到--这个过程称为关键点(准确/精确)定位。
  • 删除弱边缘--通过Hassian矩阵特征值实现,小于阈值自动舍弃。
关键点方向指定
  • 求得每一层对应图像的梯度,根据给定的窗口大小
  • 计算每个高斯权重,sigma=scale*1.5, 0-360之间建立36个直方图Bins
  • 找最高峰对应的Bin,大于max*80%的都保留
  • 这样就实现了旋转不变性,提高了匹配时候的稳定性
  • 大约有15%的关键点会有多个方向
关键点描述子
  • 拟合多项式插值寻找最大Peak
  • 得到描述子 = 4*4*8=128

SURF效果演示:

[C#][opencvsharp]opencvsharp sift和surf特征点匹配_第2张图片

SIFT效果演示:

[C#][opencvsharp]opencvsharp sift和surf特征点匹配_第3张图片 

【测试环境】

vs2019, netframework4.7.2,opencvhsarp4.8.0

【源码下载】

你可能感兴趣的:(C#,人工智能,机器学习,算法)