Matlab-vision包学习-Feature Detection,Extraction and Matching-匹配
2015-10-05 10:15
381 查看
这一篇介绍特征匹配的函数。
函数/Functions
函数名称:matchFeatures
功能:两个特征描述子进行匹配
语法: indexPairs = matchFeatures(features1,features2);
[indexPairs,matchmetric] = matchFeatures(features1,feature2);
[indexPairs,matchmetric] = matchFeatures(features1,feature2,Name,Value);
其中,features1,features2可以是2-值型的特征描述子对象(binaryFeatures object)或者矩阵;indexPairs为Px2的向量,即匹配上的指标对;matchmetric为匹配上的特征描述子之间的测度值;Name为用一对单引号包含的字符串,Value为对应Name的值。
Name&Value参数
Method及其含义
举例:
函数/Functions
函数名称:matchFeatures
功能:两个特征描述子进行匹配
语法: indexPairs = matchFeatures(features1,features2);
[indexPairs,matchmetric] = matchFeatures(features1,feature2);
[indexPairs,matchmetric] = matchFeatures(features1,feature2,Name,Value);
其中,features1,features2可以是2-值型的特征描述子对象(binaryFeatures object)或者矩阵;indexPairs为Px2的向量,即匹配上的指标对;matchmetric为匹配上的特征描述子之间的测度值;Name为用一对单引号包含的字符串,Value为对应Name的值。
Name | Value |
'Method' | 默认值为'NearestNeighborRatio',表示进行匹配时所用方法,详细见“Method及其含义"表 |
‘MatchThreshold' | 对于2-值型特征向量,默认值为10.0,对于非2-值型特征向量,默认值为1.0,范围(0,100),为百分比值,表示选择最强的匹配的百分比,取较大值时,返回更多的匹配对 |
’Metric' | 仅对输入非2-值型特征向量有用,表示特征匹配的测度,默认值为SSD(差的平方和),还可以取值为SAD(绝对差之和)和normcorr(归一化交叉相关) 注:对于2-值型特征向量,使用Hamming距离作为测度 |
‘Prenormalized' | 仅对输入非2-值型特征向量有用,默认值为false,若置为true,表示在进行特征匹配前特征都进行归一化(如果输入的没有进行归一化,匹配结果可能出错),若置为false,函数进行归一化后再进行匹配。 |
’MaxRatio' | 默认值为0.6,范围为(0,1],配合‘Method’取‘NearestNeighborRatio'使用,消除匹配模糊 |
Method | 含义 |
---|---|
‘Threshold' | 仅使用匹配阈值,可能导致一个特征有多个匹配特征 |
’NearestNeighborSymmetric' | 结合匹配阈值,产生一一对应的匹配结果 |
‘NearestNeighborRatio' | 结合匹配阈值消除匹配模糊(匹配模糊定义为:如果第一个匹配的特征不能明显优于第二个匹配特征时),那么如下定义额比值测试(the ratio test)用于决策: 1. 计算features1和feaures2中任意两个特征之间的最近距离: D 2. 计算feature1中相同特征到feature2特征空间之间的第二近距离: d 3.如果两个距离的比值D/d大于MaxRaio时,可以消除匹配模糊。 注:这个方法可以产生更加鲁棒性的匹配,同时,如果图像中存在重复模式(repeating patterns),该方法为了消除匹配模糊,可能会消除合理的匹配特征 |
close all; clear all; clc; I1 = rgb2gray(imread('viprectification_deskLeft.png')); I2 = rgb2gray(imread('viprectification_deskRight.png')); points1 = detectHarrisFeatures(I1); points2 = detectHarrisFeatures(I2); [features1,valid_points1] = extractFeatures(I1,points1); [features2,valid_points2] = extractFeatures(I2,points2); indexPairs = matchFeatures(features1,features2); matchedPoints1 = valid_points1(indexPairs(:,1)); matchedPoints2 = valid_points2(indexPairs(:,2)); figure; showMatchedFeatures(I1,I2,matchedPoints1,matchedPoints2);
相关文章推荐
- matlab中plot画图参数的设置
- Matlab-vision包学习-Feature Detection,Extraction and Matching-提取HOG描述子
- 《数字图像处理原理与实践(MATLAB文本)》书代码Part7
- Matlab-vision包学习-Feature Detection,Extraction and Matching-提取描述子
- 谱聚类(NJW算法 Matlab代码)
- Matlab-vision包学习-Feature Detection,Extraction and Matching-SURF检测blob
- matlab 利用while循环计算平均值和方差(第二版)
- Matlab-vision包学习-Feature Detection,Extraction and Matching-MSER特征提取
- matlab 利用while循环计算平均值和方差
- Matlab-vision包学习-Feature Detection,Extraction and Matching-最小特征值角点检测
- Matlab-vision包学习-Feature Detection,Extraction and Matching-Harris角点检测
- Matlab-vision包学习-Feature Detection,Extraction and Matching-FAST角点检测
- Matlab-vision包学习-Feature Detection,Extraction and Matching-BRISK角点检测
- C程序调用matlab (Win8 64 bit + VS 2013 + Matlab R2014a)
- matlab中hold指令、figure指令及subplot指令的使用
- matlab中hold指令、figure指令及subplot指令的使用
- matlab中axis的使用
- Deep Learning(二)Deep Belief Nets(DBNs) 结合MATLAB代码 分析
- Todd's Matlab讲义第2讲:Matlab 编程
- matlab+opencv