图像处理之图像匹配

简介: 笔记

该说图像匹配了,图像匹配在图片处理中的作用举重若轻,今天就带大家入门图像匹配,简单介绍一下基础的图像匹配吧。


何为图像匹配呢?在原图片中扣出一块区域,然后通过这块区域的像素找到它在原始图片的位置,在今天所讲的是如此。


来看看百度百科给下的定义吧: 通过对影像内容、特征、结构、关系、纹理及灰度等的对应关系,相似性和一致性的分析,寻求相似影像目标的方法。


**1.**通过欧式距离来匹配图像。


将所有像素值看成一个坐标(不用管它是多少维的),通过最小化这两个坐标的欧式距离来确定最终在原始图像上匹配的位置。

欧式距离公式为:

6.png

下面通过代码来演示如何实现

import cv2 
import numpy as np
def Distance(x,y):   #计算欧式距离
  x = np.array(x)
  y = np.array(y)
  return np.sqrt(np.sum((x-y)*(x-y)))
img1 = cv2.imread('1.jpg')  #原始图片
img2 = img1[300:400,300:400]  #要匹配的区域
h = img2.shape[0]
w = img2.shape[1]
mins = le5   距离的最小值
for i in range(0,img1.shape[0]-h):  #遍历图片
  for j in range(0,img1.shape[1]-w):
      dist = img1[i:i+h,j:j+w]
      loss = Distance(dist,img2)
      if loss < mins:
        now_h = i
        now_w = j     #记住当前目标区域左上角的位置
        mins = loss   #更新最小值
cv2.rectangle(img1,(now_w,now_h),(now_w+w,now_h+h),(255,0,0))
cv2,imshow('dist',img1)
cv2,waitKey(0)

2.通过差分矩阵求和 均值来匹配

原理: 目标区域的像素值 - 模板区域的像素值,然后根据其和的大小 或者 其均值的大小来确定目标区域。

下面直接通过代码来演示

import cv2
import numpy as np
img1 = cv2.imread("1.jpg")
img2 = img1[100:250,200:350]
h , w = img2.shape[:2]
findpt = []
for i in range(0,img1.shape[0]-h):
    for j in range(0,img1.shape[1]-h):
      com = img1[i:i+h,j:j+w] - img2
      if np.mean(com)<20:    #np.sum(com) <1
      findpt.append(i)
      findpt.append(j)
      break
 if len(findpt)>0:
    cv.rectangle(img1,(findpt[1],findpt[0]),(findpt[1]+w,findpt[0]+h),(255,0,0))
cv.imshow('dsts',img1)
cv.waitKey(0) 

今天的图像匹配的入门基础讲解就说到这里了,下次再见。

Thank for your reading !!!!

公众号:FPGA之旅

目录
相关文章
|
8月前
|
算法 数据安全/隐私保护 计算机视觉
图像处理基础
图像处理基础
65 0
|
算法 计算机视觉 C++
【C++】图像处理中的滤波算法(一)
总结一下图像处理中常用的几种滤波算法,包括中值、均值、高斯、双边、引导滤波这五种,主要用于图像平滑去噪方面。滤波算法的基本思路,就是采用周边像素,加权平均计算一个新的像素,来缓减噪声对当前像素的影响。
349 0
【C++】图像处理中的滤波算法(一)
|
算法 计算机视觉 C++
【C++】图像处理中的滤波算法(二)
总结一下图像处理中常用的几种滤波算法,包括中值、均值、高斯、双边、引导滤波这五种,主要用于图像平滑去噪方面。滤波算法的基本思路,就是采用周边像素,加权平均计算一个新的像素,来缓减噪声对当前像素的影响。
111 0
【C++】图像处理中的滤波算法(二)
|
算法 API 计算机视觉
【C++】图像处理中的滤波算法(三)
总结一下图像处理中常用的几种滤波算法,包括中值、均值、高斯、双边、引导滤波这五种,主要用于图像平滑去噪方面。滤波算法的基本思路,就是采用周边像素,加权平均计算一个新的像素,来缓减噪声对当前像素的影响。
162 0
【C++】图像处理中的滤波算法(三)
|
算法 API 计算机视觉
【C++】图像处理中的滤波算法(四)
总结一下图像处理中常用的几种滤波算法,包括中值、均值、高斯、双边、引导滤波这五种,主要用于图像平滑去噪方面。滤波算法的基本思路,就是采用周边像素,加权平均计算一个新的像素,来缓减噪声对当前像素的影响。
317 0
【C++】图像处理中的滤波算法(四)
|
图形学 计算机视觉 C++
GDI+——常用的图像处理技术(三)
GDI+——常用的图像处理技术(三)
264 0
GDI+——常用的图像处理技术(三)
|
存储 图形学 计算机视觉
GDI+——常用的图像处理技术(一)
GDI+——常用的图像处理技术(一)
167 0
GDI+——常用的图像处理技术(一)
|
图形学 计算机视觉
GDI+——常用的图像处理技术(二)
GDI+——常用的图像处理技术(二)
140 0
GDI+——常用的图像处理技术(二)
|
Web App开发 计算机视觉
|
Web App开发 算法 C#
我学习图像处理的小结
前一段时间,我一直在制作OpenCV基础知识的课件(《学习OpenCV3.0初级实战视频课程》 http://edu.51cto.com/course/10381.html,《学习OpenCV3.0中级实战视频课程》http://edu.51cto.com/course/10712.html)。
1298 0