点云NARF关键点原理、算法描述及参数详细描述

点云NARF关键点原理、算法描述及参数详细说明

一、NARF关键点原理

NARF(Normal Aligned Radial Feature)是一种专为深度图像设计的3D关键点检测算法,旨在从点云中提取具有稳定性和可重复性的特征点。其核心原理基于以下两点:

  1. 边缘与表面变化感知:通过检测深度图像中深度突变的位置(边缘)和表面变化剧烈的区域,提取结构显著的特征点。
  2. 多视角鲁棒性:关键点需在不同视角下保持可重复探测,且位置稳定,支持区域足够大以计算描述子和法向量。
二、算法步骤与参数说明
1. 边缘点提取

目标 :识别深度图像中的边缘点(物体边界、阴影边界、遮蔽点)。
步骤

  1. 邻域距离计算

    • 对每个深度图像点pip_ipi,创建边长为sss的方形窗口,选取窗口内邻域点NpiN_{p_i}Npi。
    • 计算pip_ipi与邻域点的3D距离Dpi={d0,d1,...,ds2}D_{p_i} = \{d_0, d_1, ..., d_{s^2}\}Dpi={d0,d1,...,ds2},并按升序排列得到Dpi′D_{p_i}'Dpi′。
    • 参数
      -sss:窗口大小(默认值:5像素),控制邻域范围。
      -MMM:共面点数量阈值,通常取M=(s+12)2M = \left(\frac{s+1}{2}\right)^2M=(2s+1)2,用于筛选典型距离δ=dM′\delta = d_M'δ=dM′。
  2. 边缘可信度评分

    • 对每个方向(上、下、左、右),计算平均距离点prightp_{\text{right}}pright(以右侧为例):
      pright=1mp∑i=1mppx+i,y,mp=3p_{\text{right}} = \frac{1}{m_p} \sum_{i=1}^{m_p} p_{x+i,y}, \quad m_p=3pright=mp1∑i=1mppx+i,y,mp=3
    • 计算当前点与平均距离点的3D距离dright=∥px,y−pright∥d_{\text{right}} = \|p_{x,y} - p_{\text{right}}\|dright=∥px,y−pright∥。
    • 边缘可信度评分:
      sright=max⁡(0,1−δdright)s_{\text{right}} = \max\left(0, 1 - \frac{\delta}{d_{\text{right}}}\right)sright=max(0,1−drightδ)
      • 参数
        -mpm_pmp:邻域点采样数量(默认值:3),影响评分鲁棒性。
  3. 边缘类型分类

    • 比较px,yp_{x,y}px,y与prightp_{\text{right}}pright的深度值:
      • 若px,yp_{x,y}px,y更小,则为物体边界(Obstacle Border)。
      • 否则为阴影边界(Shadow Border)。
    • 对物体边界点,在其右侧mpm_pmp范围内搜索3D距离最大的点作为对应阴影边界,并调整评分:
      sright′=max⁡(0.9,1−(1−sshadow)3)⋅srights_{\text{right}}' = \max\left(0.9, 1 - (1 - s_{\text{shadow}})^3\right) \cdot s_{\text{right}}sright′=max(0.9,1−(1−sshadow)3)⋅sright
      • 参数
        -sshadows_{\text{shadow}}sshadow:阴影边界可信度,用于抑制噪声。
  4. 非极大值抑制(NMS)

    • 删除评分低于阈值(默认:0.8)的点。
    • 按评分降序排序,保留局部最大值,删除重叠点(IOU阈值默认:0.5)。
2. 关键点检测

目标 :从边缘点中筛选出稳定、可重复的关键点。
步骤

  1. PCA分析

    • 对每个边缘点,在其2δ2\delta2δ范围内计算邻域点的3D位置,通过PCA估计法向量和主方向vvv。
    • 计算表面变化系数λ\lambdaλ(主方向特征值),表征表面变化剧烈程度。
  2. 兴趣值计算

    • 对边缘点,兴趣值w=1w = 1w=1;对其他点:
      w=1−(1−λ)3w = 1 - (1 - \lambda)^3w=1−(1−λ)3
    • 结合主方向角度α\alphaα调整权重(将α\alphaα归一化到[0,π][0, \pi][0,π]范围)。
  3. 关键点筛选

    • 设定兴趣值阈值T2T_2T2(默认:0.5),保留兴趣值高于阈值的点作为NARF关键点。
三、关键参数总结
参数 说明 默认值/推荐值
sss 边缘检测窗口大小(像素) 5
mpm_pmp 邻域点采样数量 3
MMM 共面点数量阈值 (s+12)2\left(\frac{s+1}{2}\right)^2(2s+1)2
δ\deltaδ 典型3D距离(跳变距离) dM′d_M'dM′
T2T_2T2 关键点兴趣值阈值 0.5
NMS阈值 非极大值抑制评分阈值 0.8
IOU阈值 非极大值抑制重叠阈值 0.5
四、算法特点
  1. 稳定性:关键点位于边缘和表面变化剧烈区域,支持区域大,法向量估计稳定。
  2. 效率:基于2D深度图像操作,计算量远小于直接处理3D点云。
  3. 鲁棒性:对噪声和分辨率变化不敏感,适用于不同视角和遮挡场景。
相关推荐
talenteddriver20 分钟前
java: Java8以后hashmap扩容后根据高位确定元素新位置
java·算法·哈希算法
跨境猫小妹44 分钟前
2025 TikTok Shop:从内容爆发到系统化深耕的商业跃迁
大数据·人工智能·算法·产品运营·亚马逊
不穿格子的程序员1 小时前
从零开始写算法 —— 二叉树篇 1:二叉树的三种遍历(递归实现法)
算法·深度优先·二叉树遍历·fds
子夜江寒1 小时前
逻辑森林与贝叶斯算法简介
算法·机器学习
xu_yule1 小时前
算法基础-背包问题(01背包问题)
数据结构·c++·算法·01背包
我不是小upper2 小时前
从理论到代码:随机森林 + GBDT+LightGBM 融合建模解决回归问题
人工智能·深度学习·算法·随机森林·机器学习·回归
budingxiaomoli2 小时前
分治算法-快排
数据结构·算法
云泽8082 小时前
C++ STL 栈与队列完全指南:从容器使用到算法实现
开发语言·c++·算法
前端小白在前进3 小时前
力扣刷题:复原IP地址
tcp/ip·算法·leetcode
yaoh.wang3 小时前
力扣(LeetCode) 94: 二叉树的中序遍历 - 解法思路
python·算法·leetcode·面试·职场和发展·二叉树·跳槽