Press "Enter" to skip to content

目标检测:多模板匹配

QUANTRIUM导轨

 

在本文中,我将介绍多模板匹配(MTM)包,并介绍使用MTM包使用一个或多个模板图像检测图像中的多个对象所涉及的步骤。

 

MTM软件包简介

 

多模板匹配是用于对给定图像执行对象检测的Python包。它利用模板列表作为参考来检测在给定图像中存在的与它们相似的对象。只要预先提供了所有需要识别的对象的模板,该包就能够检测图像中的多个相似/不同的对象。

 

您可以使用pip安装多模板匹配包。

 

pip install Multi-Template-Matching

 

MTM使用OpenCV执行不同的模板匹配技术。您需要使用pip安装OpenCV,如下所示:

 

pip install opencv-python

 

正在准备模板列表

 

执行多模板匹配的前提是模板图像列表。您需要为要用作模板的图片指定元组,元组的格式为:

 

(TEMPLATE LABEL, RGB/gray-scale template image in array format)

 

假设您有一个文件夹,其中包含要用作模板的所有图像。使用下面的代码片段,您可以通过从特定文件夹加载模板图像来准备模板图像列表。这里,文件名用作模板标签。

 

image_folder = PATH TO THE FOLDER HAVING TEMPLATE IMAGES
for filename in os.listdir(image_folder):
    template_img = cv2.imread(os.path.join(image_folder, filename))
    template_img = cv2.cvtColor(template_img, cv2.COLOR_BGR2GRAY)
    listTemplate.append((filename.split('.')[0], template_img))

 

现在,模板列表已经准备好,我们可以使用MTM包来执行对象检测。

 

执行多模板匹配

 

MTM包的matchTemplates函数负责进行多模板匹配。matchTemplates函数的示例用法如下:

 

import MTM
from MTM import matchTemplates

 

第一个参数listTemplate对应于您在上一步中准备的模板图像列表。第二个参数input_image是要对其执行多模板匹配的目标图像。

 

SCORE_THRESHOLD是置信阈值,超过该置信度阈值,检测对象被认为与模板图像之一匹配。SCORE_THRESHOLD的最佳值是0.9,以最大限度地降低获得假阳性的风险。

 

现在,如果您知道要在目标图像中执行搜索的感兴趣区域,则可以使用(x,y,width,high)格式的searchBox参数,其中x和y表示预期矩形搜索空间的左上角坐标,width和high指定搜索时要考虑的长度和宽度。这将加快匹配过程,特别是在具有有限和较小感兴趣区域的大尺寸图像的情况下。

 

Method参数指定执行哪种OpenCV方法进行模板匹配。以下是支持的模板匹配技术:

 

注意:不支持TM_SQDIFF

 

maxOverlay参数定义两个检测到的边界框之间允许的最大相交比率。如果相交比率超过给定的比率阈值,则将忽略较低的置信度边界框。

 

使检测到的对象可视化

 

MTM包提供了draBoxesOnRGB函数来在所有检测到的对象上绘制边界框。您可以使用matplotlib库来可视化边界框。draBoxesOnRGB函数的示例用法如下:

 

import matplotlib.pyplot as plt
from MTM import drawBoxesOnRGB

 

这里,前两个参数INPUT_IMG和HITS分别是输入图像和检测到的对象列表。showLabel采用布尔值,用于显示可视化中每个检测到的对象的标签。标签和边界框的颜色可以分别使用RGB格式的labelColor和boxColor设置。可以使用labelScale参数定义标签的大小。boxThickness参数指定每个边界框的厚度。

 

给出一个三叶草形状的模板图像,模板标签为Clover_Template,MTM模块能够检测到下面给定输入图像中的所有三叶草。

注意:由于我们提供的maxOverlay为0.1,因此MTM能够适应多个对象之间的轻微重叠

 

在下一个示例中,我们提供了心形、三叶草、骰子和黑桃的模板图像,其中MTM模块能够在输入图像中找到它们中的每一个

以下是上述指定输入图像的matchTemplates函数的输出。

 

Found 4 hits
                 BBox     Score     TemplateName
0  (159, 157, 87, 99)  0.999889  clover_template
3    (55, 55, 74, 84)  0.999884   spade_template
2   (163, 65, 79, 76)  0.999688   heart_template
1   (57, 158, 72, 91)  0.999484    dice_template

 

希望本插图能帮助您了解MTM包进行多模板匹配的工作原理和使用方法。通常,它在制造过程中作为质量控制的一部分,也用于移动机器人的导航,或用于图像中的边缘检测。在Quantrium,我们已经在对象检测和文档处理用例中实现了此技术。 Quantrium

 

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注