目录

1、图像模式匹配概念

2、影响图像模式匹配的因素

3、灰度匹配

4、几何匹配

5、黄金模板比较


图像模式匹配是指通过分析模板图像和目标图像中灰度、边缘、外形结构以及对应关系等特征的相似性和一致性,从目标图像中寻找与模板图像相同或相似区域的过程。图像模式匹配是机器视觉系统最重要的功能之一,基于它可以实现目标对准、测量、检测以及分类等应用。

1、图像模式匹配概念

图像的模式匹配过程一般包括学习(Learning)和匹配(Matching)两个阶段。在学习阶段,算法会从模板图像中提取用于进行图像匹配的特征信息,并将它们以便于搜索的方式存放在模板图像中以备后用。在图像匹配阶段,算法从被测目标图像中提取同类型的特征信息,分析它们与模板图像中特征信息的相似性和一致性,以确定目标图像中与模板图像相匹配的区域。图像匹配过程一般以模板图像和被测的目标图像作为输入,输出匹配目标的数量、位置、角度相对于模板的缩放比例,以及用得分值表示的与模板图像之间的相似程度。

根据所基于的特征模式不同,图像模式匹配可分为灰度匹配、几何匹配和色彩匹配几大类,在本章中仅讲解灰度匹配和几何匹配。

  • 图像的灰度匹配(Grayscale Matching)以像素灰度或灰度梯度信息为特征,通过计算模板图像与目标图像区域之间的归一化的互相关值(Normalized Cross-Correlation)来确定匹配区域。
  • 几何匹配(Geometric Matching)又可分为基于边缘曲线(Edge Based)的几何匹配和基于目标外形特征(Feature Based)的几何匹配两大类。基于边缘曲线的几何匹配使用图像中边缘曲线上每个像素点的梯度角度和像素相对模板中心的位置,实现图像的模式匹配过程。基于目标外形特征的几何匹配则先从图像中的边缘曲线中提取角点、线段、矩形、圆形或椭圆等几何形状,然后再基于这些几何形状进行图像匹配。

下图对几类图像模式匹配过程的典型应用、算法、优缺点以及常见输出进行了汇总。其中也会绍图像的灰度匹配和几何匹配技术,色彩匹配将在后文再进行详细介绍。

2、影响图像模式匹配的因素

要使机器视觉系统的图像模式匹配过程具有实用性,必须设法使模式匹配过程对以下几种环境仍能保持相对一致的计算结果。

1、平移和旋转

机器视觉系统的被测目标不一定都固定在视场内某一位置,而是可能在视场内平移或旋转。图像模式匹配算法应仍具有平移不变性(Shift-Invariant)或旋转不变性(RotateIlnvariant)。也就是说,即使被测目标在视场内有平移或旋转,算法也能准确匹配图像中的被测目标,并返回其位置和相对模板图像的旋转角度。

2、尺度变化

图像模式匹配算法应仍具有尺度不变性(Scale-Invariant)。当被测目标的尺寸在机器视觉系统采集到的多个图像中不固定时,算法应能对多个图像具有相对一致的匹配结果,并返回匹配目标相对于模板图像的缩放比例。

3、目标交叠

图像模式匹配算法应具有对交叠(Partial Occlusion)目标检测的能力,当被测目标之间有相互覆盖的情况时,算法应仍能正确匹配到目标,并返回被覆盖部分占整个目标的比例。下图给出了一个图像中被测目标旋转、缩放及交叠的例子。

4、光源强度线性或非线性变化

图像模式匹配算法应对光源强度线性或非线性变化保持不变性。当机器视觉系统的光源强度整体变暗或变亮(图像整体变暗或变亮),或视场中的光强呈非线性变化(图像中各部分亮度不同)时,算法仍能获得相对一致的匹配结果。下图显示了光源强度线性变化和非线性变化时对机器视觉系统所采集图像的影响。

5、噪声和模糊目标

图像模式匹配过程在图像中含有噪声或者被测目标模糊不清时,仍能准确匹配被测目标。例如对于下图(b)和(c)中的噪声图像和模糊目标,算法应仍能正确从中匹配模板图像所示的电路板一角。

