目标 在本章中,我们将学习另一种角点检测器:Shi-Tomasi角点检测器,并且探索函数cv.goodFeaturesToTrack()的使用方法。
理论 在上一章中,我们学习了Harris角点检测器。后来,在1994年,石屹和托马斯对其进行了一些小的修改,提出了《Good Features to Track》这篇论文,相比于Harris角点检测器,这种方法表现更佳。Harris角点检测器中的评分函数如下:
R = λ1λ2 - k(λ1 + λ2)²
与此相反,Shi-Tomasi 提出了:
R = min(λ1, λ2)
如果 R 大于某个阈值,则将其视为角点。如果我们像在 Harris 角点检测器中那样在 λ1-λ2 空间中绘制它,我们将得到如下图像:
从图中可以看出,只有当λ1和λ2都高于最小值λmin时,才会被视为角点(绿色区域)。
代码
OpenCV提供了一个函数:cv.goodFeaturesToTrack()。它通过Shi-Tomasi方法(或者指定的Harris角点检测)在图像中找到N个最强的角点。和往常一样,图像应该是灰度图像。然后您需要指定要查找的角点数。接着,您需要指定质量水平,这是一个介于0-1之间的值,表示低于该角点