局部特征检测和提取

地方特色和他们的描述,这是本地附近的紧凑型矢量表示,是许多计算机视觉算法的基石。其应用包括图像配准,对象检测和分类,跟踪,以及运动估计。使用局部特征使得这些算法能够更好地处理标度改变,旋转和闭塞。计算机视觉工具箱™提供了快速,哈里斯,ORB,以及时与托马西方法检测角落特征和SURF,KAZE和MSER方法检测斑点的功能。该工具箱包括SURF,KAZE,FREAK,BRISK,ORB,和HOG描述符。你可以混合和匹配检测,并根据您的应用程序要求的描述符。

有什么地方特色?

局部特征是指图案或不同的结构中发现的图像中,如一个点,边缘,或小图像块。它们通常与图像相关联的补丁从其周围环境通过纹理,颜色或强度不同。什么功能实际上表示无所谓,只是它是从它的周围是不同的。的局部特征的实例是斑点,角落和边缘像素。

实施例1角点检测的例子
我= imread ('circuit.tif');角落= detectFASTFeatures(我“MinContrast”,0.1);J = insertMarker(I,拐角,'圈');imshow (J)

本地特性的好处和应用

局部特征可以让你发现图像的一致性,而不受遮挡、观察条件的变化或杂波的影响。此外,局部特征的性质使其适合于图像分类,如In与视觉词袋的图像分类

局部特征在两个基本的使用方式:

  • 用于在图像拼接或3- d重建使用本地化锚点。

  • 为检测或分类而简洁地表示图像内容,不需要图像分割。

什么是好的局部特征?

基于梯度和强度变化方法的检测器检测出良好的局部特征。这些特性包括边缘、斑点和区域。良好的局部特征表现在以下几个方面:

  • 可重复检测
    当给同一场景的两幅图像,最特色的是在两个图像探测器的发现是相同的。的特征是稳健的观看条件和噪声的变化。

  • 独特的
    特征中心周围的邻居变化很大,可以对特征进行可靠的比较。

  • 本地化
    功能已分配给它一个独特的位置。在观察条件的变化不影响它的位置。

特征检测和特征提取

特征检测选择图像中具有独特内容的区域,如角落或斑点。使用特征检测来发现您可以用于进一步处理的兴趣点。这些点不一定对应物理结构,如桌子的角落。特征检测的关键是找到局部不变的特征,这样即使在旋转或尺度变化时也能检测到。

特征提取涉及计算一个描述符,这是在围绕着检测到的特征区域通常所做的。描述符依赖于图像处理,以变换的局部像素邻域到紧凑的矢量表示。这种新的表现使得邻里之间的比较,无论在规模或方向的变化。描述符,如SIFT或SURF,依靠局部梯度计算。二进制描述符,诸如活跃,ORB或FREAK,依靠对局部强度的差异,然后将其编码成二进制向量。

选择一个特征检测器和描述符

通过考虑您的应用程序的标准和数据的性质选择最好的功能检测和描述符。第一个表可以帮助您了解的一般标准来驱动你的选择。接下来的两个表提供关于计算机视觉工具箱中可用的探测器和描述的细节。

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

标准 建议

图像中的特征类型

使用一个探测器适合您的数据。例如,如果您的图像含有细菌细胞的图像,使用BLOB探测器,而不是角点检测。如果你的形象是一个城市的鸟瞰图,你可以使用角检测发现人造结构。

语境中,你正在使用的功能:

  • 匹配关键点

  • 分类

猪,SURF和KAZE描述适用于分类任务。相反,二进制描述符,如ORB,BRISK和FREAK,通常用于找到图像,其用于登记之间的对应点。

图像失真的类型

选择一个检测器和描述符地址,以便在数据的失真。例如,如果没有大规模的变化目前,考虑到不处理规模一个角落探测器。如果数据中包含的失真,诸如缩放和旋转的一个更高的水平,然后用SURF,ORB或KAZE特征检测器和描述符。冲浪和KAZE方法是计算密集型的。

