图片处理之模式匹配(match_template)

Opencv对于模式匹配的图像识别 1. Mat类简介Mat类是Opencv中储存图像非常常见的一种数据结构。Mat类可以看做是存放矩阵的容器,他包含了两部分,分别是用来存放图片信息的信息头,和一个指向图片储存矩阵的指针。信息头往往占用空间比较小,而且各个图片之间的信息头是完全独立的。而图片储存矩阵往往占用较大的空间,并且可以多个图片的矩阵指针指向同一个内存空间。2. Mat类的拷贝从Mat类的数据储存结构来看,Mat类图像储存是通过矩阵指针实现的。 阅读详情

以一张脸部皮肤切片中的毛孔作为研究对象,使用模式匹配寻找到该切片中所有的毛孔

1.选取切片,并找到匹配对象

from skimage.feature import match_template
img_gray = cv2.cvtColor(img_o,cv2.COLOR_BGR2GRAY)
img_kernel = img_gray[255:295,460:500]

plt.subplot(131),plt.imshow(img_o)
plt.title('original'),plt.xticks([]),plt.yticks([])
plt.subplot(132),plt.imshow(img_gray,'gray')
plt.title('gray'),plt.xticks([]),plt.yticks([])
plt.subplot(133),plt.imshow(img_kernel,'gray')
plt.title('template'),plt.xticks([]),plt.yticks([])
plt.show()

这里写图片描述

如上图所示,左边图为皮肤切片原图,中间为灰度图,右边为选中的匹配对象

2.match_template

result = match_template(img_gray, img_kernel, pad_input=True, mode='constant', constant_values=0)
plt.subplot(121),plt.imshow(img_gray,'gray')
plt.title('img_gray')
plt.subplot(122),plt.imshow(result,'gray')
plt.title('match_template'),plt.xticks([]),plt.yticks([])
plt.show()

这里写图片描述

匹配结果如上图右所示,其中亮度较高的部分即我们所寻找的部分

接下来我们要让这张图看起来,更加明显,所以进行二值化操作,并降噪

mask = np.ones_like(result)
mask[result > 0.4] = 255
mask[result < 0.4] = 0
plt.subplot(121),plt.imshow(mask,'gray'),plt.title('threshold')

# open
kernel = np.ones((2,2),np.uint8)
th_mor = cv2.morphologyEx(mask,cv2.MORPH_OPEN,kernel, iterations = 3)
plt.subplot(122),plt.imshow(th_mor,'gray'),plt.title('open'),plt.xticks([]),plt.yticks([])
plt.show()

这里写图片描述

如此我们已经得到毛孔的轮廓图,不过这样看是不是太抽象了,ok,那么我们就把它画到原图上看一下

3.draw contours

