opencv feature2D模块(一)

feature2D 模块包含了很多图像特征提取,匹配的相关算法,是图像模式识别重要的辅助库。
本部分包含如下内容:
特征检测和描述
特征检测器(Feature Detectors)通用接口
描述符提取器(Descriptor Extrators)通用接口
描述符匹配器(Descriptor Matchers)通用接口
通用描述符(Generic Descriptor)匹配器通用接口
关键点绘制函数和匹配功能绘制函数

我在讲述这些opencv带有的函数时,也会附带这些算法的详细内容,掌握算法的实际意义。

  • chapter 10:角点检测
    角点检测是计算机视觉系统中用来获得图像特征的一种方法,广泛应用与运动检测,图像匹配,视频跟踪,三维建模和目标识别等领域中。角点通常被定义为两条边的交点,角点的局部邻域应该具有两个不同区域的不同方向的边界。这些特征点在图像中有具体的坐标,并具有某些数学特征,如局部最大或最小灰度,某些梯度特征等。
    角点可以包含很多的特性,根据选取的特性不同,不同的实现提取出的角点会产生差异,关于角点的具体描述可以有如下几种:
    一阶导数(即灰度的梯度)的局部最大所对应的像素点
    两条及两条以上边缘的交点
    图像中梯度值和梯度方向的变化速率都很高的点
    角点处的一阶导数最大,二阶导数为0,它指示了物体边缘变化不连续的方向。

Harris角点的介绍见下面链接:
harris角点详解


    Mat sourceImage = imread("1.jpg");
    //resize(sourceImage,sourceImage,Size(800,600));
    Mat grayImage;
    cvtColor(sourceImage,grayImage,CV_BGR2GRAY);
    Mat dstImage = Mat::zeros(sourceImage.size(),CV_32FC1);



    cornerHarris(grayImage,dstImage,2,3,0.04,BORDER_DEFAULT);
    //归一化与转换
    Mat normImage;
    normalize(dstImage,normImage,0,255,NORM_MINMAX,CV_32FC1,Mat());
    Mat scaledImage;
    convertScaleAbs(normImage,scaledImage);

    for (int j=0;jfor (int i=0;iif (normImage.at<float>(j,i)>110) //阈值
            {
                circle(sourceImage,Point(i,j),5,Scalar(10,10,255),2,8,0);
            }
        }
    }

另一方面,我们不再用非极大值抑制了,而选取容忍距离:容忍距离内只有一个特征点。
该算法首先选取一个具有最大最小特征值的点(即:max(min(e1,e2)),e1,e2是harris矩阵的特征值)作为角点,然后依次按照最大最小特征值顺序寻找余下的角点,当然和前一角点距离在容忍距离内的新角点忽略。


    std::vector corners;  
    cv::goodFeaturesToTrack(grayImage,corners,  
        200,  
        //角点最大数目  
        0.01,  
        // 质量等级,这里是0.01*max(min(e1,e2)),e1,e2是harris矩阵的特征值  
        10);  
    // 两个角点之间的距离容忍度  
    harris().drawOnImage(sourceImage,corners);//标记角点


    imshow("harris角点",sourceImage);

opencv feature2D模块(一)_第1张图片

  • Shi-Tomasi角点
    Shi-Tomasi角点是Harris算法的改进,此算法最原始的定义式将矩阵M的行列式值与M的迹相减,再将差值同预先给定的阈值进行比较。后来他们俩提出了改进方法,若两个特征值中较小的一个大于最小阈值,则会得到一个强角点。还有一个特点就是在一个范围候选项内选取一个作为检测出的角点。
    函数原型如下:
    opencv feature2D模块(一)_第2张图片
    opencv feature2D模块(一)_第3张图片
    opencv feature2D模块(一)_第4张图片

你可能感兴趣的:(计算机视觉与机器学习)