您的位置:首页 > 编程语言 > MATLAB

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参数

NameValue
'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及其含义

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);


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: