详细解释计算协方差矩阵 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\])=13\[222222222\]=\[232323232323232323\]C = \\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.006\]C \\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算法的核心,通过邻域点的坐标或法向量计算。 * **特征值分析** 可区分角点、边缘和平面: * 角点:三个特征值均大且接近。 * 边缘:两个特征值大,一个小。 * 平面:一个特征值大,两个小。 * **计算步骤**:质心计算 → 偏移向量 → 外积矩阵 → 求和平均 → 特征值分解。 通过调整邻域大小和响应阈值,可优化关键点检测效果。

相关推荐
一碗姜汤16 小时前
【统计基础】卡尔曼滤波,矩阵对迹求导,Joseph Form,条件数
线性代数·矩阵
sunfove16 小时前
麦克斯韦方程组 (Maxwell‘s Equations) 的完整推导
线性代数·算法·矩阵
yyy(十一月限定版)17 小时前
matlab矩阵的操作
算法·matlab·矩阵
ComputerInBook18 小时前
代数学基本概念理解——幺正矩阵(Unitary matrix)(酉矩阵?)
线性代数·矩阵·正交矩阵·幺正矩阵·酉矩阵
AI科技星20 小时前
光速飞行器动力学方程的第一性原理推导、验证与范式革命
数据结构·人工智能·线性代数·算法·机器学习·概率论
一碗姜汤21 小时前
【统计基础】从线性代数的直观角度理解SVD奇异值分解
线性代数
好奇龙猫21 小时前
【大学院-筆記試験練習:线性代数和数据结构(5)】
数据结构·线性代数
jinmo_C++1 天前
Leetcode矩阵
算法·leetcode·矩阵
愚公搬代码2 天前
【愚公系列】《AI+直播营销》015-直播的选品策略(设计直播产品矩阵)
人工智能·线性代数·矩阵
paixingbang2 天前
2026短视频矩阵服务商评测报告 星链引擎、河南云罗、数阶智能
大数据·线性代数·矩阵