主要内容

matchFeaturesInRadius

在指定的半径内找到匹配的特征

描述

例子

indexPairs= matchFeaturesInRadius (features1features2points2中心半径返回在指定半径内或围绕每个预期匹配位置的半径内输入特征集之间最有可能对应的特征的索引。

indexPairsmatchMetric= matchFeaturesInRadius(___还返回匹配对中特征之间的距离indexPairs

indexPairsmatchMetric= matchFeaturesInRadius(___名称,值除以前语法中的输入参数外,还使用一个或多个名称-值参数指定选项。

例子

全部折叠

将包含图像和相机数据的MAT文件加载到工作区中。

数据=负载(“matchInRadiusData.mat”);

转换相机姿势到外部。

orientation = data.cameraPose2.Rotation;location = data.cameraPose2.Translation;[rotationMatrix,translationVector] = cameraPoseToExtrinsics(方向,位置);

将与特征集1相关的3-D世界点投影到第二张图像上。

centerPoints = worldToImage(data.intrinsic,rotationMatrix,translationVector,data.worldPoints);

在空间约束下,匹配两个特征集之间的特征。

indexpair1 = matchFeaturesInRadius(data. featres1,data. featres2,...data.radius data.points2,中心,“MatchThreshold”,40,...“MaxRatio”, 0.9);

在不使用空间约束的情况下,在两个特征集之间匹配特征。

indexPairs2 = matchFeatures(data. featres1,data. featres2,...“MatchThreshold”,40,“MaxRatio”, 0.9);

可视化并比较两种匹配特征的方法的结果。

showMatchedFeatures(data.I1,data.I2,data.points1(...indexPairs1 (: 1)), data.points2 (indexPairs1 (:, 2)));标题(sprintf ('%d对匹配空间约束'大小(indexPairs1 1)));次要情节(2,1,2)showMatchedFeatures (data.I1、data.I2 data.points1 (...indexPairs2 (: 1)), data.points2 (indexPairs2 (:, 2)));标题(sprintf ('%d对匹配没有空间限制'大小(indexPairs2 1)));

图中包含2个轴对象。轴对象1的标题为144对,匹配空间约束,包含4个图像、直线类型的对象。坐标轴对象2,标题130对匹配,没有空间限制,包含4个图像,线类型的对象。

输入参数

全部折叠

特征集1,指定为abinaryFeatures对象或1 -N矩阵。矩阵包含1特性,以及N对应于每个特征向量的长度。

您可以获取binaryFeatures对象使用extractFeatures函数采用快速视网膜关键点(FREAK)、定向快速旋转简要(ORB)或二进制鲁棒不变可伸缩关键点(BRISK)描述符方法。

数据类型:逻辑|int8|uint8|int16|uint16|int32|uint32|||binaryFeature对象

特征集2,指定为abinaryFeatures对象或2 -N矩阵。矩阵包含2特性,以及N对应于每个特征向量的长度。

您可以获取binaryFeatures对象使用extractFeatures函数采用快速视网膜关键点(FREAK)、定向快速旋转简要(ORB)或二进制鲁棒不变可伸缩关键点(BRISK)描述符方法。

数据类型:逻辑|int8|uint8|int16|uint16|int32|uint32|||binaryFeature对象

特征集2的特征点,指定为2 × 2矩阵,格式为[xy]或2元特征点数组。有关点特征类型的列表,请参见点特征类型

数据类型:||点特征类型

第二张图像中与特征点对应的期望匹配位置features1,指定为1 × 2坐标矩阵,格式为[xy]

数据类型:|

与中心点相关联的搜索半径,指定为标量或1-element向量。当您指定半径作为标量值,该函数对所有中心点使用相同的搜索半径。

数据类型:|

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:“指标”固态硬盘的指定特征匹配的差的平方和度量。

匹配阈值,指定为范围(0,100)中的标量值。默认值为10.0对于二进制特征向量或1.0对于非二元特征向量。您可以使用匹配阈值来选择最强的匹配。阈值表示距离完美匹配距离的百分比。

当两个特征向量之间的距离小于由'设置的阈值时,它们就匹配了。MatchThreshold”。当特征之间的距离大于'值时,函数拒绝匹配。MatchThreshold”。增加该值以返回更多匹配项。

输入是binaryFeatures对象通常需要较大的匹配阈值。的extractFeatures函数返回binaryFeatures对象在提取FREAK、ORB或BRISK描述符时。

比率阈值,指定为范围(0,1]中的标量值。使用比率来拒绝不明确的匹配。增加此值以返回更多匹配项。

特征匹配度量,指定为任意一个“伤心”固态硬盘的

“伤心” 绝对差的和
固态硬盘的 差的平方和

此属性适用于指定输入特征集时,features1而且features2,作为矩阵。当您将特性指定为binaryFeatures对象,该函数使用汉明距离来计算相似度度量。

唯一匹配,指定为逻辑0)或1真正的).将此值设置为真正的仅返回between之间的唯一匹配项features1而且features2

当你设置独特的,函数返回between的所有匹配项features1而且features2.中的多个特性features1能匹配到一个功能吗features2

当你设置独特的真正的时,函数执行前后匹配来选择唯一的匹配。匹配后features1features2,它匹配features2features1并保持最好的匹配。

输出参数

全部折叠

两个输入特征集之间对应特征的索引,作为a返回P2矩阵。P是特征匹配对的数量。每个索引对对应于索引之间的匹配特征features1而且features2输入。第一个元素索引了其中的特征features1.第二个元素索引中匹配的特征features2

匹配特征之间的距离,返回为P1的向量。的第Th元素matchMetric对应于第Th行indexPairs输出矩阵。距离的值基于所选择的度量,但总是完全匹配的0.当度规设置为悲伤的固态硬盘,计算前将特征向量归一化为单位向量。函数返回matchMetric作为一个数据类型:features1而且features2类型.否则,返回的向量为类型

度规 范围
悲伤的 02√6大小features12)))。
固态硬盘 0, 4
汉明 0, features1。NumBits

请注意

你不能选择汉明度规。属性时自动选择度量features1而且features2输入binaryFeatures

数据类型:|

提示

  • 当3-D世界指向特征集1时使用此函数features1,都是已知的。中心可以通过将一个三维世界点投影到第二张图像上来获得。通过对两张立体图像中匹配的图像点进行三角剖分,可以得到三维世界点。

  • 您可以在特征集2中指定点的圆形区域来匹配特征集1。将原点指定为中心半径为半径.指定从特征集2中匹配的点为points2

    匹配图像1和图像2中的投影点

参考文献

frundorfer, Friedrich和Davide Scaramuzza。视觉里程计:第二部分:匹配,稳健性,优化和应用IEEE机器人与自动化杂志19日,没有。2(2012年6月):78-90。https://doi.org/10.1109/MRA.2012.2182810。

[2] Lowe, David G.“来自比例不变关键点的独特图像特征。”国际计算机视觉杂志60,不。2(十一月2004):91-110。https://doi.org/10.1023/B: VISI.0000029664.99615.94。

Muja, Marius和David G. Lowe。快速近似近邻与自动算法配置:在第四届计算机视觉理论与应用国际会议论文集, 331 - 40。葡萄牙里斯本:科学出版社-科学与技术出版物,2009。https://doi.org/10.5220/0001787803310340。

Muja, Marius和David G. Lowe。“二进制特征的快速匹配”在2012第九届计算机与机器人视觉会议, 404 - 10。纽约:电气和电子工程师协会,2012。https://doi.org/10.1109/CRV.2012.60。

扩展功能

版本历史

R2021a中引入