1. 磐创AI首页
  2. Medium

目标检测:多模板匹配

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

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/07/29/%e7%9b%ae%e6%a0%87%e6%a3%80%e6%b5%8b%ef%bc%9a%e5%a4%9a%e6%a8%a1%e6%9d%bf%e5%8c%b9%e9%85%8d/

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息