https://www.cnblogs.com/bjxqmy/p/12459005.html
Shi-Tomasi 角点检测概述
除了利用 Harris 进行角点检测外,我们通常还可以利用 Shi-Tomasi 方法进行角点检测。Shi-Tomasi 算法是 Harris 算法的改进,此算法最原始的定义是将矩阵 M 的行列式值与 M 的迹相减,再将差值同预先给定的阈值进行比较。后来 Shi 和 Tomasi 提出了改进方法,若两个特征值中较小的一个大于最小阈值,则会得到强角点。
确定图像强角点:goodFeaturesToTrack 函数
void goodFeaturesToTrack(InputArray image,
OutputArray corners,
int maxCorners,
double qualityLevel,
double minDistance,
InputArray mask = noArray(),
int blockSize = 3,
bool useHarrisDetector = false,
double k = 0.04);
- image,输入图像,需为 8 位或浮点型 32 位单通道图像。
- corners,检测到的角点将被存在这里。
- maxCorners,角点的最大数量。
- qualityLevel,角点检测可接受的最小特征值 = qualityLevel * 图像中最大特征值。所以 qualityLevel 不会超过 1(通常为 0.1 或 0.01)。检测完所有角点后,还会进一步剔除掉一些距离较近的角点。
- minDistance,角点间的最小距离,若两角点距离 < minDistance ,则认为是一个角点。
- mask,可选参数,表示感兴趣区域,有默认值 noArray() ,若此值非空,需为 CV_8UC1 类型,且和 image 有相同尺寸,便于指定角点检测区域。
- blockSize,有默认值 3,是计算角点的窗口大小。
- useHarrisDetector,默认为 false,表示是否使用 Harris 角点检测。
- k,有默认值 0.04,Harris 角点检测计算公式中用到的权重系数。