图像模板匹配算法,opencv模板匹配算法

  图像模板匹配算法,opencv模板匹配算法

  以前,我写过如何获得手指静脉的二值特征图像。Portal: opencv-python使用Gabor滤波器提取手指静脉区域的二值纹理特征。

  然后这篇文章记录了我是怎么做特征模板匹配的。

  匹配评分原理:

  原理:根据上面的二值纹理特征提取方法,可以得到手指静脉纹理的二值。

  纹理通过二值纹理特征提取注册图像的ROI和待认证图像的ROI,得到两幅纹理前景图像,然后计算两幅纹理前景图像的相交(重叠)像素与两幅纹理前景图像的并集像素的比值,即为两幅图像的匹配得分。

  但是在匹配过程中,为了使模板的同类图片(同一张手指图片)在匹配中获得更高的分数,同时使其他类图片的分数(相对)更小。我设计了另一种基于像素比较的方法:利用模板与待认证图像的交集来比较前一个模板的非运算与待认证图像的交集。由公式表示:

  尺寸匹配:

  为了逐像素地比较ROI区域的二值特征,待匹配的输入图像必须具有与原始图像相同的尺寸。在opencv中,您可以采用:

  DST=cv。Resize (src,(cols,rows),0,0,插值=cv。间_最近)。我选择了最近邻插值(cv。inter _ nearest)原因很简单:因为对比的图片都是0,255的二值图像,如果采用双线性插值,就会被计算出来。

  开始匹配:

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

  def bf_match(template,bf1): # template是模板,bf1是测试图像,它们都是二元特征(0或255)行,cols=template . shape inv _ template=cv . bitwise _ not(template)# PLT . im show(inv _ template);plt.show() bf1=cv.resize(bf1,(cols,rows),0,0,插值=cv。INTER _ NEAREST)and _ img=cv . bitwise _ and(template,BF1)# or _ img=cv . bitwise _ or(template,1)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 . im。

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

  点个赞噢亲~

  如何给HTML div的三个边添加边框

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • opencv图像识别数字,opencv 识别
  • opencv图像识别数字,opencv 识别,如何基于opencv实现简单的数字识别
  • opencv图像的旋转角度计算,opencv图像仿射变换
  • opencv图像的旋转角度计算,opencv图像仿射变换,OpenCV图像几何变换之透视变换
  • opencv图像的旋转角度计算,opencv 旋转任意角度
  • opencv图像的旋转角度计算,opencv 旋转任意角度,opencv图片的任意角度旋转实现示例
  • opencv图像处理函数,opencv图像轮廓合并
  • opencv图像处理函数,opencv图像轮廓合并,OpenCV图像处理之七种常用图像几何变换
  • opencv双线性插值函数,opencv 图像插值
  • LBPH人脸识别,基于opencv的人脸识别技术
  • LBPH人脸识别,基于opencv的人脸识别技术,Opencv LBPH人脸识别算法详解
  • ,,OpenCV黑帽运算(BLACKHAT)的使用
  • opencv双线性插值函数,opencv 图像插值,C++ OpenCV实现图像双三次插值算法详解
  • ,,C语言 OpenCV实现柱面投影
  • ,,C++ Opencv imfill孔洞填充函数的实现思路与代码
  • 留言与评论(共有 条评论)
       
    验证码: