局部特征检测与提取

局部特征及其描述符是局部邻域的一种紧凑向量表示,是许多计算机视觉算法的基石。他们的应用包括图像配准,目标检测和分类,跟踪和运动估计。使用局部特征使这些算法能够更好地处理缩放变化、旋转和遮挡。计算机视觉工具箱™提供快速、Harris、ORB和Shi & Tomasi方法用于检测角落特征,以及SURF、KAZE和MSER方法用于检测斑点特征。工具箱包括冲浪,KAZE,怪物,轻快,ORB,和猪描述符。您可以根据应用程序的需求混合和匹配检测器和描述符。

什么是地方特色?

局部特征是指在图像中发现的一种模式或明显的结构,如点、边缘或图像小块。它们通常与一个图像补丁相关联,该图像补丁在纹理、颜色或强度方面与周围环境不同。这个特征到底代表什么并不重要,重要的是它与周围环境不同。局部特征的例子有斑点、角和边缘像素。

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

本地特性的好处和应用

局部特征让您找到图像的对应,而不管遮挡,在观察条件的变化,或杂乱的存在。此外,局部特征的性质使其适合于图像分类,如In与视觉词袋的图像分类

局部特征的使用有两种基本方式:

  • 定位锚点以用于图像拼接或三维重建。

  • 紧凑地表示图像内容,以便检测或分类,而不需要图像分割。

什么是一个好的地方特色?

依靠基于梯度和强度变化方法的检测器可以检测到良好的局部特征。这些特征包括边缘、斑点和区域。良好的本地特性表现出以下特性:

  • 可重复检测
    当给定同一场景的两幅图像时,检测器在两幅图像中发现的大多数特征是相同的。特征是强大的变化,以观察条件和噪音。

  • 独特的
    功能中心周围的社区变化很大,足以让功能之间进行可靠的比较。

  • 本地化
    该特性有一个分配给它的唯一位置。观察条件的改变并不影响它的位置。

特征检测和特征提取

特征检测选择图像中具有独特内容的区域,如角或斑点。使用特性检测来查找可用于进一步处理的感兴趣的点。这些点并不一定对应于物理结构,如表格的角。特征检测的关键是找到局部不变的特征,这样即使在旋转或缩放发生变化的情况下也可以检测到它们。

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

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

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

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

标准 建议

你的形象特征的类型

使用适合您的数据的检测器。例如,如果您的图像包含细菌细胞的图像,请使用斑点检测器而不是角检测器。如果你的图像是一个城市的鸟瞰图,你可以使用角落探测器来寻找人造建筑。

您使用特征的上下文:

  • 匹配要点

  • 分类

猪,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(原始的,尺度);θ= 31;扭曲= imrotate (J,θ);图imshow(失真的)

检测原始图像与失真图像之间的匹配特征

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

ptsOriginal = detectSURFFeatures(原始);ptsDistorted = detectSURFFeatures(扭曲);

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

检测步骤在两幅图像中找到几个大致对应的斑点结构。比较检测到的blob特征。特征提取确定了一个本地patch描述符,从而促进了这一过程。

[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 -估计样本一致性(MSAC),它是RANSAC算法的一个变种。MSAC找到一个几何变换,并将inliers(正确匹配)与outliers(假匹配)分离开来。

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

显示匹配点

图showMatchedFeatures(原始的、扭曲、inlierOriginal inlierDistorted)标题(“匹配点(只适用于inliers)”)传说('ptsOriginal''ptsDistorted'

验证计算的几何变换

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

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

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

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

使用多种特征的图像配准

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

加载原始图像。

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

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

规模= 1.3;J = imresize(原始,缩放);θ= 31;扭曲= imrotate (J,θ);图imshow(失真的)

检测两幅图像中的特征。先用轻快的探测器,然后再用冲浪探测器。

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

从原始和扭曲的图像中提取描述符。BRISK特性在默认情况下使用FREAK描述符。

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

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

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'

结合候选人匹配轻快和冲浪的地方特征。使用位置物业结合点位置从轻快和冲浪的特点。

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

确定轻快和冲浪特征的内点和几何变换。

[tformTotal, inlierDistortedXY inlierOriginalXY] =estimateGeometricTransform (matchedDistortedXYmatchedOriginalXY,“相似”);

显示结果。与使用单一特性检测器的示例相比,结果提供了多个匹配。

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

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

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

参考

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

[2] Mikolajczyk, K.和C. Schmid。“本地描述符的性能评估。”IEEE模式分析与机器智能汇刊。第27卷,2005年第10期,1615-1630页。

[3]哈里斯,C.,和M. J.斯蒂芬。“一个联合角和边检测。”第四届Alvey Vision会议录。1988年8月,147-152页。

[4] Shi, J.和C. Tomasi。“很好的特性。”计算机视觉和模式识别的IEEE会议论文集。1994年6月,页593-600。

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

[6] Leutenegger, S., M. Chli, R. Siegwart。轻快:二进制健壮不变可伸缩关键点。IEEE国际会议记录。ICCV, 2011年。

[7] Nister, D.和H. Stewenius。"线性时间最大稳定极值区域"第十届欧洲计算机视觉会议。法国马赛: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,CCIS第82卷(2010 12 01),107-115页。

Mikolajczyk, K., T. Tuytelaars, C. Schmid, A. Zisserman, T. Kadir, L. Van 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功能”,ECCV 2012,第六部分,lncs7577214年,2012页

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

相关的话题