性能需求:

  • 需要实时性能

  • 精度和速度

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

基于特征种类选择检测功能

探测器 功能类型 函数 尺度独立
快速[1] 角落里 detectFASTFeatures 没有
最小特征值算法[4] 角落里 detectMinEigenFeatures 没有
角落探测器[3] 角落里 detectHarrisFeatures 没有
冲浪[11] detectSURFFeatures 是的
KAZE[12] detectKAZEFeatures 是的
轻快[6] 角落里 detectBRISKFeatures 是的
女士[8] 等强度区 detectMSERFeatures 是的
ORB[13] 角落里 detectORBFeatures 没有

注意

检测函数返回包含特征信息的对象。该extractHOGFeaturesextractFeatures函数使用这些对象来创建描述符。

选择一个描述符方法

描述符 二进制 函数和方法 不变性 典型的使用
规模 旋转 发现点对应 分类
HOG 没有 extractHOGFeatures一世,...) 没有 没有 没有 是的
枸杞多糖 没有 extractLBPFeatures一世,...) 没有 是的 没有 是的
冲浪 没有 extractFeatures一世”,方法''冲浪”) 是的 是的 是的 是的
KAZE 没有 extractFeatures一世”,方法''KAZE”) 是的 是的 是的 是的
是的 extractFeatures一世”,方法''”) 是的 是的 是的 没有
轻快 是的 extractFeatures一世”,方法''轻快”) 是的 是的 是的 没有
ORB 是的 extractFeatures一世”,方法''ORB”) 没有 是的 是的 没有
  • 围绕一个关键点的简单像素邻域

没有 extractFeatures一世”,方法''”) 没有 没有 是的 是的

注意

  • extractFeatures功能提供了不同的提取方法,以更好地满足您的应用需求。当你不指定'方法'为输入extractFeatures功能,该功能自动选择基于输入点类的类型的方法。

  • 二进制描述符是快,但在本地化方面不太精确。他们不适合分类任务。该extractFeatures函数返回一个binaryFeatures宾语。该对象允许在使用所述基于汉明距离的匹配度量matchFeatures功能。

使用本地特点

注册两个图像是理解本地特性的一种简单方法。这个例子发现了两个图像之间的几何变换。它使用局部特性来查找定位良好的锚点。

显示两个图像

第一个图像是原始图像。

原始= imread(“cameraman.tif”);图;imshow(原始);

第二幅图像是经过旋转和缩放的原始图像。

标度= 1.3;J = imresize(原始的,尺度);THETA = 31;扭曲= imrotate(J,THETA);图imshow(失真的)

检测原稿和失真图像之间的匹配的特征

检测匹配的SURF特征是确定校正失真图像所需的变换的第一步。

ptsOriginal = detectSURFFeatures(原件);ptsDistorted = detectSURFFeatures(失真的);

提取特征并比较两幅图像之间检测到的斑点

检测步骤在两个图像中发现了几个大致对应的blob结构。比较检测到的blob特性。这个过程可以通过特征提取来简化,特征提取决定了一个局部的补丁描述符。

[featuresOriginal,validPtsOriginal] =...extractFeatures(原,ptsOriginal);[featuresDistorted, validPtsDistorted] =...extractFeatures(扭曲,ptsDistorted);

可能并不是所有的原始点都被用来提取描述符。点可能会被拒绝,如果他们太接近图像边界。因此,除了特征描述符之外,还返回有效的点。

用于计算描述符的贴片尺寸是在特征提取步骤中确定。贴片尺寸对应于该检测到的特征的尺度。无论贴片尺寸的,2个特征矢量,featuresOriginalfeaturesDistorted,被计算以这样的方式使得它们相等的长度。该描述符,您可以比较检测到的特征,无论其大小和旋转。

查找候选匹配

