角检测

角检测（Corner detection）或兴趣点检测（interest point detection），是计算机视觉系统中用来提取特征以及推测图像内容的一种方法。角检测的应用很广，经常用在运动检测、跟踪、马赛克（image mosaicing）、全景图缝合（panorama stiching）、三维建模以及物体识别中。
问题定义.
两条边的交点形成一个角（点）。而图像的要点（也称为受关注点）是指图像中具有代表性以及稳健性（即指该点能够在有噪声干扰的情况下也能稳定的被定位，在大陆亦被称为：鲁棒性）的点。也就是说，要点可以是角（点），也可以不是，例如局部亮点或暗点，线段终点，或者曲线上的曲率最大值点。在实际应用中，很多所谓的（角）点检测算法其实是检测要点，而不仅仅是角（点）。所以，如果我们只想检测角的话，还需要对检测出的要点进一步分析。
例如也可以先经过边检测，之后在做一些后处理来检测角，像是Kirsch operator和Frei-Chen masking set两种方法。为了分辨区辨识时图像含有一部分目标图像的资讯是否正确，角检测通常不是一个非常确定且同时需要很多额外的确认才可以确定，角检测在图像上最简单的做法是利用相关性，但这样的作法需要耗费大量的运算资源以及得到的结果可能只是局部最大值，因此有另一个常见的作法是使用Harris和Stephens所提出的经由改善Moravec方法的结果。
Moravec 角检测演算法.
这是最早使用来做角检测的做法，他首先定义所谓的「角」就是那些自我相似程度低的点。这个演算法检查所有图像中的像素，并考虑以该像素为中心点的一片范围，该范围与他周围覆盖最大的另一个范围的相似度做为参考，而相似度通常是将两个范围的对应点计算误差的平方和(SSD: Sum of Squared differences) ，越小代表相似度越高。
举例来说，如果一个像素是位于一片均匀强度的区块时，这时每个像素周围与其附近的像素的周围都是相当类似的，因此相似度也高，不会被认为是角。而在图形的边界处的像素，若是与边垂直方向处附近的像素，两者的周围图像相似度就会比较低，然而若是与边平行附近的像素，两者的周围图像相似度就会比较高(看到的都是一条在同样位置的边)，因此也不会被认为是角。只有在那些与附近像素的周围图像都很不相似的像素，才会被认为是「角」。
如果我们将这种与周围的相似程度量化(使用误差平方和)，并且找出整个图像的局部最大值(局部最不相似的点)，这些局部最大值就很有可能是我们想要侦测到的「角」。
Harris & Stephens / Plessey / Shi–Tomasi 角检测演算法.
Harris & Stephens改善了Moravec的方法，他们直接考虑每个像素沿著特定方向处的像素的SSD，而不是使用与周围像素范围的SSD。
不失一般性，我们假设现在是对一个灰阶的2维图像来做侦测。令这个图为 formula_1 ，考虑 formula_2 位置的像素与周围的区块，并选取一个固定向量 formula_3 作为该像素的参考像素，因此固定的这个向量 formula_3 所算出的所有差平方和的总和记做为 formula_5 ，而对于每个 formula_6 做不同加权，就可以得到
如果使用泰勒展开式将 formula_8 展开，假设formula_9 和 formula_10是 formula_1 的偏微分，可以得到
并将原式改写成
或是使用矩阵来简化算式
其中矩阵 formula_15 为
式子中的矩阵是Harris矩阵，而括号代表对所有的 formula_6 取加权平均，
一个角(或者说是要点)可以被刻划成该点 formula_6 使得 formula_19 在不同的方向 formula_20 之间有很大的变异数的点。
根据分析 formula_15 的特征值，以上的特性可以用下面的方式阐述：在角的点上，formula_15应该要有两个"大"的特征值。
根据特征值的大小，我们会有以下的推论：
Harris 和 Stephens 注意到计算特征值在运算量上面相当大，计算中需要使用到取平方根的操作，因此给出了另一个近似值 formula_32 ，其中 formula_33 是需要调整的重要参数。
因此该演算法不需要真正的去做 formula_15 的特征分解，而只需要去估计 formula_15 的行列式和迹。
Shi–Tomasi 角检测在假设一般图像每个像素所给出的函数值通常是光滑(smooth)且稳定的(stable)，他直接去计算 formula_37 ，有时又称该方法为 Kanade-Tomasi 角检测。
而 formula_33 的值通常是由经验决定，而通常在 0.04–0.15 的范围里是可解的。
另一种方法可以避开选择 formula_33 的困扰，这个方法是使用 Noble's 角测度 formula_40 ，而角测度是计算所有特征值
的调和平均数
其中 formula_42 是一个小的正常数。
而角的位置的共变异数矩阵即为formula_43，可以写成
Förstner 角检测.
在某些情况，会希望更精确地去计算角的位置，为了得到近似值，Förstner 演算法可以解出闭集上的角附近范围中的所有切线与最接近这些切线的点，该演算法依赖于在一个理想的角附近。
一个像素 formula_45 的切线 formula_46 可以由数学式给出
其中 formula_48 是图像 formula_1 在 formula_45 点的梯度向量。
而最靠近长方形范围 formula_51 中所有切线的点 formula_52 为
formula_52 到切线 formula_55 的距离依照梯度向量的大小来加权，因此若经过该点的切线有较大的梯度的话，在加权上就会占较高的比重。
尝试著解 formula_52 ：
formula_58 分别为
要找出最小值可以经由计算式子对 formula_60 的微分，并让微分后的式子等于0来解formula_60
注意到如果要能够解上述等式， formula_63 必须要是可逆的，或是说 formula_63 必须要是满秩的，而解可以写成
只有在范围 formula_51 之中有角时才存在。
此外 Lindeberg 给出一个方法去评估角的确定性，经由最小化误差
而这对所有尺度都适用，因此这方法可以自动去适应图片中不同梯度大小所造成的影响与误差。
此外
多尺度 Harris 算子.
Harris 算子中的微分矩阵 formula_15 会牵涉到要计算图像中的偏微分(Image derivatives) formula_71，而这可以用附近点的线性组合来做逼近，而计算线性组合时通常也会需要根据附近图像值的大小来做缩放，因此需要两个额外的缩放参数：(i)一个局部缩放参数主要用来让图像平滑一点 (ii)一个积分参数用来累积在微分操作中的非线性算子，作为图像的修正项。
若以 formula_1 代表原本图形中的亮度，formula_73 为一个将图像 formula_1 通过一个高斯滤波器让图像变模糊的结果。
而参数 formula_76 用来控制高斯滤波器的变异数
令 formula_78 和 formula_79 为 formula_73 的偏导数，此外用一个高斯滤波器作为缩放大小，参数 formula_81 可供调整。
则"multi-scale second-moment matrix" 可以被定义为
则我们也可以用前面类似的方法来计算 formula_83 的特征值，并且定义多尺度 Harris corner 测度为
注意到局部尺度参数 t 和积分尺度参数 s ，这两个参数通常会有相对关系 formula_85，其中 formula_86 为一个参数通常介于 formula_87 之间。
因此我们可以计算多尺度 Harris corner 测度 formula_88 ，在给定的任何局部尺度 t 去做到多尺度角侦测。
一般实际应用上，多尺度角侦测通常会先做尺度选择的步骤，可以参考正规化尺度拉普拉斯算子 。
常常在尺度选择的部分用到，并且用来同时调整尺度以适应该角点。