详细解释计算协方差矩阵 C(3D Harris),并给出计算样例及步骤

详细解释3D Harris特征提取中的协方差矩阵CCC计算

在3D Harris特征提取中,协方差矩阵CCC是核心计算步骤,用于量化点云局部邻域的几何变化。其计算基于邻域点的坐标或法向量,反映邻域在三个主方向上的分布特性。


1. 协方差矩阵CCC的定义

对于点云中的某个点ppp,其邻域N(p)N(p)N(p)包含nnn个点{q1,q2,...,qn}\{q_1, q_2, \dots, q_n\}{q1,q2,...,qn}。协方差矩阵CCC定义为:
C=1n∑i=1n(qi−qˉ)(qi−qˉ)TC = \frac{1}{n} \sum_{i=1}^n (q_i - \bar{q})(q_i - \bar{q})^TC=n1∑i=1n(qi−qˉ)(qi−qˉ)T

其中:

-qˉ=1n∑i=1nqi\bar{q} = \frac{1}{n} \sum_{i=1}^n q_iqˉ=n1∑i=1nqi是邻域点的质心(均值)。

-(qi−qˉ)(q_i - \bar{q})(qi−qˉ)是点qiq_iqi相对于质心的偏移向量。

-(qi−qˉ)T(q_i - \bar{q})^T(qi−qˉ)T是偏移向量的转置(列向量转行向量)。

-(qi−qˉ)(qi−qˉ)T(q_i - \bar{q})(q_i - \bar{q})^T(qi−qˉ)(qi−qˉ)T是一个3×33 \times 33×3的外积矩阵,表示点qiq_iqi对协方差矩阵的贡献。

若使用法向量

若邻域点的几何信息为法向量{n1,n2,...,nn}\{n_1, n_2, \dots, n_n\}{n1,n2,...,nn},则协方差矩阵可定义为:
C=1n∑i=1n(ni−nˉ)(ni−nˉ)TC = \frac{1}{n} \sum_{i=1}^n (n_i - \bar{n})(n_i - \bar{n})^TC=n1∑i=1n(ni−nˉ)(ni−nˉ)T

其中nˉ=1n∑i=1nni\bar{n} = \frac{1}{n} \sum_{i=1}^n n_inˉ=n1∑i=1nni是邻域法向量的均值。


2. 协方差矩阵的物理意义

协方差矩阵CCC是一个对称矩阵,其特征值λ1,λ2,λ3\lambda_1, \lambda_2, \lambda_3λ1,λ2,λ3(按降序排列)反映邻域在三个主方向上的变化程度:

  • 大特征值:对应方向变化剧烈(如边缘或角点)。
  • 小特征值:对应方向变化平缓(如平面区域)。

3D Harris算法通过分析特征值的分布来检测关键点:

  • 角点 :三个特征值均较大(λ1≈λ2≈λ3\lambda_1 \approx \lambda_2 \approx \lambda_3λ1≈λ2≈λ3)。
  • 边缘 :两个特征值较大,一个较小(λ1≈λ2≫λ3\lambda_1 \approx \lambda_2 \gg \lambda_3λ1≈λ2≫λ3)。
  • 平面 :一个特征值较大,两个较小(λ1≫λ2≈λ3\lambda_1 \gg \lambda_2 \approx \lambda_3λ1≫λ2≈λ3)。

3. 计算步骤与样例

样例数据

假设点ppp的邻域N(p)N(p)N(p)包含以下3个点(坐标形式):
q1=(1,2,3),q2=(2,3,4),q3=(3,4,5)q_1 = (1, 2, 3), \quad q_2 = (2, 3, 4), \quad q_3 = (3, 4, 5)q1=(1,2,3),q2=(2,3,4),q3=(3,4,5)

步骤1:计算质心qˉ\bar{q}qˉ

qˉ=(1+2+33,2+3+43,3+4+53)=(2,3,4)\bar{q} = \left( \frac{1+2+3}{3}, \frac{2+3+4}{3}, \frac{3+4+5}{3} \right) = (2, 3, 4)qˉ=(31+2+3,32+3+4,33+4+5)=(2,3,4)

