主要内容

局部特征检测与提取

局部特征及其描述符是局部邻域的一个紧凑向量表示,是许多计算机视觉算法的构建模块。它们的应用包括图像配准、目标检测和分类、跟踪和运动估计。使用局部特征使这些算法能够更好地处理尺度变化、旋转和遮挡。计算机视觉工具箱™提供了FAST、Harris、ORB和Shi & Tomasi方法用于检测角落特征,以及SIFT、SURF、KAZE和MSER方法用于检测斑点特征。工具箱包括SIFT、SURF、KAZE、FREAK、BRISK、ORB和HOG描述符。您可以根据应用程序的需求混合和匹配检测器和描述符。有关更多细节,请参见点特征类型

什么是本地特色?

局部特征是指在图像中发现的模式或独特的结构,如点、边缘或小图像补丁。它们通常与在纹理、颜色或强度上与周围环境不同的图像补丁相关。特征实际上代表什么并不重要,重要的是它与周围环境的区别。局部特征的例子是斑点、角和边缘像素。

例1。角点检测示例
I = imread(“circuit.tif”);拐角= detectFASTFeatures(I,MinContrast=0.1);J = insertMarker(I,corners,“圆”);imshow (J)

本地特性的优点和应用

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

局部特征有两种基本用法:

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

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

优秀的本地特色是什么?

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

  • 可重复检测
    当给出同一场景的两张图像时,检测器在这两张图像中发现的大多数特征是相同的。这些特征对观看条件和噪声的变化具有鲁棒性。

  • 独特的
    特征中心周围的邻居变化足够大,可以在特征之间进行可靠的比较。

  • 可以定位的
    该特性有一个分配给它的唯一位置。观察条件的变化不影响它的位置。

特征检测与特征提取

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

特征提取涉及计算描述符,这通常是在以检测到的特征为中心的区域上完成的。描述符依靠图像处理将局部像素邻域转换为紧凑的向量表示。这种新的表示方式允许在邻里之间进行比较,而不考虑规模或方向的变化。描述符,如SIFT或SURF,依赖于局部梯度计算。二进制描述符,如BRISK、ORB或FREAK,依赖于局部强度差异对,然后将其编码为二进制向量。

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

考虑应用程序的标准和数据的性质,选择最佳的特征检测器和描述符。第一个表帮助您理解驱动选择的一般标准。接下来的两个表提供了有关“计算机视觉工具箱”中可用的检测器和描述符的详细信息。

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

标准 建议

图像中的特征类型

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

使用特性的上下文:

  • 匹配关键点

  • 分类

HOG、SURF和KAZE描述符适用于分类任务。相反,二进制描述符(如ORB、BRISK和FREAK)通常用于查找图像之间的点对应关系,这些对应关系用于配准。

图像中出现的失真类型

选择能够解决数据失真问题的检测器和描述符。例如,如果没有出现刻度变化,则考虑使用不处理刻度的拐角检测器。如果您的数据包含更高级别的失真,例如缩放和旋转,那么使用SIFT、SURF、ORB或KAZE特征检测器和描述符。SURF和KAZE方法计算量很大。

性能需求:

  • 实时性能要求

  • 准确性vs速度

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

根据特征类型选择检测功能

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

请注意

检测函数返回包含特性信息的对象。的extractHOGFeatures而且extractFeatures函数使用这些对象来创建描述符。

选择描述符方法

描述符 二进制 功能和方法 不变性 典型的使用
规模 旋转 寻找点对应关系 分类
没有 extractHOGFeatures,……) 没有 没有 没有 是的
枸杞多糖 没有 extractLBPFeatures,……) 没有 是的 没有 是的
筛选 没有 extractFeatures方法“筛选” 是的 是的 是的 是的
冲浪 没有 extractFeatures方法“冲浪” 是的 是的 是的 是的
KAZE 没有 extractFeatures方法“KAZE” 是的 是的 是的 是的
是的 extractFeatures”,方法“怪胎” 是的 是的 是的 没有
轻快的 是的 extractFeatures”,方法“快” 是的 是的 是的 没有
ORB 是的 extractFeatures”,方法“球” 没有 是的 是的 没有
  • 围绕关键点的简单像素邻域

没有 extractFeatures”,方法“块” 没有 没有 是的 是的

请注意

  • extractFeatures函数提供了不同的提取方法,以最佳地匹配应用程序的需求。当您没有指定“方法”的输入extractFeatures函数,该函数根据输入点类的类型自动选择方法。

  • 二进制描述符速度很快,但在本地化方面不够精确。它们不适合用于分类任务。的extractFeatures函数返回一个binaryFeatures对象。对象启用基于汉明距离的匹配度量matchFeatures函数。

