之前写过如何获得一个指静脉的二值化特征图像,传送门:opencv-python 用Gabor滤波器实现指静脉血管区域二值化纹理特征提取

然后这篇文章记录我是如何来做特征模板匹配的。

匹配评分原理:

原理:根据上述二值纹理特征提取方法,获取手指静脉纹路的二值

纹理图像将已注册图像的 ROI 区域与待认证图片的 ROI 区域均采用二值纹理特征提取方法获得两张纹理前景图像,然后计算两张纹理前景图像的交集(重叠)像素点数与两张纹理前景图像的并集像素点数之比,这个比值即为两张图像的匹配分数。

但是在匹配过程中,为了使得模板同类图片(同一手指图片)在匹配中得到更高的分数,同时让其他类图片的分数(相对)更小。我自己设计了基于像素对比的另外一种方法:用模板和待认证图片的交集比上模板的非运算和待认证图片的交集。用式子表示为:

尺寸匹配:

要对得到的ROI区域二值特征进行逐个像素的比对,必须使得输入的待匹配图片和原来的图像尺寸一致。在opencv中,可以采用:


Dst=cv.resize(Src,(cols,rows),0,0,interpolation=cv.INTER_NEAREST)

我选择的是最近邻插值法(cv.INTER_NEAREST),原因很简单:因为参与对比的图片都是0,255的二值图像,如果采用双线性插值法,将会计算出其他的像素值,这不便于后期的处理。

开始匹配:

接下来就很简单了,无非是bitwise_or()和bitwise_and()和,由于图片中的像素值都是255,直接用 img.sum()/255就可以知道图片里面有多少个非零像素了。这里贴一下我的代码和效果:

def bf_match(template,bf1):  # template is template,bf1 is the test image,they are both binary feature(0 or 255)rows,cols=template.shapeinv_template=cv.bitwise_not(template)#plt.imshow(inv_template);plt.show()bf1=cv.resize(bf1,(cols,rows),0,0,interpolation=cv.INTER_NEAREST)and_img=cv.bitwise_and(template,bf1)#or_img=cv.bitwise_or(template,bf1)and_inv_img=cv.bitwise_and(inv_template,bf1)#result=result_img.sum()/or_img.sum()result=and_img.sum()/and_inv_img.sum()plt.imshow(and_img)plt.show()return result

效果如下:

(感觉之前基于Gabor的二值特征提取还是做的太粗糙了!!)

点个赞噢亲~

opencv-python 二值图像的模板匹配实现相关推荐

  1. python opencv模板匹配多目标_基于opencv的多目标模板匹配

    利用opencv进行多目标模板匹配,只要是利用其matchTemplate函数,但在多目标(这里是讨论目标图片中不同大小模板的匹配),以下贴出代码和图片,供大家参考: #include #includ ...

  2. OpenCV 学习笔记(模板匹配)

    OpenCV 学习笔记(模板匹配) 模板匹配是在一幅图像中寻找一个特定目标的方法之一.这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否"相似",当相似度足够 ...

  3. OpenCV实现NCC多角度模板匹配(附源码)

    效果预览 OpenCV实现NCC多角度模板匹配  源码下载与参考链

  4. OpenCV基于形状的模板匹配

    OpenCV基于形状的模板匹配 引言 基于形状的匹配算法 具体代码 KcgMatch.h KcgMatch.cpp main.cpp 匹配的结果 引言 在OpenCV中有个用于模板匹配的基本函数mat ...

  5. OpenCV之特征点模板匹配

    OpenCV之特征点模板匹配 版权声明:博文为博主原创文章,转载请注明出处 :https://blog.csdn.net/ganbelieve/article/details/89959505 介绍一 ...

  6. python批量实现模板匹配处理,并将图片进行标记和裁剪保存

    简介 主要是通过python的opencv进行模板匹配识别到想要得到的物体: 然后通过opencv进行裁切图片,得到最终需要的图片 核心内容 ①模板匹配,带有nms的模板匹配 ②批量处理图片,并保存 ...

  7. OpenCV 第七章 模板匹配和图像分割

    一.模板匹配 定义:让模板图像在输入图像中滑动逐像素遍历整个图像进行比较,查找出与模板图像最匹配的部分. 单目标匹配 定义:输入图像中只存在一个可能匹配结果 基本格式如下: result = cv2. ...

  8. 【opencv学习】【模板匹配】

    今天学习模板匹配 模板图片 目标图像 import cv2 import matplotlib.pyplot as plt# 模板匹配的原理: # 一个模板图像在目标图像上机芯从左到右从上到下进行滑动 ...

  9. OpenCV笔记整理【模板匹配】

    1. 模板匹配 模板匹配就是在图像A中寻找与图像B最相似的部分,一般将图像A称为输入图像,图像B称为模板图像.操作方式是B在A图像上从左到右自上而下滑动,遍历所有的像素. 模板匹配函数: result ...

最新文章

  1. 比起VR高端设备市场,三星或对移动VR平台更感兴趣
  2. python语法详解大全_笔记:Python 语法要点汇总
  3. Leetcode 344. 反转字符串 (每日一题 20210812)
  4. 关于Java中final关键字的详细介绍
  5. Entity Framework 与 LINQ to SQL
  6. Leo的AR代码学习之create-react-class
  7. 用matlab做纹理合成,关于图像纹理合成的Matlab例程
  8. 拉格朗日插值_拉格朗日插值定理的理论基础
  9. Linux内核基础--事件通知链(notifier chain)【转】
  10. python中组合框_Tkinter Python中的多个组合框
  11. PAT A1053 Path of Equal Weight [树的DFS遍历]
  12. 卧槽!迅雷的代码竟然被扒了精光!
  13. MATLAB自带的遗传算法工具箱(GADS)
  14. php8新特性全览【超详细】
  15. 《网站推荐》音乐下载, 系统下载
  16. python绘制绝对值正弦曲线_Python图形绘制操作之正弦曲线实现方法分析
  17. 在连接至 Steam 服务器时发生了一个错误。请稍后重试。
  18. 滚滚长江东逝水(三国演义插曲)铃声 滚滚长江东逝水(三国演义插...
  19. matlab 高级绘图函数
  20. 【论文简述】Rethinking Depth Estimation for Multi-View Stereo: A Unified Representation(CVPR 2022)

热门文章

  1. 佳能Canon imageRUNNER C6000 一休机驱动
  2. 如何打开sln文件并显示窗口_在本机打开别人的sln文件
  3. 起诉18年,Linux 源码“抄袭”案以1425万美元和解
  4. arduino教程-08.超声波的应用
  5. 餐饮店实现扫码点餐、语音播报、自动打印厨房单结账单
  6. xp补丁导致 vs2008 出现 尝试读取或写入受保护的内存。这通常指示其他内存已损坏 的解决办法
  7. BLE Zigbee Wifi低功耗芯片选型策略
  8. 【多线程基础】 Java 线程的几种状态
  9. 【转】什么是好的网页设计
  10. 破解winScp工具 保存在本地的 密码