基于多模板的图像目标识别
Multi-Template-Matching的Python项目详细描述
多模板匹配
多模板匹配是使用一个或多个较小的模板图像在图像中执行对象识别的包。
模板和图像应具有相同的位深(8、16、32位)和通道数(单/灰度或rgb)。
主函数mtm.matchtemplates
返回提供分数阈值和/或图像中预期对象数的最佳预测位置。
安装
使用pip,pip安装多模板匹配
安装后,
导入mtm
应该可以工作。
文档
MTM包主要包含两个重要功能:
匹配模板
匹配模板(列表模板,图像,方法=cv2.tm_ccoeff_normed,n_object=float("inf"),score_threshold=0.5,maxoverlap=0.25,searchbox=none)
此函数搜索图像中的每个模板,并返回最佳N_对象位置,该位置提供最好的分数,且不重叠在maxoverlap
阈值以上。
参数
列表模板:
要在每个图像中搜索的元组(labelstring、灰度或rgb numpy数组)模板列表,与标签关联图像:灰度或rgb numpy数组
要执行搜索的图像,其位深和频道数应与模板相同方法:int
opencv模板匹配方法之一(0到5),默认值5=0-平均互相关n_对象:int
图像中的预期对象数分数阈值:浮动在[0,1]范围内
如果n>;1,则分别返回低于/高于分数阈值的本地最小值/最大值maxoverlap:浮动范围[0,1]
这是一对边界框之间的交集与并集(IOU)面积之比的最大值。 如果比率超过maxOverlap,则会丢弃较低的分数边界框。searchbox:以像素为单位的元组(x,y,宽度,高度)
作为元组的可选矩形搜索区域
返回
- 最佳匹配:字典匹配列表{"templatename":字符串,"bbox":(x,y,width,height),"score":float} 如果n=1,则返回与得分阈值无关的最佳匹配项 如果n<;inf,则返回超过分数阈值的n个最佳匹配项 如果n=inf,则返回通过score_阈值的所有匹配项
函数findMatches
在没有非最大值抑制的情况下执行相同的检测。
DrawBoxesOnRGB
第二个重要功能是将检测显示为初始图像上的矩形边框。
为了将检测可视化为彩色边框,如果提供了灰度图像,该函数将返回图像的rgb副本。
也可以使用DrawBoxesOnGray在灰度图像上绘制检测边界框(例如生成检测的掩码)。DrawBoxesOnRGB(图像,列表,框厚度=2,框颜色=(255,255,00),ShowLabel=真,LabelColor=(255,255,0),LabelScale=0.5)
此函数返回图像的副本,其中预测的模板位置作为覆盖在图像上的边框 模板名称也可以显示在showLabel=true的边框顶部。
参数
图像:numpy数组 执行搜索的图像
列表点击:
MatchTemplates或FindMatches返回的命中列表箱厚:int
边框轮廓的厚度(像素)。-1将填充边界框(对遮罩有用)。框颜色:(int,int,int)
bou的rgb颜色收线盒showLabel:布尔值,默认为真
边框的显示标签(字段模板名)标签颜色:(int,int,int)
标签的RGB颜色labelscale:浮点,默认值=0.5 按标签大小缩放
返回
- outimage:rgb图像
原始图像的预测模板位置显示为边框
示例
有关如何使用该软件包的一些示例,请参阅jupyter笔记本教程 此相关存储库的wiki部分也提供了一些有关实现的信息。
引文
如果您将此实现用于研究,请引用:
多模板匹配:显微镜图像中目标定位的通用工具;
劳伦特•斯维•托马斯,约亨•格里格
biorxiv 619338;doi:https://doi.org/10.1101/619338
发布
相关项目
有关斐济插件的实现,请参见repo。
此处适用于使用多模板匹配的knime工作流。
作品来源
这项工作是在jochen gehrig博士的监督下进行的laurent thomas博士项目的一部分:
获取Ditabis AG的一个部门
数字生物医学成像系统公司
弗赖伯格街3号
75179 pforzheim
资金
该项目获得了欧盟"地平线2020研究与创新计划"的资助,该计划是根据玛丽·斯科洛多斯卡·居里(Marie Sklodowska-Curie)的第721537号《影像生活》协议进行的。