使用本地特性

配准两个图像是了解局部特征的一种简单方法。这个示例查找两个图像之间的几何变换。它使用局部特征来查找本地化良好的锚点。

显示两个图像

第一个图像是原始图像。

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

图中包含一个axes对象。坐标轴对象包含一个image类型的对象。

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

规模= 1.3;J = imresize(原始,比例);Theta = 31;distortion = imrotate(J,theta);图imshow(扭曲)

图中包含一个axes对象。坐标轴对象包含一个image类型的对象。

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

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

ptsorigoriginal = detectsurfeatures(原始);ptsdistortion = detectsurfeatures(扭曲的);

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

检测步骤在两幅图像中发现了几个大致对应的blob结构。比较检测到的blob特征。这一过程通过特征提取来实现,特征提取确定了本地补丁描述符。

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

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

用于计算描述符的补丁大小在特征提取步骤中确定。补丁大小对应于检测到的特征的尺度。不管补丁大小如何,这两个特征向量,featuresOriginal而且featuresDistorted,它们的长度相等。描述符使您能够比较检测到的特征,而不考虑它们的大小和旋转。

查找候选匹配

的描述符来获取特征之间的候选匹配matchFeatures函数。候选匹配意味着结果可能包含一些无效的匹配。两个匹配的补丁可以表示相似的特征,但可能不是正确的匹配。桌子角可以看起来像椅子角,但这两个功能显然不匹配。

indexPairs = matchFeatures(featuresOriginal, featuresdistortion);

从两个图像中找出点的位置

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

matchedOriginal = validptsorigoriginal (indexPairs(:,1));matcheddistortion = validptsdistortion (indexPairs(:,2));

显示候选匹配项

图showMatchedFeatures(original, distortion,matchedOriginal, matcheddistortion)“候选匹配点(包括异常值)”

图中包含一个axes对象。带有标题候选匹配点(包括异常值)的axis对象包含4个类型为image、line的对象。

分析特征位置

如果有效匹配的数量足够多,则删除错误匹配。对于这种场景,一种有效的技术是RANSAC算法。的estgeotform2d函数实现了m估计样本一致性(MSAC),这是RANSAC算法的一个变体。MSAC找到一个几何变换,并将内值(正确匹配)与异常值(虚假匹配)分离开来。

[tform,inlierIdx] = estgeotform2d(matcheddistortion,inlierIdx)...matchedOriginal,“相似”);inlier失真= matcheddistortion (inlierIdx,:);inlierOriginal = matchedOriginal(inlierIdx,:);

显示匹配点

