MTTM:在深度图像上基于多任务模板匹配方法的目标检测,分割和姿势估计

转载请注明作者和出处: http://blog.csdn.net/john_bh/

论文链接:Multi-Task Template Matching for Object Detection, Segmentation and Pose Estimation Using Depth Images
作者及团队:Kiru Park & Timothy Patten & Johann Prankl & Markus Vincze
会议及时间: ICRA 2019
code:

Abstract

在有限数量的样本下,模板匹配已显示出可以准确估计新对象的姿态。然而,被遮挡物体的姿势估计仍然具有挑战性。此外,许多机器人应用程序领域遇到的无纹理对象的深度图像比彩色图像更适合。在本文中,我们提出了一种新颖的框架,即多任务模板匹配(MTTM),该框架可以从深度图像中找到目标对象的最接近模板,同时预测分割蒙版以及模板与场景中检测到的对象之间的姿势变换使用对象区域的相同特征图。所提出的特征比较网络通过比较模板的特征图和场景的裁剪特征来计算分割蒙版和姿势预测。该网络的分割结果通过排除不属于该对象的点,提高了姿态估计的鲁棒性。实验结果表明,尽管仅使用深度图像,MTTM仍优于基线方法对被遮挡对象进行分割和姿态估计。

1.Introduction

估计已知对象的6D姿态对于机器人来说是一项重要任务,因为它使机器人能够操纵现实世界中的对象。与许多机器人和计算机视觉任务一样,深度卷积神经网络(CNN)改善了使用彩色和深度图像进行姿势估计的性能[24],[1],[25]。但是,在机器人应用中,快速学习新对象至关重要。例如,当机器人在工业中或在家中工作时,该机器人每天都会遇到新物体,而这些新物体无法被训练集或CAD模型覆盖。因此,直接识别物体的方法需要重新训练以覆盖新物体,这需要额外的训练时间,并且需要许多新物体的样本图像。为解决此问题,模板匹配已广泛用于快速整合新物体。机器人采摘任务[5],[16]中的对象。手工制作的局部和全局描述符已被广泛用于将模板的特征与测试场景的特征进行匹配[10],[2],[7]。最近,基于CNN的本地和全局描述符使用合成渲染的图像和少量的真实图像进行训练[24],[1]。像手工制作的描述符一样,场景中对象的描述符与特征空间中具有最小距离的最近的模板匹配。因此,对于新对象,不需要对CNN进行进一步的培训,并且不需要高性能的GPU进行培训。

即使最近的研究表明在没有深度信息的情况下使用彩色图像进行物体姿态估计的效果很好[20],[13],但在许多机器人操纵任务中,物体的几何信息比纹理更重要[21],[4]。换句话说,通过使用具有相似几何形状但是不同纹理的不同对象的模板,例如,可以适当地操纵日常生活中的许多物品。盒子,杯子,碗和盘子。此外,工业领域中的物体通常没有纹理。因此,仅使用深度信息来检索具有相似几何形状和方向的最近邻(NN)模板是值得的。此外,深度图像对于不同的光照条件和环境更鲁棒,并且易于模拟,这允许使用合成渲染的图像进行训练。

在本文中,我们提出了一种新颖的框架,即多任务模板匹配(MTTM),该框架使用深度图像模板集对对象进行6D姿态估计和分割,而无需对新对象进行CNN训练。 MTTM的输出是具有最接近姿态的NN模板,逐像素分割蒙版以及从NN模板的姿态到测试图像中对象姿态的姿态变换。总而言之,我们的论文提出了以下贡献:

  • 一种新颖的基于深度的框架MTTM,它与NN模板匹配,并使用共享特征图预测对象的分割蒙版和姿态,而无需对新对象进行额外的训练。
  • 无需对象与场景的任何对齐即可生成分割蒙版,这通过排除不属于对象一部分的点而增强了姿态估计性能的鲁棒性。
  • 实验结果表明MTTM优于使用颜色的基线方法。

