本地特征检测和提取

作为本地社区的紧凑载体表示的本地特征及其描述符是许多计算机视觉算法的构建块。他们的应用包括图像配准,对象检测和分类,跟踪和运动估计。使用本地功能使这些算法能够更好地处理尺度变化,旋转和遮挡。计算机Vision Toolbox™提供用于检测转角特征的快速,哈里斯,ORB和SHI和Tomasi方法,以及用于检测BLOB功能的浪潮,Kaze和MSER方法。该工具箱包括冲浪,Kaze,Freak,Brikis,ORB和HOG描述符。您可以根据应用的要求混合和匹配探测器和描述符。

什么是本地特征?

本地特征是指在图像中发现的模式或不同结构,例如点,边缘或小图像补丁。它们通常与图像贴片相关联,这些图像补丁通过纹理,颜色或强度与其直接周围环境不同。特征实际代表的是无关紧要的,只是它与周围环境不同。局部特征的示例是Blob,Corners和边缘像素。

示例1.转角检测示例
我= imread('circuit.tif');角落=侦探Fastfeatures(我,'mincontrast',0.1);j = InsertMarker(I,Corners,'圆圈');imshow(j)

局部特征的好处和应用

本地功能允许您找到图像对应关系,无论遮挡,观看条件的变化还是杂乱的存在。此外,本地特征的属性使它们适用于图像分类,例如用袋子的图像分类

本地功能以两种基本方式使用:

  • 本地化锚点以用于图像拼接或3-D重建。

  • 要在不需要图像分割的情况下轻轻地表示图像内容以进行检测或分类。

是什么让一个良好的当地功能?

依赖基于梯度和强度变化方法的探测器检测良好的本地特征。这些功能包括边缘,斑点和区域。良好的本地功能展示以下属性:

  • 可重复的检测
    当给定相同场景的两个图像时,探测器在两个图像中发现的大多数功能都是相同的。该特征是对观看条件和噪声的变化的强大。

  • 独特
    特征中心周围的附近足以允许特征之间可靠的比较。

  • 可本地化
    该功能具有分配给它的唯一位置。观看条件的变化不会影响其位置。

功能检测和特征提取

特征检测选择具有唯一内容的图像的区域,例如Corners或Blobs。使用特征检测来查找您可以用于进一步处理的景点。这些点不一定对应于物理结构,例如表的角落。特征检测的关键是找到仍然存在的功能,以便即使在存在旋转或缩放变化的情况下也可以检测它们。

特征提取涉及计算描述符,该描述符通常在围绕检测到的特征为中心的区域上完成。描述符依赖于图像处理来将本地像素邻域变为紧凑的向量表示。这种新的表示允许在邻域之间的比较,无论尺度或方向的变化如何。描述符,例如筛选或冲浪,依赖于局部梯度计算。二进制描述符,例如快速,orb或reak,依赖于局部强度差异,然后将其编码为二进制向量。

选择特征检测器和描述符

通过考虑应用程序的标准和数据的性质,选择最佳特征检测器和描述符。第一件表可帮助您了解推动您选择的一般标准。接下来的两个表提供计算机Vision Toolbox中可用的探测器和描述符的详细信息。

选择检测器和描述符的注意事项

标准 建议

图像中的功能类型

使用适合您的数据的探测器。例如,如果您的图像包含细菌单元的图像,则使用BLOB检测器而不是角探测器。如果您的图像是城市的鸟瞰图,您可以使用角探测器找到人造的结构。

您正在使用该功能的上下文:

  • 匹配关键点

  • 分类

猪,冲浪和Kaze描述符适用于分类任务。相反,二进制描述符,例如ORB,Snamkis和Freak,通常用于查找用于注册的图像之间的点对应关系。

您的图像中存在的失真类型

选择一个探测器和描述符,用于解决数据中的失真。例如,如果存在缩放变化,请考虑不处理比例的角探测器。如果您的数据包含更高级别的失真,例如刻度和旋转,则使用Surf,ORB或Kaze特征检测器和描述符。冲浪和Kaze方法是计算密集的。