属性获取特征之间的候选匹配matchFeatures功能。候选匹配意味着结果可能包含一些无效的比赛。两个补丁那场比赛可以表示类似的功能,但可能不是一个正确的匹配。一张桌子角落都可以看起来像一把椅子角落,但两个特征是明显不匹配。

indexPairs = matchFeatures (featuresOriginal featuresDistorted);

从两个图像中查找点位置

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

matchedOriginal = validPtsOriginal(indexPairs(:,1));matchedDistorted = validPtsDistorted(indexPairs(:,2));

显示候选匹配

图showMatchedFeatures(原件,扭曲,matchedOriginal,matchedDistorted)称号(“候选匹配点(包括异常值)”

分析特征位置

如果有有效的匹配的足够数量,去掉错误的匹配。对于这种情况的有效方法是RANSAC算法。该estimateGeometricTransform函数实现了m估计样本一致性(M-estimator sample consensus, MSAC),这是RANSAC算法的一个变体。MSAC找到一个几何变换,并将inliers(正确匹配)与outliers(虚假匹配)分离开来。

[TForm的,inlierDistorted,inlierOriginal] =...estimateGeometricTransform (matchedDistorted...matchedOriginal,“相似”);

显示匹配点

图showMatchedFeatures(原始的、扭曲、inlierOriginal inlierDistorted)标题(“匹配点(正常值只)”)图例('ptsOriginal''ptsDistorted'

验证所计算的几何变换

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

outputView = imref2d(大小(原始));恢复= imwarp (tform扭曲,“OutputView”,outputView);

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

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

使用多个特性进行图像配准

此示例基于“使用本地特性”示例的结果。使用多个检测器和描述符对可以组合和增强结果。当您无法使用单个特征检测器获得足够好的匹配(内联)时,多个对也很有用。

装入原始图像。

原始= imread(“cameraman.tif”);图;imshow(原始);文本(大小(原始的,2),大小(原始的,1)+ 15,...“图片由麻省理工学院提供”...“字形大小”,7,'水平对齐''对');

缩放和旋转原始图像以创建失真图像。

标度= 1.3;J = imresize(原始的,尺度);THETA = 31;扭曲= imrotate(J,THETA);图imshow(失真的)

检测两个图像中的特征。首先使用轻快的探测器,然后是海浪探测器。

ptsOriginalBRISK = detectBRISKFeatures(原始,“MinContrast”,0.01);ptsDistortedBRISK = detectBRISKFeatures(扭曲,“MinContrast”,0.01);ptsOriginalSURF = detectSURFFeatures(原始);ptsDistortedSURF = detectSURFFeatures(扭曲);

从原始和扭曲的图像中提取描述符。默认情况下,轻快的特性使用反常的描述符。

[featuresOriginalFREAK,validPtsOriginalBRISK] =...extractFeatures(原,ptsOriginalBRISK);[featuresDistortedFREAK, validPtsDistortedBRISK] =...extractFeatures(扭曲,ptsDistortedBRISK);[featuresOriginalSURF,validPtsOriginalSURF] =...extractFeatures(原始,ptsOriginalSURF);[featuresDistortedSURF,validPtsDistortedSURF] =...extractFeatures(扭曲,ptsDistortedSURF);

首先通过匹配反常描述符来确定候选匹配,然后是SURF描述符。为了获得尽可能多的特征匹配,可以从检测器和低于默认值的匹配阈值开始。一旦您得到了一个可用的解决方案,您就可以逐渐增加阈值来减少提取和匹配特性所需的计算负载。

indexPairsBRISK = matchFeatures(featuresOriginalFREAK,...featuresDistortedFREAK,'MatchThreshold'现年40岁的“MaxRatio”,0.8);indexPairsSURF = matchFeatures(featuresOriginalSURF,featuresDistortedSURF);

获得轻快和冲浪的候选匹配点。

matchedOriginalBRISK = validPtsOriginalBRISK (indexPairsBRISK (: 1));matchedDistortedBRISK = validPtsDistortedBRISK (indexPairsBRISK (:, 2));matchedOriginalSURF = validPtsOriginalSURF (indexPairsSURF (: 1));matchedDistortedSURF = validPtsDistortedSURF (indexPairsSURF (:, 2));

想象一下这些假定的轻快配对。

图showMatchedFeatures(原件,扭曲,matchedOriginalBRISK,...matchedDistortedBRISK)标题(“推定的匹配使用BRISK&FREAK”)图例('ptsOriginalBRISK''ptsDistortedBRISK'

结合候选人匹配轻快和冲浪的地方特色。使用位置属性从活跃,SURF特征点位置相结合。

matchedOriginalXY =...[matchedOriginalSURF.Location;matchedOriginalBRISK.Location];matchedDistortedXY =...[matchedDistortedSURF.Location;matchedDistortedBRISK.Location];

确定快速和快速特征的输入点和几何变换。

[tformTotal, inlierDistortedXY inlierOriginalXY] =...estimateGeometricTransform (matchedDistortedXY...matchedOriginalXY,“相似”);

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

图showMatchedFeatures(原始的、扭曲、inlierOriginalXY inlierDistortedXY)标题(“(只有正常值)使用SURF轻快的匹配点”)图例('ptsOriginal''ptsDistorted'

比较原始和恢复后的图像。

outputView = imref2d(大小(原始));恢复= imwarp (tformTotal扭曲,“OutputView”,outputView);图;imshowpair(原始恢复,'剪辑'

参考

[1] Rosten, E.和T. Drummond。“高速拐角检测的机器学习。”第九届欧洲会议计算机视觉。卷。1,2006年,第430-443。

[2]米科瓦伊奇克,K.,和C.施密德。“局部描述符的绩效评估。”IEEE交易模式分析与机器智能。第27卷,2005年第10期,1615-1630页。

[3]哈里斯,C.,和M. J.斯蒂芬。“一个联合角和边检测。”第四阿尔维愿景研讨会论文集。1988年8月,页147-152。

施,J., C.托马西。“跟踪的好功能。”计算机视觉和模式识别的IEEE会议论文集。1994年6月,页593-600。

[5] Tuytelaars,T。和K.米科瓦伊奇克。“局部不变特征检测器调查报告。”基础和趋势计算机图形和视觉。第3卷,第3期,2007年,第177-280页。

[6] Leutenegger,S.,M. Chli和R. Siegwart。“干脆利索:二进制强大的可扩展性不变关键点。”IEEE国际会议记录。ICCV,2011。

[7] Nister,D.,和H. Stewenius。“线性时间最大稳定极值区域。”10日欧洲会议计算机视觉。法国马赛:2008年,5303号,第183-196。

[8]麦塔斯,J.,O.呒,M. Urba,和T. Pajdla。“从最大稳定极值区域的鲁棒宽基线立体。”英国机器视觉会议论文集。2002年,第384-396。

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

[10]米科瓦伊奇克,K.,T. Tuytelaars,C.施密德,A. Zisserman,T.卡迪尔和L.范GOOL。“比较仿射区检测。”国际计算机视觉杂志。第65卷,第1-2期,2005年11月,第43-72页。

[11]湾,H.,A. ESS,T. Tuytelaars和L.范GOOL。“SURF:加速稳健特征。”计算机视觉和图像理解(CVIU)。卷。110,第3号,2008年,第346-359。

[12] Alcantarilla, p.f., A. Bartoli,和A.J. Davison。“KAZE功能”,2012年ECCV第六部分,LNCS 7577第214,2012

[13] Rublee, E., V. Rabaud, K. Konolige和G. Bradski。“ORB:一个有效的选择来筛选或冲浪。”一世n2011年计算机视觉国际会议论文集,2564年至2571年。西班牙巴塞罗那,2011。

相关话题