图showMatchedFeatures(original, distortion,inlierOriginal, inlierdistortion)“匹配点(仅内嵌)”)传说(“ptsOriginal”“ptsDistorted”

图中包含一个axes对象。带有标题匹配点(仅inliers)的axis对象包含4个类型为image、line的对象。这些对象表示ptsorigoriginal, ptsorigoriginal, ptsordistortion。

验证计算的几何变换

将计算得到的几何变换应用于变形图像。

outputView = imref2d(size(original));recovered = imwarp(distortion,tform,OutputView= OutputView);

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

图imshowpair(原始的,恢复,“蒙太奇”

图中包含一个axes对象。坐标轴对象包含一个image类型的对象。

使用多种功能的图像配准

此示例建立在“使用本地特性”示例的结果之上。使用多个检测器和描述符对使您能够组合和加强结果。当使用单个特征检测器无法获得足够好的匹配(inlier)时,多个对也很有用。

加载原始图像。

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

图中包含一个axes对象。坐标轴对象包含图像、文本类型的两个对象。

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

规模= 1.3;J = imresize(原始,比例);Theta = 31;distortion = imrotate(J,theta);图imshow(扭曲)

图中包含一个axes对象。坐标轴对象包含一个image类型的对象。

检测两个图像中的特征。首先使用BRISK检测器,然后是SURF检测器。

ptsOriginalBRISK = detectBRISKFeatures(original,MinContrast=0.01);ptdistortion brisk = detectBRISKFeatures(distortion,MinContrast=0.01);ptsOriginalSURF = detectsurfeatures(原始);ptsdistortion surf = detectsurfeatures(失真);

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

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

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

indexPairsBRISK = matchFeatures(featuresOriginalFREAK,...featuresDistortedFREAK MatchThreshold = 40, MaxRatio = 0.8);indexPairsSURF =匹配特征(featuresOriginalSURF, featuresdistortion surf);

获得BRISK和SURF的候选匹配点。

matchedOriginalBRISK = validPtsOriginalBRISK(indexPairsBRISK(:,1));matcheddistortion brisk = validptsdistortion brisk (indexPairsBRISK(:,2));matchedOriginalSURF = validPtsOriginalSURF(indexPairsSURF(:,1));matched失真冲浪= validpts失真冲浪(indexPairsSURF(:,2));

想象BRISK假定的匹配。

图showMatchedFeatures (matchedOriginalBRISK原始的,扭曲的,...matchedDistortedBRISK)标题(“假定的匹配使用BRISK和FREAK”)传说(“ptsOriginalBRISK”“ptsDistortedBRISK”

图中包含一个axes对象。使用BRISK和FREAK假定匹配的axis对象包含4个类型为image、line的对象。这些对象表示ptsOriginalBRISK, ptptsdistortion brisk。

结合候选匹配的BRISK和SURF本地特征。使用位置属性来结合BRISK和SURF功能中的点位置。

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

确定BRISK和SURF特征的内嵌点和几何变换。

[tformTotal,inlierIdx] = estgeotform2d(matcheddistortion xy,inlierIdx),...matchedOriginalXY,“相似”);inlier失真xy = matcheddistortion xy (inlierIdx,:);inlierOriginalXY = matchedOriginalXY(inlierIdx,:);

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

figure showMatchedFeatures(original, distortion,inlierOriginalXY, inlierdistortion xy)'使用SURF和BRISK匹配点(仅限inliers)')传说(“ptsOriginal”“ptsDistorted”

图中包含一个axes对象。使用SURF和BRISK(仅inliers)匹配点的axis对象包含4个类型为image、line的对象。这些对象表示ptsorigoriginal, ptsorigoriginal, ptsordistortion。

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

outputView = imref2d(size(original));recovered = imwarp(distortion,tformTotal,OutputView= OutputView);图imshowpair(原始的,恢复,“蒙太奇”

图中包含一个axes对象。坐标轴对象包含一个image类型的对象。

参考文献

[1]罗斯滕,E,和t。德拉蒙德。《高速拐角检测的机器学习》第九届欧洲计算机视觉会议.第1卷,2006,第430-443页。

[2]米科拉契克,K.和C.施密德。“局部描述符的性能评估。”模式分析与机器智能汇刊。2005年第10期,第27卷第1615-1630页。

[3]哈里斯C和M. J.斯蒂芬斯。“角和边缘联合探测器。”第四届阿尔维视觉会议论文集.1988年8月,第147-152页。

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

[5] Tuytelaars, T.和K. Mikolajczyk。局部不变特征检测器:概论。计算机图形与视觉基础与趋势“,.2007年第3期,第177-280页。

[6]卢滕艾格,S., M. Chli, R. Siegwart。二进制健壮不变可扩展关键点。IEEE国际会议论文集.ICCV, 2011年。

[7]尼斯特,D.和H. Stewenius。"线性时间最大稳定极值区域"第十届欧洲计算机视觉会议.马赛,法国:2008年,第5303号,183-196页。

[8]马塔斯,J., O. Chum, M. Urba, T. Pajdla。"从最稳定的极值区域获得强大的宽基线立体声"英国机器视觉会议论文集.2002,第384-396页。

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

[10]米科拉奇克,K, T.图伊特拉斯,C.施密德,A.齐瑟曼,T.卡迪尔,L.凡古尔。仿射区域探测器的比较。国际计算机视觉杂志.2005年11月,第65卷1-2号,43-72页。

[11]贝,H., A. Ess, T. Tuytelaars和L. Van Gool。“SURF:加速健壮的功能。”计算机视觉与图像理解(CVIU).2008年第3期,第110卷第346-359页。

[12]阿尔坎塔利拉,p.f., A.巴托利,A. j .戴维森。“KAZE功能”,ECCV 2012,第VI部分,LNCS 75772012年第214页

[13]鲁布礼,E., V. Rabaud, K. Konolige和G. Bradski。“ORB: SIFT或SURF的有效替代品。”在2011年计算机视觉国际会议论文集, 2564 - 2571。2011年,西班牙巴塞罗那。

[14] Lowe, David G..“来自比例不变关键点的独特图像特征。”Int。j .第一版。愿景60,不。2(2004): 91—110。

相关的话题

Baidu
map