在本文的其余部分安排如下。 在第二节中,我们提供了相关工作的简要概述.MTTM的详细信息在第三节中进行了解释。 在第四节中,实验结果表明了MTTM的性能和有效性。 最后,我们在第五节中对本文进行了总结,并作了进一步的工作。
在这里插入图片描述

2. Related Work

在本节中,总结了与使用模板进行姿势估计有关的先前研究以及包括使用合成数据在内的多任务学习的最新成果。

A.Template-Based Object Detection and Pose Estimation

本文的重点是使用模板数据库来估计对象的姿态,而无需对学习的描述符进行微调。为此目的,手工制作的特征已被广泛使用,并且在无纹理物体的物体检测和姿态估计中显示出了出色的性能[10],[2]。最近,已经开发了基于CNN的描述符来导出对象的几何特征的隐式表示。 Kehl等。 [14]使用RGB-D图像和卷积自动编码器训练局部描述符。对象的每个局部对应关系使用从中收集局部补丁的相对位置对对象的中心进行投票。

另一方面,裁剪的对象块用于学习可区分特征空间[24],[1],[26]中不同对象和姿势的流形。三重态损失会指导特征在相同类别和相似姿势下具有更近的距离。这些方法的局限性在于它们使用裁剪的补丁程序作为网络的输入。因此,它们不会从整个图像输入中检测出物体,也不会评估检测结果以获得最佳识别结果或消除误报。据我们所知,没有工作可以在不对齐场景中已知3D模型的情况下使用最接近的模板来估计分割蒙版,这在使用迭代最近点(ICP)算法的姿势优化步骤中可能很有用。使用深度信息进行姿态估计的最佳方法是基于点对特征(PPF)的方法[7],[11],[15]。但是,PPF需要完整的CAD模型来提取特征,这限制了它在没有目标对象CAD模型的机器人应用程序中的使用。

B.Multi-Task Learning

最近,已经表明,从深度神经网络中提取的特征图具有解决不同任务的巨大潜力,例如:对象检测和实例分割[8]或对象分割和姿态估计[25]。这些最新研究表明,当针对不同任务共享中间特征图时,它的计算效率很高;此外,它还对网络模型进行了正则化,以避免过分适合特定任务,从而提高了每个任务的性能。最近的研究表明,这种优势适用于姿势估计任务。 Sock等。 [21]和项祥等。 [25]使用共享的特征图来回归对象的姿势,同时使用相同的特征图检测或分割对象。 Bui等。 [4]还使用共享特征进行流形学习以及姿势回归。但是,这些方法直接预测对象类别或姿势,这需要对新对象进行额外的训练步骤。

C.Synthetically Rendered Images for Training

通常,训练CNN需要大量训练数据。由于难以手动注释对象的姿势,因此合成渲染的图像广泛用于训练带有少量真实图像的CNN [24],[1],[26],[25],[22]。在各种光照条件和其他环境因素的影响下,深度图像比彩色图像更健壮。因此,渲染的深度图像通常需要简单地增加背景,例如分形噪声,从而在识别任务上提供合理的性能[4]。但是,如果在训练过程中不涉及真实图像,那就更好了。布雷吉尔等。 [3]引入了用于模拟逼真的深度图像的传感器仿真。这种传感器模拟产生了真实图像中存在的更逼真的噪声。受到这项工作的启发,本文中的合成图像通过传感器模拟进行渲染,以最大程度地减少合成深度图像与实际深度图像之间的差距。

3. Method

本节介绍了用于渲染合成深度图像的方法以及MTTM的详细信息,包括网络体系结构,用于多种任务的训练方法以及推导和评估姿势假设的过程。

A.Rendering of Noisy Depth Images

