zoukankan      html  css  js  c++  java
  • 描述与匹配关键点

    局部模板匹配

    通过特征点匹配,可以将一幅图像的点集和另一幅图像(或一批图像)的点集关联起来。如果两个点集对应着现实世界中的同一个场景元素,它们就应该是匹配的。
    仅凭单个像素就判断两个关键点的相似度显然是不够的,因此要在匹配过程中考虑每个关键点周围的图像块。如果两幅图像块对应着同一个场景元素,那么它们的像素值应该会比较相似。
    最常见的图像块是边长为奇数的正方形,关键点的位置就是正方形的中心。可通过比较块内像素的强度值来衡量两个正方形图像块的相似度。常见的方案是采用简单的差的平方和(Sum of Squared Differences,SSD)算法。
    使用函数:

        void cv::matchTemplate(
            cv::InputArray image, // 用于搜索的输入图像, 8U 或 32F, 大小 W-H
            cv::InputArray templ, // 用于匹配的模板,和image类型相同, 大小 w-h
            cv::OutputArray result, // 匹配结果图像, 类型 32F, 大小 (W-w+1)-(H-h+1)
            int method // 用于比较的方法
        );

    下面重点介绍一下第四个参数,opencv中支持的比较方法有六种,分别如下:

    1、cv::TM_SQDIFF:该方法使用平方差进行匹配,因此最佳的匹配结果在结果为0处,值越大匹配结果越差。

     

    2、cv::TM_SQDIFF_NORMED:该方法使用归一化的平方差进行匹配,最佳匹配也在结果为0处。

     

    3、cv::TM_CCORR:相关性匹配方法,该方法使用源图像与模板图像的卷积结果进行匹配,因此,最佳匹配位置在值最大处,值越小匹配结果越差。

     

    4、cv::TM_CCORR_NORMED:归一化的相关性匹配方法,与相关性匹配方法类似,最佳匹配位置也是在值最大处。

     

    5、cv::TM_CCOEFF:相关性系数匹配方法,该方法使用源图像与其均值的差、模板与其均值的差二者之间的相关性进行匹配,最佳匹配结果在值等于1处,最差匹配结果在值等于-1处,值等于0直接表示二者不相关。

     

    6、cv::TM_CCOEFF_NORMED:归一化的相关性系数匹配方法,正值表示匹配的结果较好,负值则表示匹配的效果较差,也是值越大,匹配效果也好。

    画图所用函数

    // Draws matches of keypints from two images on output image.
    void drawMatches( const Mat& img1, const vector<KeyPoint>& keypoints1,
                      const Mat& img2, const vector<KeyPoint>& keypoints2,
                      const vector<vector<DMatch> >& matches1to2, Mat& outImg,
                      const Scalar& matchColor=Scalar::all(-1), const Scalar& singlePointColor=Scalar::all(-1),
                      const vector<vector<char> >& matchesMask=vector<vector<char> >(), int flags=DrawMatchesFlags::DEFAULT );

    img1 – 源图像1
    keypoints1 – 源图像1的特征点.
    img2 – 源图像2.
    keypoints2 – 源图像2的特征点
    matches1to2 – 源图像1的特征点匹配源图像2的特征点[matches[i]] .
    outImg – 输出图像具体由flags决定.
    matchColor – 匹配的颜色(特征点和连线),若matchColor==Scalar::all(-1),颜色随机.
    singlePointColor – 单个点的颜色,即未配对的特征点,若matchColor==Scalar::all(-1),颜色随机.
    matchesMask – Mask决定哪些点将被画出,若为空,则画出所有匹配点.
    flags – Fdefined by DrawMatchesFlags.

  • 相关阅读:
    【数学】BSGS算法
    区块链【2】我们为什么要给比特币记账?
    区块链【1】必须要说的比特币
    项目管理【08】 | 项目整体管理-实施整体变更控制
    项目管理【07】 | 项目整体管理-监控项目工作
    项目管理【06】 | 项目整体管理-指导和管理项目执行
    项目管理【05】 | 项目整体管理-制定项目管理计划
    项目管理【04】 | 项目整体管理-制定项目章程
    项目管理【03】 | 项目管理基础-项目管理5大过程组与10大知识领域
    项目管理【02】 | 项目管理基础-信息系统项目的生命周期模型
  • 原文地址:https://www.cnblogs.com/KAVEI/p/14747848.html
Copyright © 2011-2022 走看看