步骤2:计算偏移向量qi−qˉq_i - \bar{q}qi−qˉ

q1−qˉ=(1−2,2−3,3−4)=(−1,−1,−1)q2−qˉ=(2−2,3−3,4−4)=(0,0,0)q3−qˉ=(3−2,4−3,5−4)=(1,1,1)q_1 - \bar{q} = (1-2, 2-3, 3-4) = (-1, -1, -1) \\ q_2 - \bar{q} = (2-2, 3-3, 4-4) = (0, 0, 0) \\ q_3 - \bar{q} = (3-2, 4-3, 5-4) = (1, 1, 1)q1−qˉ=(1−2,2−3,3−4)=(−1,−1,−1)q2−qˉ=(2−2,3−3,4−4)=(0,0,0)q3−qˉ=(3−2,4−3,5−4)=(1,1,1)

步骤3:计算外积矩阵(qi−qˉ)(qi−qˉ)T(q_i - \bar{q})(q_i - \bar{q})^T(qi−qˉ)(qi−qˉ)T

对于q1−qˉ=(−1,−1,−1)q_1 - \bar{q} = (-1, -1, -1)q1−qˉ=(−1,−1,−1):
(q1−qˉ)(q1−qˉ)T=−1−1−1−1−1−1=111111111(q_1 - \bar{q})(q_1 - \bar{q})^T = \begin{bmatrix} -1 \\ -1 \\ -1 \end{bmatrix} \begin{bmatrix} -1 & -1 & -1 \end{bmatrix}= \begin{bmatrix} 1 & 1 & 1 \\ 1 & 1 & 1 \\ 1 & 1 & 1 \end{bmatrix}(q1−qˉ)(q1−qˉ)T= −1−1−1 −1−1−1= 111111111

同理:

-q2−qˉq_2 - \bar{q}q2−qˉ的外积矩阵为000(零矩阵)。

-q3−qˉ=(1,1,1)q_3 - \bar{q} = (1, 1, 1)q3−qˉ=(1,1,1)的外积矩阵与q1q_1q1相同:
111111111\begin{bmatrix} 1 & 1 & 1 \\ 1 & 1 & 1 \\ 1 & 1 & 1 \end{bmatrix} 111111111

步骤4:求和并平均得到协方差矩阵CCC

C=13(111111111+000000000+111111111)=13222222222=232323232323232323C = \frac{1}{3} \left( \begin{bmatrix} 1 & 1 & 1 \\ 1 & 1 & 1 \\ 1 & 1 & 1 \end{bmatrix} + \begin{bmatrix} 0 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \end{bmatrix} + \begin{bmatrix} 1 & 1 & 1 \\ 1 & 1 & 1 \\ 1 & 1 & 1 \end{bmatrix} \right)= \frac{1}{3} \begin{bmatrix} 2 & 2 & 2 \\ 2 & 2 & 2 \\ 2 & 2 & 2 \end{bmatrix}= \begin{bmatrix} \frac{2}{3} & \frac{2}{3} & \frac{2}{3} \\ \frac{2}{3} & \frac{2}{3} & \frac{2}{3} \\ \frac{2}{3} & \frac{2}{3} & \frac{2}{3} \end{bmatrix}C=31 111111111 + 000000000 + 111111111 =31 222222222 = 323232323232323232

步骤5:特征值分解

协方差矩阵CCC的特征值为:
λ1=2,λ2=0,λ3=0\lambda_1 = 2, \quad \lambda_2 = 0, \quad \lambda_3 = 0λ1=2,λ2=0,λ3=0

(因为CCC的秩为1,仅有一个非零特征值。)

物理意义

此邻域在(1,1,1)(1,1,1)(1,1,1)方向上变化剧烈(如一条直线),而在其他方向无变化,因此检测为边缘特征而非角点。


4. 使用法向量的协方差矩阵计算

若邻域点的法向量为:
n1=(0.5,0.5,0.707),n2=(0.5,−0.5,0.707),n3=(−0.5,0,0.866)n_1 = (0.5, 0.5, 0.707), \quad n_2 = (0.5, -0.5, 0.707), \quad n_3 = (-0.5, 0, 0.866)n1=(0.5,0.5,0.707),n2=(0.5,−0.5,0.707),n3=(−0.5,0,0.866)