# 寻找轮廓
 _, contour_total, _ = cv2.findContours(th_mor, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

# 绘制筛选后的轮廓
img_ground = img_o.copy()
cv2.drawContours(img_ground,new_contours,-1,(0,255,255),2)

fig = plt.figure(figsize=(12, 9))
axes = np.zeros((3, 3), dtype=np.object)
axes[0, 0] = plt.subplot(231),plt.imshow(img_o),plt.title('original image')
axes[0, 1] = plt.subplot(232),plt.imshow(img_ground),plt.title('contours')
plt.show()

这里写图片描述

至此模式匹配的简单应用就算结束了。准确率什么的仅仅凭借我们肉眼观察是无法断定的,在此我们可以人工在原图上标注出毛孔的轮廓,然后与模式匹配结果进行比较,下面贴上作者尝试标注的图与模式匹配结果的对比(人工标注比较随意)

这里写图片描述

其中第二部分,模式匹配方法应用及二值化操作过程中,参数设置决定匹配结果。
另外,在各种方法使用过程中,发现LBP效果也挺好。

补充:上述第二部分方法是采用skimage的match_template,最近因为工作需要,又做了一份opencv的方法,具体如下:

import cv2
img_match = cv2.matchTemplate(img_gray, img_kernel, cv2.TM_CCOEFF_NORMED)

# 给匹配图补黑边,解决cv2匹配过程中边缘忽略问题
img_match = cv2.copyMakeBorder(img_match,0,img_kernel.shape[0]-1,0,img_kernel.shape[1]-1,cv2.BORDER_CONSTANT,value=(0, 0, 0))  

经检测发现,两者效果接近,skimage效果稍优。

本人邮箱:craftsman.mote@gmail.com,欢迎讨论。

图像处理之模式匹配 模式匹配 使用误差平方和算法进行模式匹配 使用误差平方和进行模式匹配。将neo-temp.png在neo.png中匹配的图像使用红框框出来。 模式匹配,即寻找待匹配图像和全体图像中最相似的部分,用于物体检测任务。现在虽然使用卷积神经网络(CNN)来检测物体,但是模式识别仍然是最基本的处理方法。 下面介绍具体算法。原图像记为I(H×W)I(H\times W)I(H×W),待匹配图像为T(h×w)T(h\times w)T(h×w): 对于图像III:,for ( j = 0, H-h) for ( i = 阅读详情

相关推荐

Java内容安全风控实战:基于规则引擎与语义模型识别隐晦违规文本

内容安全风控是保障在线社区、电商评论、直播弹幕等业务合规运营的核心技术。其基本原理是通过对用户生成文本进行多维度分析,识别并过滤违规内容。传统的关键词过滤技术难以应对不断演变的网络黑话和隐晦表达,因此需要结合更智能的语义理解技术。现代内容风控方案融合了规则引擎与NLP模型,形成多层防御体系,以平衡处理效率与识别精度。规则引擎负责快速拦截已知的敏感词和模式,例如针对“痴汉”等低俗隐喻的变体进行匹配;而基于预训练模型(如BERT)的语义分析层,则能深入理解上下文,有效应对如“不死川兄弟”这类依赖特定语境和知识的

weixin_33858336的博客 1207

【 OpenCV 】MatchTemplate函数参数详解及原理分析

OpenCv给出的MatchTemplate函数,是在一幅图像中寻找与另一幅模板图像最匹配(相似)部分。 一.参数详解 MatchTemplate(InputArray image, InputArray templ, OutputArray result, int method); image:输入一个待匹配的图像,支持8U或者32F。 ...

Nick大帅仔 的博客 4万+

两大图像匹配法的对比以及使用(基于像素匹配和基于特征匹配的区别)

图像匹配的方法主要分为基于灰度值相关和基于特征提取。 基于像素匹配: 基于灰度值相关的方法直接对原图和模板图像进行操作,通过区域属性(灰度信息或频域分析等)的比较来反映他们之间的相似性。基于灰度的图像匹配具有速度、定位精度、误差估计等数据的输出。但是这种方式普遍存在的缺陷是时间复杂度高、对比图像尺寸敏感等。 原理: NCC是一基于灰度相关的算法,具有不受比例因子误差影响和抗白噪干扰能力等...

weixin_44490080的博客 1万+

python3.7运行 skimage 报错ImportError: DLL load failed:找不到指定模块

from skimage.feature import match_template 报错 原因网上查询并且可以正确解决的方法: 解决方法:下载安装numpy+mkl (下载链接:找到对应的版本下载 安装方法:1.将下载的文件移到你的python安装目录下的Lib/site-packages下 2.运行cmd 进入文件的路径,用PiP install 文件名.后缀 回车即可安装 3.运行程序,问题解决 根据python 版本选择: 参考 ...

Lily的博客 1252

Opencv:matchTemplate函数详解

前言 本文主要介绍opencv中图像匹配函数 并用示例解释和演示6中匹配方式 函数讲解 opencv实现了一部分通过模板与目标图像进行寻找最佳匹配的方面matchTemplat() , 函数声明如下所示 void cv::matchTemplate( cv::InputArray image, // 用于搜索的输入图像 cv::InputArray teml, // 用于匹配的模板,和image类型相同 cv::OutputArray result, // 匹配结果图像, 类

qq_52852138的博客 8765

45.图像的模板匹配

图像的模板匹配(Template Matching)是一种常用的图像识别和目标检测方法,通过在待搜索图像中寻找与给定模板最相似的局部区域,来实现目标的自动识别。需要注意的是,以上公式中,(x', y')为模板T中的像素坐标,(x, y)为待搜索图像I中的像素坐标,σ_I和σ_T分别表示图像I和模板T的标准差。请注意,这里的示例代码仅演示了如何使用OpenCV进行图像模板匹配,实际应用中可能需要对匹配方法、阈值等参数进行调整,以获得更好的匹配效果。字符识别:通过利用字符的模板,可以识别文本中的字符或数字。

twnkie的博客 964

python笔记

my_name='陈志隆'print('luck_number的数据类型是',type(luck_number))# python 可以动态修改变量的数据类型 通过赋不同类型的值,就可以修改luck_number='北京欢迎你'# python中允许多个变量指向同一个值运行后输出如下:D:\Anaconda\envs\run\python.exe D:\Pycharm\Project\Basic\示例3-3变量的定义和使用.pyluck_number的数据类型是 <class 'int'>

weixin_55944609的博客 137

【大二组培训】2017年电子设计大赛H题总结(软件部分)

文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as pd import matplotlib.pyplot as plt im

HAIBARA的博客 3024

skimage 学习第二天:ski官网示例程序总结(1)

skimage:

桐木舟的博客 5601

SRRC型号核准的模块豁免规则解析——如何利用完整型模块简化设备认证流程

本文详细解析了SRRC型号核准中模块豁免规则的应用,重点介绍了完整型模块的技术定义、豁免条件及实际应用场景。通过合理利用完整型模块,企业可显著简化设备认证流程,缩短上市周期并降低成本。文章还提供了模块选型指南和常见问题解决方案,帮助工程师高效应对SRRC认证挑战。

weixin_29306011的博客 934

华为防火墙双线路配置实战:5分钟搞定主备自动切换(含健康检查避坑指南)

本文详细介绍了华为防火墙双线路配置实战,包括主备自动切换和健康检查机制的优化技巧。通过智能健康检查机制,华为防火墙能实现毫秒级故障自动切换,确保网络高可用性。文章提供了从架构设计到实战配置的全流程指南,并分享了常见配置误区与解决方案,帮助中小企业快速搭建稳定可靠的网络架构。

weixin_30872337的博客 606

模板匹配(Match Template)

作者:王先荣 前言    模板匹配是在图像中寻找目标的方法之一。Come On, Boy.我们一起来看看模板匹配到底是怎么回事。   模板匹配的工作方式    模板匹配的工作方式跟直方图的反向投影基本一样,大致过程是这样的:通过在输入图像上滑动图像块对实际的图像块和输入图像进行匹配。    假设我们有一张100x100的输入图像,有一张10x10的模板图像,查找的过程是这样的:  (1)从输...

weixin_33750452的博客 1061

基于Python的网贷平台数据爬虫实战:Scrapy+Selenium+反反爬策略

python复制下载# items.py本文详细介绍了如何使用Python构建一个完整的网贷平台数据爬虫系统,涵盖了从基础爬取到高级反反爬策略的全套解决方案。我们使用了Scrapy框架作为基础,结合Selenium处理动态内容,实现了多种反反爬策略,并探讨了分布式爬虫的实现方式。机器学习识别验证码基于深度学习的网页结构变化检测自动化行为模拟的更精细控制基于Kubernetes的弹性爬虫集群。

2201_76125261的博客 1560

skimage.feature函数使用说明

featureGenerate noisy image of a squareFirst trial with the Canny filter, with the default smoothingIncrease the smoothing for better resultsonly select one feature over two skimage.feature.blob_dog(image[, min_sigma, …]) Finds blobs in the given grayscale

weixin_42535423的博客 6672

基于Qt的工业组态软件开发:图形绘制与TCP通讯实现

在数据接收时,通过 readyRead 信号触发解析函数,校验数据包完整性后提取有效数据,并更新对应图形元素的状态,例如根据温度值改变矩形的填充色,实现设备状态可视化。测试阶段,我们将软件部署到Windows工控机,连接PLC设备进行通讯测试,结果表明图形元素响应及时,TCP数据传输稳定,满足工业现场的基本需求。综上所述,基于Qt的组态软件开发,核心在于利用 QGraphicsView 框架实现图形元素的灵活绘制与管理,结合 QTcpSocket 完成工业数据的可靠交互。

谢谢大家的关注和点赞!这里只有纯纯的知识干货,没有一句废话。希望能实实在在帮到大家~要是觉得有用,别忘了给我点支持哟,你 273

移位寄存器——用Verilog实现串入串出、串并和并串转换并进行Modelsim仿真

用Verilog实现串并转换 首先我们先要了并串和串并转换的原理 并串转换:先将八位数据暂存于一个八位寄存器器中,然后左移输出到一位输出端口,这里可以通过一个“移位”来实现,相当于实现了移位寄存器的功能。 串并转换:新输入的位值成为原来数据的最低位,将原来数据的最高位舍去,这里可以通过一个简单的“连接符”来实现。 我们这里采用两种方式来进行串并转换 一:lsb优先 Least Significant Bit,最低比特,最低位优先 二:msb优先 Most Significant Bit,最高比特,

H19981118的博客 2万+

Opencv3.4.4 利用matchTemplate方法实现多目标匹配

matchTemplate实现单目标匹配的方法很多在此不赘述,本文主要提供多目标匹配的方法。 首先matchTemplate( InputArray image, InputArray templ,OutputArray result, int method, InputArray mask = noArray() );三个参数Result,反应的是样本与待测目标的...

qq_34902877的博客 8453

【WRF实操】四层嵌套网格设计-以粤港澳大湾区GBA为例

四层嵌套网格设计-以粤港澳大湾区GBA为例

WW、forever的博客 822

008 OpenCV matchTemplate 模板匹配

008 OpenCV matchTemplate 模板匹配

整理ing 2305

河洛理数【陈抟】每月月卦推演每日运卦

Step2:每卦中的日爻遇到二十四节气中的当日为节(月初)或气(月中)的时候,所代表的日期需要变更。正常来说,屯卦分别代表初一到初六,但是由于当月初二时立秋节,所以初爻就不能作为初一、而是要作为立秋节开始时(文中还精算到了立秋是从初二的午时开始),如下。说的代表月运的基础卦上进行当月日卦的推演方式。老样子,我们还是按照书中举得例子卦在这边进行一步步的推演,最后做总结。Step1:从月卦爻下一爻开始,自下而上,进行五个爻的爻变,新推演的每个卦代表六天,如下。假设当月月卦是即济卦,月爻在二爻,如图所示(

Daniel专栏 764

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

OpenCV模板匹配(cv2.matchTemplate)

添加链接描述 在本教程中,您将学习如何使用OpenCV和 cv2.matchTemplate 功能。 除了轮廓过滤和处理之外,模板匹配可以说是对象检测的最简单形式之一: 它实现简单,只需要2-3行代码 模板匹配计算效率高 不需要执行阈值化,边缘检测等操作即可生成二进制图像(例如轮廓检测和处理) 通过基本扩展,模板匹配可以检测输入图像中相同/相似对象的多个实例(我们将在下周介绍) 当然,模板匹配不是完美的。尽管有很多积极因素,但是如果输入图像中存在变化的因素,包括旋转,缩放,视角等变化,模板匹配很快就会失败

此木子 8万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

OpenCV3学习(8.3)模板匹配函数matchTemplate详解

opencv实现了一部分通过模板与目标图像进行寻找最佳匹配的方面matchTemplat();这个方法网上有很多讲解,基本思想是将模板图像在目标图像上滑动逐一对比,通过统计的基本方法进行匹配,比如方差检验,相关性检验等方法来寻找最佳匹配; void cv::matchTemplate( cv::InputArray image, // 用于搜索的输入图像, 8U 或 32F, ...

知识搬运工的博客 3万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

模式匹配原理及实现

一. 模式匹配简介: 模式匹配 ——> 寻找待匹配图像和全体图像中最相似的部分,常用于物体检测任务。虽然现在使用卷积神经网络做物体检测任务有更好的效果,但是模式匹配是最基本的物体检测方法,它很基础,很重要。 二. 模式匹配算法: 原图像为 I(H X W),待匹配图像为 T(h X w)。 1. 对于图像 I:,for j in range(H-h):fo...

Ibelievesunshine的博客 2968

【opencv 450 Image Processing】Template Matching模板匹配

Goal 在本教程中,您将学习如何: 使用 OpenCV 函数 matchTemplate() 搜索图像补丁和输入图像之间的匹配 使用 OpenCV 函数 minMaxLoc() 查找给定数组中的最大值和最小值(以及它们的位置)。 Theory What is template matching? 模板匹配是一种用于查找与模板图像(补丁)匹配(相似)的图像区域的技术。 虽然补丁patch必须是矩形,但可能并非所有矩形都是相关的。 在这种情况下,可以使用掩码来隔离应用于查找匹配的补丁patc

cxyhjl的博客 2076

利用OpenCV的函数matchTemplate()实现在图像中寻找、检索、搜索模板图像【图像模板匹配】

利用OpenCV的函数matchTemplate()实现在图像中寻找、检索、搜索模板图像【图像模板匹配】

昊虹AI笔记 2万+
上一篇: BoostingClassifier
下一篇: OpenCV的等高线画法
奥特曼不秃头
博客等级 码龄10年 24粉丝 24原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奥特曼不秃头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值