为什么哈里斯矩阵是半正定的
Why harris matrix is positive semi-definite
我正在学习"Harris Corner Detector"算法,
并卡在这里为什么哈里斯矩阵是半正定的。
由于Harris矩阵的迹是正的,所以我可以判断Harris矩阵的两个特征值都是正的或者一正一负。
那么,如何推导Harris矩阵是半正定的呢?
Harris角点检测器计算产生的矩阵是结构张量(see here on Wikipedia)。结构张量M
是由梯度场g
与其自身的外积创建的矩阵:
g = gradient( image );
M = smooth( g * g' );
(应用 smooth
局部平滑)。
在没有任何平滑的情况下,根据构造,g * g'
将始终具有一个正特征值和一个 0 特征值。您可以通过写出结果矩阵的行列式来看到这一点,它始终为 0,这意味着特征值之一必须为 0(它们的乘积是行列式)。另一个必须是正的,因为迹线是两个平方和;由于一个特征值为 0,因此另一个特征值必须等于轨迹。
局部平滑将几个这样的矩阵相加(加权相加)。将半正定矩阵相加 leads to a positive-semi-definite matrix:如果 v'*A*v>=0
和 v'*B*v>=0
,则 v'*(A+B)*v>=0
.
我正在学习"Harris Corner Detector"算法, 并卡在这里为什么哈里斯矩阵是半正定的。
由于Harris矩阵的迹是正的,所以我可以判断Harris矩阵的两个特征值都是正的或者一正一负。
那么,如何推导Harris矩阵是半正定的呢?
Harris角点检测器计算产生的矩阵是结构张量(see here on Wikipedia)。结构张量M
是由梯度场g
与其自身的外积创建的矩阵:
g = gradient( image );
M = smooth( g * g' );
(应用 smooth
局部平滑)。
在没有任何平滑的情况下,根据构造,g * g'
将始终具有一个正特征值和一个 0 特征值。您可以通过写出结果矩阵的行列式来看到这一点,它始终为 0,这意味着特征值之一必须为 0(它们的乘积是行列式)。另一个必须是正的,因为迹线是两个平方和;由于一个特征值为 0,因此另一个特征值必须等于轨迹。
局部平滑将几个这样的矩阵相加(加权相加)。将半正定矩阵相加 leads to a positive-semi-definite matrix:如果 v'*A*v>=0
和 v'*B*v>=0
,则 v'*(A+B)*v>=0
.