3、灰度匹配

之前博文讲到,图像的灰度匹配过程以像素灰度或灰度梯度信息为特征,通过计算模板图像与目标图像区域之间的归一化的互相关值(Normalized Cross-Correlation)来确定匹配区域。

常见的图像灰度匹配方法包括金字塔匹配法(Pyramidal Matching)和低差异采样匹配法(Low Discrepancy Sampling,LDS)两大类,其中金字塔匹配法又可分为基于灰度(Grayscale Based)的金字塔匹配法和基于阈值过滤梯度(GradientsBased)的金字塔匹配法两种。

下图对几种图像灰度匹配方法的特征、匹配条件和策略以及优缺点进行了汇总:

Nl Vision使用位于LabVIEW的视觉与运动→Machine Vision→Searching andMatching函数选板中的IMAQ Learn Pattern 4和位于Machine Vision→Find Patterns函数选板中的IMAQ Find Pattern 4封装了上述3种图像灰度匹配方法。

其中,IMAQ Learn Pattern 4用于对模板进行学习,IMAQ Match Pattern 4用于进行模板匹配,如下图所示:

函数说明及使用可参见帮助手册:

4、几何匹配

图像灰度匹配具有平移不变性,且能将旋转不变性和实时性提高到实际应用可接受的范围,但是它却不支持尺度不变性。与图像的灰度匹配不同,图像的几何匹配过程以被测目标的边缘轮廓或其几何外形作为特征,通过比较模板图像与目标图像中这些特征的差异来确定匹配区域。而被测目标的几何外形是综合角点、线段、矩形、圆形或椭圆等边缘曲线对目标的抽象描述。相对于灰度匹配来说,几何匹配具有平移/旋转不变性、尺度不变性、重叠不变性、线性或非线性光源变化不变性、对比度反转不变性以及抗噪性强等优点。

图像几何匹配分为基于边缘曲线的几何匹配和基于目标外形特征的几何匹配两种,两种方法均以边缘曲线提取(Curve Extraction)为基础。

基于边缘曲线的几何匹配对于对检测目标的形状没有要求,只要从目标图像中检测到的边缘能重现模板中的边缘即可。但是,基于边缘曲线的几何匹配计算量较大,而且计算过程需要占用较大内存,尤其在需要支持图像缩放和旋转时,显得速度较慢。

基于目标外形特征的几何匹配方法在从图像中提取到边缘曲线后,会先从图像中学习各种抽象层次较高的几何特征。学习过程对每个边缘曲线进行多边形近似拟合,并用可归类到所拟合多边形的边缘线段构建完整的多边形。这就会生成各种线性或拐角特征,而基于这些特征可进一步构建抽象层次更高的矩形目标轮廓。那些不能近似拟合为多边形或直线的边缘曲线或线段则用来创建圆形或椭圆特征。在得到各种抽象层次较高的矩形、圆形或椭圆特征后,算法会根据特征的类型、强度和明显程度(Saliency)对特征进行排序,并选取最佳特征作为代表模板的特征。用于排序的特征类型包括矩形、圆形(或椭圆)、线段和拐角。而强度是特征对几何形状描述的精确程度,明显程度则用来描述特征是否具有代表性。

特征提取和排序过程后,是模板模型(Template Model)的构建过程。算法根据各种特征之间的空间关系,使用空间距离向量来描述它们在图像中的分布,抽象出代表模板的模型。利用模板模型,可以在图像匹配过程中对匹配区域进行验证。下图给出了一个几何特征提取的示例及检测到的特征分布。

在实际应用中,若发现机器视觉系统的被测目标可由矩形、圆形、椭圆、线段或拐角等明显几何形状来表示,则可以使用基于目标外形特征的几何匹配方法来提高匹配过程的实时性。下图对两种图像几何匹配方法使用的特征、匹配过程及优缺点进行了汇总。