与以前使用一小部分真实图像的工作相反,MTTM仅使用合成图像进行训练,因此MTTM可以应用于任何其他没有足够训练图像的领域。如[3]中所述,通过模拟典型的立体相机来渲染嘈杂的深度图像。渲染的图像已经具有在每个对象的边界处包含无效值的像素。这使我们能够训练MTTM网络,而无需真实图像或任何其他传感器噪声的增加。在将目标对象随机放置在平面上之后,可以从任意相机姿势绘制训练图像。

B.Network Architecture

在这里插入图片描述
网络在测试场景中提取给定兴趣区域(ROI)的特征描述符,以检索最接近的模板,同时预测目标对象的分割蒙版,并构成场景中从最接近的模板到对象的变换。如图2所示,Resnet-50 [9]体系结构用作骨干网络,并通过Imagenet数据集[6]上训练的权重进行初始化。由于原始网络需要彩色图像作为输入,因此具有一个通道的深度图像必须转换为三通道图像。我们应用一种典型的技术,使用表面法线的x,y和z分量作为图像像素的每个通道。 Resnet-50的第三个残差块的输出用作给定输入图像的特征图。附加的具有256个滤镜的3x3卷积层可用于减小特征图的尺寸。因此,图像的共享特征图的尺寸为256通道,分辨率比输入图像小八倍。像[8]中使用的方法一样,使用特征图的双线性插值来裁剪ROI的特征图。与[8]的原始ROI-Align方法不同,应用了一种简化方法,该方法可在特征图中裁剪提议的ROI区域,并将其调整为所需的输出大小(14x14),该方法的工作没有[[ 8]。 ROI-Align使网络可以将任意大小的图像作为输入。

固定大小的每个ROI特征图都用于多项任务:提取描述符以进行流形学习,蒙版预测和使用ROI特征图对进行姿态回归。描述符由滤波器大小分别为256、256和128的完全连接的层计算。最后一层具有线性激活,而其他所有层均使用elu激活。因此,每个ROI的特征向量的维数为128,f 2R128 。该特征向量是独立计算的,因此可以预先计算模板的特征向量并将其存储在数据库中,以便在测试时进行有效的树搜索。

由场景和模板中的ROI特征图组成的一对在进行特征图的通道级联之前,分别进入具有256个滤镜的3x3卷积层。因此,级联特征图的输出尺寸为14x14x512。如图2所示,此合并的特征图分别用于特征比较网络中的蒙版预测和姿势回归。对于蒙版预测,具有256个滤波器的3x3卷积层和具有S型激活的单通道输出的1x1卷积层是用于表示每个像素的掩模预测。对于姿态回归,将对具有256、256和4个输出通道的全连接层应用最后一层的双曲正切( t a n h tanh tanh)激活,这将给出四元数对中的姿态差 q ∈ R 4 q \in R^{4} qR4

C.Learning Networks for Multiple Tasks

相似姿势之间的特征向量距离应小于到不同姿势或不同对象的距离。三重态损耗为此提供了可靠的性能[24],[1],[26]。与使用裁切后的图像补丁的先前工作相比,整个场景的特征图将被计算以裁剪每个ROI的特征图。对于每个包含多个对象的训练场景 a 1 , a 2 , . . . a i a_1,a_2,... a_i a1,a2,...ai,将正负模板分配给每个对象。从同一类别的前五个最接近的姿势模板中选择一个正模板 t p , i t_{p, i} tp,i否定模板 t n , i t_{n,i} tn,i是从同一对象的不同类别或不同姿势中随机选择的。否定模板的一半来自同一类别,另一半来自不同类别。

即使对象的姿势不同,对称对象也可以具有紧密的形状。 Balntas等。 [1]引入了一个函数,该函数使用每个姿势 q 1 , q 2 q_1 , q_2 q1,q2的渲染深度图像来测量对象的姿势相似性:
在这里插入图片描述
其中 s ( q 1 ) p s(q_1)_p s(q1)p表示将对象置于姿态 q q q之后在像素p处渲染图像的深度值。 如果值小于 ϕ l \phi l ϕl,则 ϕ \phi ϕ值设置为零;如果值大于 ϕ u \phi u ϕu,则 ϕ \phi ϕ值设置为1。 两个视图的姿势距离定义为:
在这里插入图片描述
姿态 q q q是四元数中物体的旋转姿态。 当姿势距离 δ ( q 1 , q 2 ) \delta(q_1,q_2) δ(q1,q2)大于positive模板的姿势距离时,可以分配negative模板。

流形学习的损失函数定义为
在这里插入图片描述
其中 f a , f p 和 f n f_a,f_p和f_n fafpfn代表锚图像,正负模板的ROI特征向量。 m m m是[26]引入的动态裕度,它迫使要素与不同类别之间的距离更大
在这里插入图片描述
其中 c a c_a ca c n c_n cn表示锚点ROI和负模板中对象的类别。 当负模板不是同一类时,边距 m m m相对较大。 为了引导特征在相似姿势[4]中具有更近的距离,还对正对施加了附加损失
在这里插入图片描述
仅针对正对计算分割蒙版和姿势变换。 由于假定已经给出了模板的地面真实分割,因此模板的ROI特征图将通过其分割蒙版进行过滤,以最大程度地减少背景的影响。 因此,对于所有通道,将不属于该对象的特征值设置为零。 当为模板预先计算特征描述符而测试场景的ROI特征图保留所有值时,也将应用此过滤的ROI特征图。用于蒙版预测的损失函数 L m a s k L_{mask} Lmask是整个过程中二进制交叉熵损失的平均值。 调整后的ROI功能图的像素。 姿态回归损失 L p o s e − r e g L_{pose-reg} Lposereg是四元数中地面真值变换与预测变换之间的欧几里得距离[18]。 最后,所有任务的总损失为
在这里插入图片描述

D. Object Detection and Pose Hypotheses Generation

对于输入场景,对中心像素进行均匀采样并生成具有固定空间大小的ROI建议。因此,采样点 p p p的ROI建议的宽度和高度 w w w w p = s s i z e f / d p w_p = s_{size} f / dp wp=ssizef/dp,其中 d d d表示每个采样像素的深度值, f f f为焦距,并且 s s i z e s_{size} ssize设置为覆盖3D空间中目标对象的最大大小。这些框可在特征图中保留对象的长宽比和空间比例。对于每个ROI,计算每个ROI的特征向量,以在欧氏空间中使用有效的Kd-Tree搜索在数据库中找到NN模板,并且还计算特征距离。

从该第一匹配步骤中,选择距离其最近的模板更近的ROI来估计分割掩码。然后,使用模板的预先计算的ROI特征图对选定的ROI进行第一次蒙版预测。将来自特征比较网络的每个分割蒙版调整为原始大小。为了去除冗余的掩码预测,通过非最大抑制算法将重叠的掩码合并。对于每次迭代,将种子蒙版设置为具有最小特征距离的蒙版,并合并重叠超过50%的蒙版。其余的掩码用于指定新的ROI提案的新中心。

在第二个匹配步骤中,使用预测的分割蒙版过滤掉特征图中的背景,以再次匹配精炼的NN模板。然后,估计最终的分割蒙版和姿势。结果,使用五个最接近的模板 T i T_i Ti,预测的分割掩码M和旋转矩阵 M i , R k = { ( T k 1 , M k , Q k 1 ) , ( T k 2 , M k , Q k 2 ) . . . ( T k 5 , M k , Q k 5 ) } M_i,R_k = \{(T_k^1,M_k,Q_k^1),(T_k^2,M_k,Q_k^2)...(T_k^5,M_k,Q_k^5)\} MiRk={(Tk1,Mk,Qk1),(Tk2,Mk,Qk2)...(Tk5,Mk,Qk5)},为每个区域 R k R_k Rk生成了五个姿势假设。使用第一个假设的结果为每个区域计算一次分割掩码,以提高计算效率。

E. Post-Processing

后处理是改善姿势并从假设池中消除错误检测的重要步骤。如果给出了目标对象的CAD模型,则后处理将变得更加容易,因为每个假设的精确表示都是可能的。使用深度图像和一组没有CAD模型的模板来拒绝和获得最佳结果具有挑战性,这超出了本文的范围。取而代之的是,CAD模型仅用于评估生成的假设和完善姿态预测。

在第一个剔除步骤中,如果对ICP进行了三次精减迭代(具有下采样点),则预测的分割蒙版与第一个姿势假设的渲染区域之间的重叠度低于30%时,将删除区域。除去错误区域后,将接受对象区域中的假设进行精化,并通过以精巧的姿势渲染对象来进行评估。与以前使用深度图像进行验证的工作[10],[15]一样,计算得出的深度图像和场景之间的差异可得出内部点数 N i N_i Ni,遮挡点数 N o c c N_{occ} Nocc和关于渲染模型点的数量 N m Nm Nm的异常值 N o u t N_{out} Nout的数量。与[15]中使用的深度适应度评分相反,去除了遮挡惩罚项以检测出没有遮挡的被遮挡物体,而是添加了异常值 P O = 1 − N o u t / N m P_O =1- N_{out} / N_m PO=1Nout/Nm的惩罚项。因此,通过 S D = P O N i / ( N m − N o c c ) S_D = P_ON_i /(N_m-N_{occ}) SD=PONi/NmNocc得出深度适应度 S D S_D SD。评估的其余部分,例如重叠边界点的比率 S B S_B SB和匹配的表面法线的比率 S N S_N SN,在[15]的相同公式中使用。最终分数是这些分数的简单乘积 S f i n a l = S D S B S N S_{final} = S_DS_BS_N Sfinal=SDSBSN,用于过滤掉错误的检测并选择最佳预测。

4. Experiments

本节提供了实现细节和实验结果。实验是使用场景中具有严重遮挡对象的数据集(遮挡数据集[2])执行的。该数据集由LineMOD数据集[10]中的一系列帧组成,并带有八个对象的附加姿势注释。

A.Implementation Details

为了训练MTTM的网络,使用原始数据集中的15个对象渲染具有多个对象的混乱场景和模板图像。用于网络训练的混乱场景总数约为20,000。对于每个训练场景,包含少于50%的被遮挡的对象都用于训练。每个ROI的中心点都会随机移动,以确保未对准中心点的稳定性。由于表面法线对于从相机到物体的距离是不变的,因此使用[10]的相同方法对合成模板的视点进行采样,只是比例不同。在常规二十面体的两个细分之后,从301个视点对对象进行采样,并从 − 45 度 到 45 度 -45度到45度 4545进行额外的面内旋转,步长为15度。结果,每个对象的模板包含2107个样本。参数设置为 ϕ l = 0.1 m , ϕ u = 0.5 m , γ = 10 \phi_{l} = 0.1m,\phi_{u} = 0.5m,\gamma = 10 ϕl=0.1mϕu=0.5mγ=10 s s i z e = 0.3 m s_{size} = 0.3m ssize=0.3m。在训练25个epochs后,所有实验都使用相同的网络,并且权重相同。

在计算表面法线之前,使用渲染和真实深度图像的周围像素值来修补缺少值的像素。通过计算深度梯度可以有效地计算输入图像的表面法线[17]。初始检测步骤中使用的中心点每20个像素均匀采样一次。在假设生成步骤中,删除在相同区域中已经具有相似假设的假设,并选择下一个NN模板以避免多余的假设。在后处理步骤中,将深度内在阈值设置为10mm,除了较小的物体(猿猴和鸭子),需要较小的深度内阈值为5mm。所有实验均在Intel i7-6700K CPU和NVIDIA GTX1080 GPU上进行。

B.Evaluation of Segmentation

由于MTTM的优势在于无需将对象对准场景即可预测分割蒙版,因此可以评估分割性能。为了注释数据集上的分割蒙版,使用地面真实姿势放置对象并计算测试图像和渲染图像之间的差异,以确定哪个像素属于每个对象。如果像素的深度差小于0.02m,则将其标记为对象的一部分。在此评估中使用的分割结果是在第III-D节中的第二个匹配步骤之后每个对象的细分片段。因此,此评估不涉及模板或CAD模型的对齐。
在这里插入图片描述
该性能与其他分割方法进行了比较:使用对象的关注点从场景中正确分割目标对象[19]和基于边缘的分割方法[23]。提供测试场景中对象的中心作为[19]方法的注意点。由[19]的作者实现的公共代码1和[23]代码2使用默认参数进行评估。对于[23]的方法,我们得出带有和不带有模糊的结果,并为每个对象在它们之间取得最佳性能。
在这里插入图片描述
如表I所示,即使MTTM使用颜色和深度值,其分割结果也优于其他方法。这表明MTTM使用NN模板的功能来预测目标对象的相应分割蒙版,而不是使用任意对象的一般边界。图4和图1中的结果清楚地显示了MTTM的优势。

C.Evaluation of Object Detection and Pose Estimation

在该评估中,假定目标对象在场景中可见。在第III-E节的第一个剔除步骤之后,最多选择50个具有较大内点的区域来计算最终分数 S f i n a l S_{f inal} Sfinal。得分最高的15个假设可以通过ICP的最多30次迭代来完善。然后,重新计算最终分数,以决定最佳预测。仅在每个识别步骤中都包含一组对象的模板。因此,每个区域都不会与其他对象类别竞争。为了分析姿势回归网络的效果,在不进行姿势回归的情况下执行了相同的实验,该实验直接使用模板的姿势进行初始对齐。度量是 A D { D ∣ I } AD\{D|I\} AD{DI}误差,已用于测量数据集的姿态误差[10]。此误差测量的是估计姿态与地面真实姿态之间的平均顶点距离。对于对称对象, b o x box box g l u e glue glue,将使用顶点最近点之间的平均距离。当误差小于每个对象的最大直径( k d k_{d} kd)的10%时,将预测的姿势视为正确的估计。由于没有以前的工作仅使用深度图像来匹配模板以进行检测和姿态估计,因此我们将我们的方法与基于模板的方法进行了比较,该方法已被广泛用作原始数据集的基线[10]。
在这里插入图片描述
如表II所示,尽管基线方法同时使用了颜色和深度信息,但MTTM在八个对象中的六个上表现更好。第二列报告没有姿势预测的结果,与使用姿势预测相比,该结果显示出较差的性能。很明显,除了对称对象, b o x box box g l u e glue glue,姿势回归网络预测的姿势比NN模板的原始姿势更相似。由于对于对称对象存在多个变换,因此姿势回归网络有时会尝试预测从模板到姿势的变换,而该姿势在可能的候选对象中不是最接近的,这会导致估计的准确性降低。该结果表明,对于非对称对象,使用姿势回归网络是值得的。由于MTTM仅预测对象的旋转并从对象的可见部分估计中心点,因此大多数故障情况是由错误的平移估计引起的。因此,当对象被部分遮挡时,初始对齐会发生偏移。

D.Real Templates and New Objects

使用真实模板和新颖对象的定性结果如图4所示。左侧图像是使用目标数据集中包含的对象的真实模板的结果。真实模板是从[10]的原始数据集中的目标对象序列得出的,该序列具有每个对象的序列,每个对象具有1,000多个图像,而没有严重遮挡。因此,这些图像可通过使用由
与细分实验中使用的方法相同。
在这里插入图片描述
图4右侧的图像显示了T-Less数据集中[12]的三个新对象的识别结果。模板可以轻松地替换为给定的训练图像,并且网络保持不变。通常,分割遮罩对于训练数据中包含的对象类别的模板不匹配具有鲁棒性,而对于新颖的对象则不具有鲁棒性,这会导致去除背景点后的检索性能变差。补充视频中提供了更多定性结果。

7.Conclusion

在实际环境中学习新对象需要直接从有限数量的示例场景而不是CAD模型或大量的训练数据中得出特征。此外,检测没有纹理的物体对于处理具有相似几何形状但不同纹理的物体很重要。 MTTM通过使用具有多任务体系结构的模板的学到的功能来解决此难题。因此,将目标对象的样本图像添加到模板数据库是新对象所需的唯一步骤。

MTTM的局限性在于,如果没有CAD模型,则无法正确评估生成的姿势假设。由于MTTM不使用颜色信息并且不产生任何本地对应关系,因此如果没有ICP并计算每个假设的适用性,则很难拒绝错误的检测。这还会导致更长的计算时间来进行评估,该过程最多需要20秒,而每个图像的识别需要1-2秒的时间才能找到NN模板并生成假设。作为进一步的工作,应研究适当的评估方法,以在没有CAD模型的情况下选择最佳假设,并减少拒绝错误检测的时间。

#模板匹配 import cv2 as cv import numpy as np def template_demo(): dog = cv.imread("E:/opencv/picture/dog.jpg") dog_nose = cv.imread("E:/opencv/picture/nose.jpg") cv.imshow("dog",dog) result = cv.matchTemplate(dog,dog_nose,cv.TM_CCORR_NORMED) h,w =dog_nose.shape[:2] min_val,max_val,min_loc,max_loc=cv.minMaxLoc(result) pt1 = max_loc pt2 = (pt1[0]+w,pt1[1]+h) cv.rectangle(dog,pt1,pt2,(0,255,0),2) cv.imshow("match",dog) print(result) #src = cv.imread("E:/opencv/picture/dog.jpg") #cv.imshow("inital_window",src) template_demo() cv.waitKey(0) cv.destroyAllWindows() 分析: 模板匹配通常用于目标检测。本文我们检测狗图片的鼻子。 • 我们需要两个主要组件: 1. 源图像(I):我们期望找到与模板图像匹配的图像 2. 模板图像(T):将与模板图像进行比较的补丁图像 1. result = cv.matchTemplate(dog,dog_nose,cv.TM_CCORR_NORMED) void cv::matchTemplate( cv::InputArray image, // 待匹配图像W*H cv::InputArray templ, // 模板图像,和image类型相同, 大小 w*h cv::OutputArray result, // 匹配结果图像, 类型 32F, 大小 (W-w+1)*(H-h+1) int method // 用于比较的方法 ); 其中method有: TM_SQDIFF_NORMED匹配数值越低表示匹配效果越好 TM_CCORR_NORMED,TM_CCOEFF_NORMED匹配数值越大表示匹配效果越好 result参数:(保存各个点匹配结果的参数) 模板匹配函数cvMatchTemplate依次计算模板与待测图片的重叠区域的相似度,并将结果存入映射图像result当中,也就是说result图像中的每一个点的值代表了一次相似度比较结果 模板在待测图像上每次在横向或是纵向上移动一个像素,并作一次比较计算 我们可以通过cv.minMaxLoc函数来确定结果矩阵的最大值和最小值的位置。 2. cv.minMaxLoc(result) 返回result数值中最小值以及最小值所在的位置和最大值以及最大值所在的位置。 3. 当知道哪个点匹配度最高时这个时候我们需要用矩阵把模板给标出来 C++: void rectangle(Mat& img, Point pt1,Point pt2,const Scalar& color, int thickness=1, int lineType=8, int shift=0) 第一个参数:要在哪个图像上画? 第二个参数:矩阵的左上角点坐标 第三个参数:矩阵的右下角点坐标 第四个参数:颜色
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值