《opencv学习笔记》-- Shi-Tomasi 角点检测

Shi-Tomasi算法是Harris算法的改进。

原理:

        由于Harris算法的稳定性和k值有关,Shi-Tomasi发现,角点的稳定性和矩阵M的较小特征值有关,改进的Harris算法即直接计算出矩阵M的特征值,用较小的特征值与阈值比较,大于最小阈值的即为强特征点(强角点)。

确定图像强角点:goodFeaturesToTrack() 函数     结合Shi-Tomasi算子

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 )

参数1,InputArray类型的image,输入图像,为8位或浮点型32位单通道图像。

参数2,OutputArray类型的corners,检测到的角点的输出向量。

参数3,int类型的maxCorners,角点的最大数量。

参数4,double类型的qualityLevel,角点检测可接受的最小特征值。实际用于过滤角点的最

            小特征值是qualityLevel 与图像中最大特征值的乘积。所以qualityLevel通常不会超过

            1(常用的值为0.10或者0.01)。而检测完所有的角点后,还要进一步剔除掉一些距离

            较近的角点。

参数5,double类型的 minDistance,角点之间的最小距离,用于保证返回的角点之间的距离

             不小于minDistance个像素。

参数6,InputArray类型的mask,可选参数,表示感兴趣区域,有默认值noArray()。

            若此参数非空(需为CV_8UC1类型,且和第一个参数image有相同的尺寸),便用于指定

             角点检测区域。

参数7,int类型的blockSize,有默认值3,是计算导数自相关矩阵时指定的邻域范围。

参数8,bool类型的useHarrisDetector,默认值 false,指是否使用Harris角点检测。

参数9,double类型的k,默认值0.04,为用于设置Hessian自相关矩阵行列式的相对权重的

             权重系数。

你可能感兴趣的:(opencv,opencv)