NI Vision使用位于LabVIEW的视觉与运动→Machine Vision→Searching and Matching函数选板中的IMAQ Setup Learn Geometric Pattern 2、IMAQ Learn Geometric Pattern 2和IMAQ Setup Match Geometric Pattern 2、IMAQ MatchGeometric Pattern 2以及Geometric Matching Advanced (Edge Based)子选板中的IMAQ Advanced Setup Learn Geometric Pattern 2和IMAQ Advanced SetupMatch Geometric Pattern 2来实现基于边缘曲线的几何匹配过程。基于目标外形特征的几何匹配过程由Geometric Pattern Matching(Feature Based)子选板及其Geometric Matching Advanced (Feature Based)子选板中的VI来实现

这两种匹配方法的学习和匹配过程,均先使用参数设置VI对算法进行配置,然后才使用配置参数调用VI完成学习或匹配过程,具体使用技巧各位可参见说明手册,这里不再赘述。

5、黄金模板比较

在工业环境下,如果图像背景可控,将图像的减法运算和阈值化处理结合,可以快速有效地建立机器视觉系统。如果将同一目标在不同时间拍摄的图像或在不同波段的图像相减,即可获得图像的差影。图像差影可用于动态监测、运动目标的检测和跟踪、图像背景的消除及目标识别等。差影技术还可以用于消除图像中不必要的叠加图像,将混合图像中重要的信息分离出来。

使用图像减法运算进行缺陷检测的原理较为简单,但要直接使用它进行缺陷检测,参与运算的图像需要具备以下条件。

  • 目标图像和模板图像中的被测件图像尺寸相同;
  • 目标图像和模板图像中的被测件图像准确对准;
  • 目标图像中的被测件相对于模板图像不存在畸变或畸变已经被矫正;
  • 目标图像和模板图像中的被测件图像不存在整体灰度差异;
  • 其他噪声的影响应提前被消除。

这些条件使得直接减法运算很难解决现实世界中的实际问题。例如,在下图所示的硬盘机械针划伤检测实例中,模板图像和故障图像中的硬盘针图像不仅尺寸相同,可准确对准,整体上不存在灰度差异,且无畸变,因此可以直接通过图像减法获得缺陷图像。但是现实中,任何图像错位、图像畸变、图像灰度变化或噪声,都会影响图像减法运算进行缺陷检测的结果。

由此可见,要使用图像减法运算在实际工业环境中进行缺陷检测,除了要确保被测件尺度不变外,还需要事先设法矫正图像畸变,对准被测件图像,尽量消除整体灰度差异和噪声对图像减法运算结果的影响。

黄金模板比较(Golden Template Comparison)正是基于图像减法运算,综合应用图像对准、投影畸变矫正、灰度差异处理以及忽略部分边缘等措施,在实际工业环境中进行目标缺陷检测的一种方法。下图汇总了黄金模板比较法的原理、输出结果以及为提高算法实用性在图像减法运算的基础上所采取的优化措施。

模板和目标图像的对准对黄金模板比较法的正常执行至关重要,未对准的图像进行减法运算的结果会产生差影。例如,在下图所示的某微光瞄准镜缺陷检测实例中,若采集到的瞄准镜视场发生了偏移,则通过减法运算得到的结果中不仅包含缺陷点,还包含图像的差影,而且差影还占了主要部分。

Nl Vision使用位于LabVIEW的视觉与运动→Machine Vision→Inspection函数选板中的IMAQ Learn Golden Template和IMAQ Compare Golden Template来实现图像的黄金模板比较过程。其中IMAQ Learn Golden Template用于在程序运行时创建黄金模板,IMAQ Compare Golden Template用于综合各种措施对目标图像和模板进行比较,如下图所示:

函数说明及使用可参见帮助手册:

LabVIEW图像模式匹配(基础篇—11)相关推荐

  1. 拼题A基础篇 11 输出闰年

    拼题A 基础篇11 输出闰年 #include<stdio.h> main() {int year, number = 0;scanf("%d", &year) ...

  2. LabVIEW控制Arduino驱动数码管(基础篇—11)

    目录 1.实验目的 2.实验环境 3.程序设计 4.实验演示 1.实验目的 利用LIAT中的数码管显示函数库,通过LabVIEW软件控制Arduino Uno控制板,将特定的数据显示在单个数码管上,实 ...

  3. I.MX6ULL_Linux_基础篇(11) DDR介绍与校准

    系统级芯片通常要使用外部RAM作为程序运行空间,DDR是其中一种.但是DDR的速度发展到如今速度已经很快了,如DDR5已经达到6000,因此也会产生一些问题,比如容易受到干扰,甚至不同的pcb,cpu ...

  4. LabVIEW纹理分析(基础篇—9)

    纹理(Texture)是物体表面固有的特征之一.目前对于纹理尚无正式的定义,但一般认为它是由许多相互连接且常周期性重复的单元构成.与灰度特征不同,纹理不是基于单个像素点的特征,它通常与图像的尺度关系密 ...

  5. minigui[基础篇][11]—— 图标

    1.图标 1.图标是一张小的图片,通常用来代表一个应用程序,或者用于警告消息框等窗口中 2.它是由一个位图和一个位屏蔽位图组合而成,可以在图片中产生透明图像区域 3.一个图标文件中可以包含一个以上的图 ...

  6. java基础篇(11) 枚举类型

    枚举类型Enum的简介 1.什么是枚举类型 枚举类型: 就是由一组具有名的值的有限集合组成新的类型.(即新的类). 好像还是不懂,别急,咱们先来看一下 为什么要引入枚举类型 在没有引入枚举类型前,当我 ...

  7. 基于STM32+OV7670的图像采集系统(基础篇:ov7670介绍)

    由于这部分内容过多,分开介绍,本文章主要是介绍ov7670模块. 一.简单认识 先来看一下外观: OV7670,图像传感器,体积小,工作电压低,提供单片VGA摄像头和影像处理器的所有功能.通过SCCB ...

  8. Python Qt GUI设计:QLabel标签类(基础篇—11)

    QLabel对象作为一个占位符可以显示不可编辑的文本或图片,也可以放置一个GIF动画,还可以被用作提示标记为其他控件,纯文本.链接或富文本可以显示在标签上. QLabel类中的常用方法如下表所示: Q ...

  9. 多线程“基础篇”11之 生产消费者问题

    本章,会对"生产/消费者问题"进行讨论.涉及到的内容包括: 1. 生产/消费者模型 2. 生产/消费者实现 1. 生产/消费者模型 生产/消费者问题是个非常典型的多线程问题,涉及到 ...

最新文章

  1. QQ2007去广告教程(本地vip)
  2. HDU3970(Dijstra算法)
  3. 如何让决策树中有样本的索引
  4. html5 drag this,HTML5拖放(drag和drog)
  5. python 四数之和
  6. Spring Boot Debug调试
  7. Linux命令解释之grep
  8. 剑指Offer——二叉树中和为某一值的路径
  9. c语言程序设计二级考试内容,计算机二级考试C语言程序设计考试大纲
  10. C# “配置系统未能初始化” 异常解决
  11. 计算机毕业论文外文翻译是什么,毕业论文的外文翻译是什么
  12. 详细流程,新手做情感视频,上个月收入6千,适合没才艺的普通人
  13. java哪一个可以编译,下列Java命令中,哪一个可以编译HelloWorld.java文件( )
  14. MCAL_VADC配置
  15. (每日一练c++)组合总和
  16. 计算机网络:IPv6
  17. mac版vpn连接错误解决
  18. 什么是IP地址定位,优缺点有哪些?
  19. chart.js-一款轻巧实用的可视化图表工具
  20. python 定时器 队列(5)

热门文章

  1. 2021年大数据Spark(三十九):SparkStreaming实战案例四 窗口函数
  2. Python break语句,continue语句,pass 语句
  3. Handler 实现的一个循环操作
  4. Binary XML file line #8: Error inflating class android.support.v7.widget.RecyclerView
  5. 创建 Pool VIP - 每天5分钟玩转 OpenStack(122)
  6. [maven] 使用问题及思考汇总
  7. Standup Timer的MVC模式及项目结构分析
  8. 《The Sixth Sense》(《灵异第六感》)观后
  9. oracle 分区使用情况,Oracle Hash分区的使用总结
  10. java定义list长度,在Java中定义固定大小的列表