图像处理之图像匹配

简介: 笔记

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


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


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


**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之旅

目录
相关文章
|
5月前
|
算法 计算机视觉
图像处理之基于高斯金字塔的图像融合
图像处理之基于高斯金字塔的图像融合
41 3
|
5月前
|
编解码 算法 计算机视觉
图像处理之高斯金字塔
图像处理之高斯金字塔
43 3
|
5月前
|
计算机视觉
图像处理之水纹效果
图像处理之水纹效果
28 1
|
5月前
|
资源调度 计算机视觉
图像处理之图像加噪
图像处理之图像加噪
55 0
图像处理之图像加噪
|
5月前
|
计算机视觉
图像处理之图像梯度效果
图像处理之图像梯度效果
32 0
|
算法 数据安全/隐私保护 计算机视觉
图像处理基础
图像处理基础
105 0
|
算法 计算机视觉 C++
【C++】图像处理中的滤波算法(二)
总结一下图像处理中常用的几种滤波算法,包括中值、均值、高斯、双边、引导滤波这五种,主要用于图像平滑去噪方面。滤波算法的基本思路,就是采用周边像素,加权平均计算一个新的像素,来缓减噪声对当前像素的影响。
148 0
【C++】图像处理中的滤波算法(二)
|
算法 API 计算机视觉
【C++】图像处理中的滤波算法(三)
总结一下图像处理中常用的几种滤波算法,包括中值、均值、高斯、双边、引导滤波这五种,主要用于图像平滑去噪方面。滤波算法的基本思路,就是采用周边像素,加权平均计算一个新的像素,来缓减噪声对当前像素的影响。
218 0
【C++】图像处理中的滤波算法(三)
|
算法 计算机视觉 C++
【C++】图像处理中的滤波算法(一)
总结一下图像处理中常用的几种滤波算法,包括中值、均值、高斯、双边、引导滤波这五种,主要用于图像平滑去噪方面。滤波算法的基本思路,就是采用周边像素,加权平均计算一个新的像素,来缓减噪声对当前像素的影响。
404 0
【C++】图像处理中的滤波算法(一)
|
算法 API 计算机视觉
【C++】图像处理中的滤波算法(四)
总结一下图像处理中常用的几种滤波算法,包括中值、均值、高斯、双边、引导滤波这五种,主要用于图像平滑去噪方面。滤波算法的基本思路,就是采用周边像素,加权平均计算一个新的像素,来缓减噪声对当前像素的影响。
397 0
【C++】图像处理中的滤波算法(四)