Fu Xianjun. All Rights Reserved
一. 模板匹配的概念
二. 实战演练:印花检测
二. 霍夫变换的概念
四. 实战演练:车道检测
重点:模板匹配的方法、霍夫变换的方法
难点:模板匹配及霍夫变换的实战
模板匹配是指在当前图像A内寻找与图像B最相似的部分,般将图像 A称为输入图像,将图像B称为模板图像。模板匹配的操作方法是将模板图像B在图像A上滑动,遍历所有像素以完成匹配。
例如,在图15-1中,希望在图中的大图像“lena” 内寻找左上角的“眼睛”图像。此时,大图像“lena”是输入图像,“眼睛”图像是模板图像。查找的方式是,将模板图像在输入图像内从左上角开始滑动,逐个像素遍历整幅输入图像,以查找与其最匹配的部分。
在OpenCV内,模板匹配是使用函数ov2 machemplateQ实现的。该函数的语法格式为:result = cv2.matchTemplate(image, templ, methodI, mask ) )
其中:
*image 为原始图像,必须是8位或者32位的浮点型图像
*templ 为模板图像。它的尺寸必须小于或等于原始图像,并且与原始图像具有同样的类
*method为匹配方法。该参数通过TemplateMatchModes实现
模板匹配的操作方法是将模板图像B在图像A上滑动,遍历所有像素以完成匹配。
工作原理:在带检测图像上,从左到右,从上向下计算模板图像与重叠子图像的匹配度,
匹配程度越大,两者相同的可能性越大
局限性:
它只能进行平行移动,若原图像中的匹配目标发
生旋转或大小变化,该算法无效
result = cv2.matchTemplate(image, template,method)
其中
Result为运行结果
Image为待处理图像
Template为模板图像
Method为要采取的方法
method:方法:有以下6种
差值平方和匹配 CV_TM_SQDIFF
标准化差值平方和匹配 CV_TM_SQDIFF_NORMED
相关匹配 CV_TM_CCORR
标准相关匹配 CV_TM_CCORR_NORMED
相关匹配 CV_TM_CCOEFF
标准相关匹配 CV_TM_CCOEFF_NORMED
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(src)
其中
min_val为返回的最小值
max_val为返回的最大值
mothodmin_loc为最小值的位置
Max_loc为最大值的位置
1.1导入需要的库
1.2读取模板图片
1.3读取检测图片
1.4获取模板的大小
1.5进行匹配
霍夫变换是种在图像中 寻找直线、圆形以及其他简单形状的方法。霍夫变换采用类似于投票的方式来获取当前图像内的形状集合,该变换由Paul Hough (雀夫)于1962年首次提出。最初的霍夫变换只能用于检测直线,经过发展后,霍夫变换不仅能够识别直线,还能识别其他简单的图形结构,常见的有圆、椭圆等
本章主要介绍霍夫直线变换和霍夫圆变换。霍夫直线变换用来在图像内寻找直线,霍夫圆变换用来在图像内寻找圆。在OpenCV 中,前者可以用函数cv2.HoughLines()和 函数cv2.HoughLinesP0实现,后者可以用函数cv2.HoughCircles0实现
OpenCV提供了函数cv2 HougLineSO和函数cv2.HoughLinesPO用来实现霍夫直线变换。本节首先介绍霍夫变换的基本原理,然后分别介绍这两个函数的基本使用方法
1.一条直线可由两个点A=(X1,Y1)和B=(X2,Y2)确定(图a 笛卡尔坐标系)
2.y=kx+q也可以写成关于(k,q)的函数表达式(图b 霍夫空间)
3.三个点共线的情况
4. 霍夫变换的后处理的基本方式:选择由尽可能多直线汇成的点
5.k=∞是不方便表示的,而且q怎么取值呢,这样不是办法。因此考虑将笛卡尔坐标系换为:
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)坐标之间的最小距离