(已归一化,即∥ni∥=1\|n_i\| = 1∥ni∥=1)

步骤1:计算法向量均值nˉ\bar{n}nˉ

nˉ=(0.5+0.5−0.53,0.5−0.5+03,0.707+0.707+0.8663)≈(0.167,0,0.760)\bar{n} = \left( \frac{0.5+0.5-0.5}{3}, \frac{0.5-0.5+0}{3}, \frac{0.707+0.707+0.866}{3} \right) \approx (0.167, 0, 0.760)nˉ=(30.5+0.5−0.5,30.5−0.5+0,30.707+0.707+0.866)≈(0.167,0,0.760)

步骤2:计算偏移向量ni−nˉn_i - \bar{n}ni−nˉ

n1−nˉ≈(0.333,0.5,−0.053)n2−nˉ≈(0.333,−0.5,−0.053)n3−nˉ≈(−0.667,0,0.106)n_1 - \bar{n} \approx (0.333, 0.5, -0.053) \\ n_2 - \bar{n} \approx (0.333, -0.5, -0.053) \\ n_3 - \bar{n} \approx (-0.667, 0, 0.106)n1−nˉ≈(0.333,0.5,−0.053)n2−nˉ≈(0.333,−0.5,−0.053)n3−nˉ≈(−0.667,0,0.106)

步骤3:计算外积矩阵并求和

(此处省略具体矩阵计算,直接给出结果)
C≈0.2220−0.03700.50−0.03700.006C \approx \begin{bmatrix} 0.222 & 0 & -0.037 \\ 0 & 0.5 & 0 \\ -0.037 & 0 & 0.006 \end{bmatrix}C≈ 0.2220−0.03700.50−0.03700.006

步骤4:特征值分解

特征值约为:
λ1≈0.5,λ2≈0.222,λ3≈0.006\lambda_1 \approx 0.5, \quad \lambda_2 \approx 0.222, \quad \lambda_3 \approx 0.006λ1≈0.5,λ2≈0.222,λ3≈0.006
物理意义

三个特征值均较小且差异不大,说明邻域法向量分布均匀,可能为平面区域或噪声点。


5. 总结

  • 协方差矩阵CCC 是3D Harris算法的核心,通过邻域点的坐标或法向量计算。
  • 特征值分析 可区分角点、边缘和平面:
    • 角点:三个特征值均大且接近。
    • 边缘:两个特征值大,一个小。
    • 平面:一个特征值大,两个小。
  • 计算步骤:质心计算 → 偏移向量 → 外积矩阵 → 求和平均 → 特征值分解。

通过调整邻域大小和响应阈值,可优化关键点检测效果。

相关推荐
Bobolink_16 天前
TikTok矩阵账号如何批量养号?工作室级运营方案分享
矩阵·内容运营·跨境电商·tik tok·账号运营
H1785350909616 天前
SolidWorks第四部分_直接实体建模特征9_替换面原理
线性代数·算法·机器学习·3d建模·solidworks
AI_yangxi16 天前
短视频矩阵系统专业公司
大数据·人工智能·矩阵
昇腾CANN17 天前
【cann-samples系列】GroupedMatmul MX量化矩阵乘的深度性能优化实践
线性代数·性能优化·矩阵·昇腾·cann
青山木17 天前
Hot 100 --- 矩阵置零
线性代数·算法·leetcode·矩阵·哈希算法
Jasmine_llq17 天前
《B4264 [GESP202503 四级] 二阶矩阵》
线性代数·算法·矩阵·二维矩阵遍历枚举所有2×2矩阵·交叉乘积等式条件判断·输入输出快读加速·长整型防溢出计数统计
阿泽·黑核17 天前
05 keyflow 扩展设计方案:矩阵键盘/组合键/事件队列/中断驱动
线性代数·矩阵·计算机外设·嵌入式·agent·vibe coding
工头阿乐17 天前
相机坐标系标定与外参矩阵求解
数码相机·线性代数·矩阵
金色熊族18 天前
QTransform使用心得(二)--仿射变换、非仿射变换、矩阵
qt·线性代数·矩阵