goodFeaturesToTrack

发布时间 2023-04-06 20:27:07作者: kuaqi

一、goodFeaturesToTrack

1、过程:

1)函数查找图像中或指定图像区域中最突出的角点

(1)函数使用cornerMinEigenVal或cornerHarris计算每个源图像像素的角点质量度量。

(2)函数执行非最大值抑制(保留3 x 3邻域中的局部最大值)。

(3)最小特征值小于qualityLevel*maxx,y qualityMeasureMap(x,y)的角点被拒绝。

(4)其余的角点按质量按降序进行排序。

(5)函数丢弃在小于maxDistance的距离处有更强拐角的每个拐角。

2、参数:参考链接

1)image:8位、32位浮点数的单通道图像

2)corners:检测结果的角点矢量。

(1)类型为vector或数组,由实际给定的参数类型而定。如果是vector,那么它应该是一个包含cv::Point2f的vector对象;如果类型是cv::Mat,那么它的每一行对应一个角点,点的x、y位置分别是两列。

3)maxCorners:检测角点个数。

(1)如果maxCorners<=0,将返回所有被检测的角点

4)qualityLevel:检测到的角点的最小可接受质量水平(通常是0.10到0.01之间的数值,不能大于1.0)

(1)参数值乘以最佳拐角质量度量,即最小特征值(见cornerMinEigenVal)或Harris函数响应(见corner Harris)。

(2)质量指标低于产品的边角将被拒收。例如,如果最佳拐角的质量度量为1500,qualityLevel为0.01,则质量度量小于15的所有拐角都将被拒绝。

5)minDistance:返回的角点之间可能的最小欧几里得距离。

(1)小于这个距离得点将进行合并

6)mask:感兴趣的可选区域,指定检测角的区域。

(1)如果图像不是空的(它需要具有CV_8UC1类型、与图像相同的大小)

(2)mask值为0的部分不进行角点检测

7)blockSize:用于计算每个像素邻域上的导数协变矩阵的平均块的大小。

(1)表示在计算角点时参与运算的区域大小

(2)一般为3,但是如果图像分辨率较高,则可以考虑使用较大一点的值

(3)请参见cornerEigenValsAndVecs

8)useHarrisDetector:指示是使用Harris检测器(见cornerHarris)还是cornerMinEigenVal

9)k:在使用Harris检测器时使用,最好使用默认值0.04。