性能要求:

  • 需要实时绩效

  • 准确性与速度相比

二进制描述符通常比基于梯度的描述符更快但更准确。为了更高的准确性,同时使用多个探测器和描述符。

根据要素类型选择检测功能

探测器 功能类型 功能 规模独立
快速地[1] 角落 检测到空间
最小特征值算法[4] 角落 侦探训练
角探测器[3] 角落 探测器法
冲浪[11] 斑点 探测拍摄 是的
Kaze.[12] 斑点 检察官化 是的
轻快[6] 角落 检察机构 是的
MSER.[8] 强度均匀的区域 检测器饲料 是的
or[13] 角落 DetectorBfeatures.

笔记

检测函数返回包含有关该功能的信息的对象。这骨折比重提取物质函数使用这些对象创建描述符。

选择描述符方法

描述符 二进制 功能和方法 不变性 典型用途
规模 回转 发现点对应关系 分类
h 骨折比重一世,......) 是的
LBP. 提取物摘录一世,......) 是的 是的
冲浪 提取物质一世,'方法','冲浪') 是的 是的 是的 是的
Kaze. 提取物质一世,'方法','Kaze.') 是的 是的 是的 是的
怪物 是的 提取物质一世,'方法','怪物') 是的 是的 是的
轻快 是的 提取物质一世,'方法','轻快') 是的 是的 是的
or 是的 提取物质一世,'方法','or') 是的 是的
  • 堵塞

  • keypoint周围的简单像素邻域

提取物质一世,'方法','堵塞') 是的 是的

笔记

  • 提取物质功能提供不同的提取方法,以最佳匹配应用程序的要求。当您没有指定'方法'输入提取物质函数,该函数根据输入点类的类型自动选择该方法。

  • 二进制描述符在本地化方面快速但不太精确。它们不适合分类任务。这提取物质函数返回A.二进制文件目的。此对象使得汉明远程基于匹配度量matchfeatures.功能。

使用本地特征

注册两个图像是理解本地功能的简单方法。此示例在两个图像之间找到几何变换。它使用本地功能来查找良好的锚点。

显示两个图像

第一图像是原始图像。

原始= imread('cameraman.tif');数字;imshow(原件);

第二图像是原始图像旋转和缩放。

Scale = 1.3;j = imresize(原始,规模);Theta = 31;扭曲= imrotate(j,θ);图imshow(扭曲)

检测原始图像和扭曲图像之间的匹配功能

检测匹配的冲浪功能是确定纠正扭曲图像所需的变换的第一步。

ptsoriginal =探测器(原版);ptsdistorted =检测到(扭曲);

提取功能并比较两个图像之间的检测到的斑点

检测步骤在两个图像中发现了几个大致相应的BLOB结构。比较检测到的BLOB功能。通过特征提取促进了此过程,该功能提取,其确定本地补丁描述符。

[特点invinal,validptsoriginal] =......提取物(原始,冒号);[具有截图,validptsdistorted] =......提取物(扭曲,ptorted,ptordistored);

并非所有原始点都用于提取描述符。如果它们太靠近图像边框,点可能已被拒绝。因此,除了要素描述符之外还返回有效点。

用于计算描述符的补丁大小在特征提取步骤期间确定。补丁大小对应于检测到该特征的比例。无论修补程序大小如何,两个特征向量,特点逻辑特点是,以这样的方式计算它们是相同的长度。描述符使您能够比较检测到的功能,无论其大小和旋转如何。

找到候选人比赛

通过输入描述符来获取要素之间的候选匹配matchfeatures.功能。候选匹配意味着结果可以包含一些无效匹配。两个匹配的修补程序可以指示功能,但可能不是正确的匹配。桌角可以看起来像椅子角,但这两个功能显然不是一个匹配。

IndexPairs = MatchFeatures(特点,具有特色);

查找来自两个图像的点位置

返回的每一行indexPair.包含图像之间的两个候选功能匹配项。使用索引从两个图像中收集实际点位置。

