模板匹配与霍夫变换

模板匹配基础

模板匹配就是在大图中找小图,也就说在一幅图像中寻找另一幅模板图像的位置。
模板匹配与霍夫变换_第1张图片
在OpenCV内,模板匹配是使用函数cv2.matchTemplate()实现的。该函数的语法格式为:
result=cv2.matchTemplate(image,temp1,method[,mask])
image为原始图像,必须是8位或者32位的浮点型图像。
temp1为模板图像。它的尺寸必须小于或等于原始图像,并且与原始图像具有同样的类型。
method为匹配方法。该参数通过TemplateMatchModes实现,有6种可能的值
模板匹配与霍夫变换_第2张图片minMaxLoc
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(src)

min_val为返回的最小值
max_val为返回的最大值
min_loc为最小值的位置
Max_loc为最大值的位置
模板匹配的操作方法是将模板图像B在图像A上滑动,遍历所有像素以完成匹配。

模板匹配的实现过程

工作原理:在带检测图像上,从左到右,从上向下计算模板图像与重叠子图像的匹配度,匹配程度越大,两者相同的可能性越大。
局限性:
它只能进行平行移动,若原图像中的匹配目标发
生旋转或大小变化,该算法无效。
模板匹配与霍夫变换_第3张图片#导入需要的库
import cv2
import numpy as np

#Matplotlib是RGB
import matplotlib.pyplot as plt
%matplotlib inline

#定义显示图片的函数,避免重复代码
def cv_show(name, img):
cv2.imshow(name, img)
cv2.waitKey()
cv2.destroyAllWindows()

#读取模板图片
template = cv2.imread(“lena_eye.jpg”)
cv_show(“template”,template)

#读取检测图片
img = cv2.imread(“lena.jpg”)
cv_show(“img”, img)

#获取模板的大小
h, w = template.shape[:2]
模板匹配与霍夫变换_第4张图片模板匹配与霍夫变换_第5张图片印花检测
模板匹配与霍夫变换_第6张图片检测多个印花
模板匹配与霍夫变换_第7张图片

霍夫变换

霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,来检测任意能够用数学公式表达的形状,即使这个形状被破坏或者有点扭曲。
霍夫变换将图像空间转变为参数空间,在参数空间中执行投票来决定物体的形状。
1.一条直线可由两个点A=(X1,Y1)和B=(X2,Y2)确定(图a 笛卡尔坐标系)
2.y=kx+q也可以写成关于(k,q)的函数表达式(图b 霍夫空间)
模板匹配与霍夫变换_第8张图片3.三个点共线的情况
4. 霍夫变换的后处理的基本方式:选择由尽可能多直线汇成的点。
模板匹配与霍夫变换_第9张图片5.k=∞是不方便表示的,而且q怎么取值呢,这样不是办法。因此考虑将笛卡尔坐标系换为:
模板匹配与霍夫变换_第10张图片直线检测
lines = cv2.HoughLines(image,rho,theta,threshold)

image: 待处理图像。
圆检测rho: (ρ,θ)中ρ的精度。
theta: (ρ,θ)中θ的精度。
threshold: 阈值,(ρ,θ)对应的最低投票数>=threshold被检测为一条线。

lines = cv2.HoughLinesP(image, rho, theta, threshold, minLineLength, maxLineGap)

image: 待处理图像。
rho: (ρ,θ)中ρ的精度。
theta: (ρ,θ)中θ的精度。
threshold: 阈值,(ρ,θ)对应的最低投票数。>=threshold被检测为一条线。
minLineLength:最小长度
maxLineGap:共线线段之间的最小间隔

圆检测
lines = cv2.HoughCircles(image, method, dp, minDist)

image: 待处理图像。
method: 定义检测图像中圆的方法,使用
cv2.HOUGH_GRADIENT。
dp: 累加器分辨率与图像分辨率的反比。
threshold: 阈值,(ρ,θ)对应的最低投票数。>=threshold被检测为一条线。
minDist:检测到的圆的中心,(x,y)坐标之间的最小距离

HoughLines
模板匹配与霍夫变换_第11张图片模板匹配与霍夫变换_第12张图片模板匹配与霍夫变换_第13张图片HoughLinesP
模板匹配与霍夫变换_第14张图片模板匹配与霍夫变换_第15张图片
HoughCircles
模板匹配与霍夫变换_第16张图片模板匹配与霍夫变换_第17张图片

你可能感兴趣的:(OpenCV,opencv)