image-processing - 为什么哈里斯矩阵是半正定的
问题描述
我正在学习“哈里斯角检测器”算法,并坚持为什么哈里斯矩阵是半正定的。
由于哈里斯矩阵的迹是正的,所以我可以告诉哈里斯矩阵的两个特征值都是正的或一正一负的。
那么,如何推导哈里斯矩阵是半正定的呢?
解决方案
在 Harris 角点检测器的计算中生成的矩阵是结构张量(参见 Wikipedia 上的此处)。结构张量是由梯度场与自身M
的外积创建的矩阵:g
g = gradient( image );
M = smooth( g * g' );
(应用smooth
了局部平滑)。
在没有任何平滑的g * g'
情况下,通过构造,将始终具有一个正特征值和一个 0 特征值。您可以通过写出结果矩阵的行列式来看到这一点,该行列式始终为 0,这意味着特征值之一必须为 0(它们的乘积是行列式)。另一个必须是正数,因为迹线是两个平方的和;由于一个特征值是 0,另一个特征值必须等于迹。
局部平滑将几个这样的矩阵相加(加权相加)。将半正定矩阵相加得到一个半正定矩阵: if v'*A*v>=0
, and v'*B*v>=0
, then v'*(A+B)*v>=0
。
推荐阅读
- reactjs - 如何在本机反应中全局处理错误?
- java - 使用来自 apache sshd 的 ssh 设置 ssh 密钥以与 jgit 一起使用
- or-tools - OR-Tools:一个 IntVar 是一个 IntVar 减去 Java 中的另一个 IntVar?
- android - 使用协程的 Firestore 快照?
- vue.js - 如何正确使用 Vue 上的选项卡旁边的路由器视图来根据活动选项卡更改 url?
- laravel - 当我尝试动态构建查询时,Laravel 查询构建器和 Eloquent 查询构建器添加了一个奇怪的短语?
- c# - 为什么它总是将日期中的时间保存到数据库中为零 C#
- angular - 如何在 Angular 中生成循环库
- android - 片段内的 YoutubePlayerFragment
- python - 如何知道 Python 中当前使用的是哪个 GPU 设备?