matchedoriginal = validptsoriginal(indexpairs(:,1));matcheddistored = validptsdistorted(indexPairs(:,2));

显示候选匹配

Figure ShowMatchedFeatures(原始,扭曲,Matchedoriginal,MatchedDistorted)标题('候选人匹配积分(包括异常值)'

分析功能位置

如果有足够数量的有效匹配,请删除假匹配。这种情况的有效技术是RANSAC算法。这estimateGeometricTransform2d.功能实现M估算器样本共识(MSAC),这是RANSAC算法的变体。MSAC查找几何变换,将inliers(正确匹配)与异常值(虚假匹配)分开。

[tform,inlieridx] = estimateGeometricTransform2D(......matcheddistorted,matchedoriginal,'相似');Inlierdistorted = matchedDistorted(Inlieridx,:);Inlieriginal = MatchedOriginal(Inlieridx,:);

显示匹配点

图ShowMatchedFeatures(原始,扭曲,inlieriginal,Inlierdistorted)标题('匹配点(仅限最基于)') 传奇('ptsoriginal''ptsdistorted'

验证计算的几何变换

将计算的几何变换应用于扭曲的图像。

OutputView = IMREF2D(大小(原始));恢复= imwarp(扭曲,tform,'OutputView',OutputView);

显示恢复的图像和原始图像。

图imshowpair(原始,恢复,'剪辑'

使用多个功能的图像注册

此示例在“使用本地功能”示例的结果上构建。使用多个检测器和描述符对使您可以组合并加强您的结果。多对对于使用单个特征检测器无法获得足够的好匹配(最基)时,也很有用。

加载原始图像。

原始= imread('cameraman.tif');数字;imshow(原件);文字(尺寸(原件,2),尺寸(原版,1)+15,......“图片由马萨诸塞州理工学院提供”......'字体大小'7,'水平对齐''对');

缩放并旋转原始图像以创建扭曲的图像。

Scale = 1.3;j = imresize(原始,规模);Theta = 31;扭曲= imrotate(j,θ);图imshow(扭曲)

检测两个图像中的功能。首先使用快速探测器,然后是冲浪探测器。

ptsoriginalbrisk = Detectbriskfeatures(原版,'mincontrast',0.01);ptsdistortedbrisk = detectbriskfeatures(扭曲,'mincontrast',0.01);ptsoriginalsurf =检测(原始);ptsdistortedsurf =检测训练(扭曲);

从原始图像和扭曲图像中提取描述符。默认情况下,FRISK功能使用句柄描述符。

[特征素弗雷克,verigptsoriginalbrisk] =......萃取物(原版,ptsoriginalbrisk);[特征DistortedFreak,ValidptsDistortedBrisk] =......提取物(扭曲,ptosdistortedbrisk);[特征aginalsurf,validptsoriginalsurf] =......提取物质(原版,PtsoriginalsURF);[特征DistortedSurf,Validptsdistortedsurf] =......提取物(扭曲,ptorted,ptosdistortedsurf);

通过匹配Freak描述符首先确定候选匹配项,然后通过冲浪描述符进行确定。要获得尽可能多的特征匹配,请从检测器和低于默认值的匹配阈值开始。获得工作解决方案后,您可以逐步增加阈值以减少提取和匹配功能所需的计算负载。

IndexPaessBrisk = MatchFeatures(特征inatoriginalfreak,......特点设计,'matchthreshold',40,'maxratio',0.8);IndexPairsSurf = MatchFeatures(特征initeRiginalsURF,TeatsingDistortedSurf);

获取候选人匹配要点的轻快和冲浪。

matchedoriginalbrisk = verigptsoriginalbrisk(indexPaessBrisk(:,1));matcheddistredbrisk = validptsdistoredbrisk(indexPaessBrisk(:,2));matchedoriginalsurf = Validptsoriginalsurf(IndexPairsSurf(:,1));matcheddistortedsurf = ValidptsDistortedSurf(IndexPairsSurf(:,2));

可视化轻快的推定匹配。

图ShowMatchedFeatures(原版,扭曲,匹配的竞争血技骨牌,......matcheddistredbrisk)标题(“推定的匹配使用verks&freak”) 传奇('ptsoriginalbrisk''ptsdistortedbrisk'

将候选人匹配的轻快和冲浪本地功能组合。使用地点属性将点位置与冲浪和冲浪功能组合起来。

matchedoriginalxy =......[matchedoriginalsurf.location;matchedooginalbrisk.location];matcheddistortedxy =......[matcheddistortedsurf.location;matcheddistoredbrisk.location];

确定Inlier点和快速和冲浪功能的几何变换。

[Tformtotal,InLieridx] =......eStisimeGeometricTransform2D(MatchedDistortedXy,......matchedoriginalxy,'相似');InlierdistortedXy = MatchedDistortedXy(Inlieridx,:);Inlieriginalxy = matchedoriginalxy(Inlieridx,:);

显示结果。结果提供了多种比使用单个特征检测器的示例的几匹配。

Figure ShowMatchedFeatures(原始,扭曲,Inlieriginalxy,Inlierdistortedxy)标题('使用冲浪和快感的匹配点(仅限最端)') 传奇('ptsoriginal''ptsdistorted'

比较原始和恢复的图像。

OutputView = IMREF2D(大小(原始));恢复= imwarp(扭曲,Tformtotal,'OutputView',OutputView);数字;imshowpair(原始,恢复,'剪辑'

参考

[1]罗斯滕,E.和T. Drummond。“高速角检测的机器学习。”第9欧洲电脑愿景会议。卷。1,2006,pp。430-443。

[2] Mikolajczyk,K.和C.施密。“绩效评估本地描述符。”图案分析与机器智能的IEEE交易。卷。27,第10,2005号,第1615-1630页。

[3]哈里斯,C.和M. J. Stephens。“一个组合的角和边缘探测器。”第四届Alvey Vision会议的诉讼程序。1988年8月,第147-152页。

[4] Shi,J.和C. Tomasi。“追踪的好功能。”计算机愿景和模式识别的IEEE会议的诉讼程序。1994年6月,第593-600六月。

[5] Tuytelaars,T.和K.Mikolajczyk。“局部不变特征探测器:调查。”计算机图形和愿景的基础和趋势。卷。3,第3,2007号,第177-280页。

[6] Leutenegger,S.,M.Chli和R. Siegwart。“快速:二进制强大的不变可伸缩关键点。”IEEE国际会议的诉讼程序。ICCV,2011年。

[7] Nister,D.和H. Stewenius。“线性时间最大稳定的极值区域。”第10欧洲电脑愿景会议。马赛,法国:2008年,第5303号,第5303页。183-196。

[8] Matas,J.,O. Chum,M. Urba和T.Pajdla。“来自最大稳定的极值区域的强大宽基线立体声。”英国机器视觉会议的诉讼程序。2002年,第384-396页。

[9] Obdrzalek D.,S. Basovnik,L. Mach和A. Mikulik。“使用最大稳定的颜色区域检测场景元素。”计算机和信息科学的通信。La Fertce-Bernard,法国:2009,Vol。82 CCIS(2010年12 01),第107-115页。

[10] Mikolajczyk,K.,T.Tuytelaars,C.Schmid,A. Zisserman,T. Kadir和L. Van Gool。“仿射区探测器的比较。”国际计算机愿景。卷。65,2005年11月1日至2日,第43-72页。

[11]湾,H.,A.ESS,T. Tuytelaars和L. Van Gool。“冲浪:加速强大的功能。”计算机愿景和图像理解(CVIU)。卷。110,第3,2008,PP。346-359。

[12] Alcantarilla,P.F.,A. Bartoli和A.J.戴维森。“Kaze特色”,ECCV 2012,第VI部分,LNCS 7577PP。214,2012

[13] Rublee,E.,V.Rabaud,K. Konolige和G. Bradski。“ORB:筛选或冲浪的有效替代品。”在2011年国际计算机愿景会议的诉讼程序,2564-2571。巴塞罗那,西班牙,2011年。

相关话题