• SIFT特征点检测与匹配


    SIFT的步骤如下:

    (1) 尺度空间极值检测(Scale-space Extrema Detection)
    也就是在多尺度高斯差分(Difference of Gauss)空间中检测极值点(3x3x3 区域极值),
    作为候选的关键点(Potential keypoints)。
    
    (2) 定位关键点(Keypoint Localization),舍弃低对比度关键点和高边缘响应的关键点。
    确定候选关键点后,使用泰勒级数展开来精确定位极值点。舍弃亮度值较低(对比度较低)的极值点。
    同时由于DoG空间是差分空间,对边缘有较高响应的同时也对噪声敏感。因此使用 2x2 的 
    Hassian 矩阵计算其特征值的比率,舍弃比值较大的极值点。
    
    (3) 方向赋值(Orientation Assignment)
    在关键点周围一定区域内计算梯度方向和幅度累计直方图。使用高斯窗函数(sigma=1.5 x Scale)加权。
    取所有 bin 峰值大于最大值 80% 的峰的朝向作为关键点的方向。
    (也就是说,可能存在同一尺度空间同一位置不同朝向的关键点们)。
    
    (4) 构建关键点描述子(Keypoint descriptor)
    取关键点周围 16x16 的邻域,划分为 164x4 的子块,每个子块构建 8 方向 朝向直方图,
    构成 16 x 8 = 128 维度特征向量。
    
    (5) 关键点匹配(Keypoint matching)和测试
    对场景图和目标物体图都提取 SIFT 关键点,然后使用 KNN 以计算匹配最匹配的两个点。
    如果到最匹配距离和到次匹配距离之间比值大于一定阈值(如0.9)则说明是噪声点,舍弃。
    
    (6) 获取仿射变换矩阵,几何变换查找物体
    从获取到的匹配关键点对使用随机抽样一致性(RANSAC, Random Sample consensus algorithm)
    计算放射变换矩阵,然后变换后即可获取带查找目标在场景图中的位置。
    
  • 相关阅读:
    lc377完全背包问题
    lc650
    lc583
    java static序列化
    lc90回溯
    lc78回溯
    Java基础之常量池
    语法与语义
    数据结构之复杂度分析
    数据结构与算法前言
  • 原文地址:https://www.cnblogs.com/bryce1010/p/9386916.html
Copyright © 2020-2023  润新知