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

news/2024/9/20 20:47:23

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

通常来说,在放大后的图像上可以观察到目标表面的纹理。而且一般来说,纹理特征需要在包含多个像素点的图像区域中进行灰度统计才能获得。纹理特征的这种区域性可使特征匹配过程不会因局部的偏差而失败。因此通过纹理分析,可对物体表面尺寸和形状的变化进行检测,如划痕(Scratch)、裂纹(Crack)和污渍(Stain)等。

纹理分析常用于对具有不规则纹理图案的目标表面进行检测,如瓷砖、纺织品、木材、纸张、塑料或玻璃的表面等。

多数基于纹理分析的机器视觉应用使用纹理分类器(Texture Classifier)进行检测。纹理分类器可通过对无缺陷的标准样本目标进行学习获得,其中包含样本的纹理特征信息。检测时,算法会将被测目标中的纹理特征与纹理分类器中的特征信息进行匹配,并将不能接受的区域标识为缺陷。

通常来说,纹理分析过程会以目标的表面图像为输入,并以二进制大颗粒(Binary Large OBjects,BLOB)的形式输出检测结果。获得缺陷部分的BLOB后,可以进一步使用颗粒分析工具对其属性、尺寸等进行分析。

适用性强的纹理分析检测过程不仅应对于噪声有较强的抵抗能力,还应具有平移不变(Shift-Invariant)、旋转不变(Rotate-Invariant)和尺度不变(Scale-Invariant)的性质。也就是说,相较于纹理分类器中的纹理特征而言,即使被测目标中的纹理特征垂直或水平移动,在平面内旋转或有一定比例的缩放,纹理分析检测过程仍能继续正确地识别它们。一般的纹理检测过程都具有平移不变的性质,且能支持±5°的旋转和±10°的缩放。

若要支持更大范围的旋转不变和尺度不变性,则要通过学习和训练过程,创建包含各个方向和比例纹理特征信息的纹理分类器。此外,还应注意在纹理匹配过程的执行速度与旋转不变和尺度不变性范围之间进行平衡。

由于纹理特征与图像的尺度、区域及灰度统计数据具有密切联系,因此NI Vision使用离散小波变换和统计的方法来提取纹理特征并对其进行分类检测。一般的纹理检测过程如下图所示,主要包括以下步骤:

Nl Vision使用位于LabVIEW的视觉与运动→lmage Processing→Texture函数选板中的VI对上述过程进行封装,如下图所示:

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

 其中:

  • IMAQ Extract Wavelet Bands可执行小波变换从纹理图像中提取各种子带图像;
  • IMAQ Cooccurrence Matrix能计算图像的共生矩阵和Haralick特征;
  • IMAQ Extract Texture Feature对子带提取、共生矩阵计算和Haralick特征提取与连接进行了集成,可直接返回计算得到的纹理特征;
  • IMAQDetect Texture Defect不仅集成了整个纹理特征的提取过程,还集成了按照纹理分类器对纹理进行分类的过程,它能以二值图像输出检测到的纹理缺陷。

通过一个墙壁纹理或缺陷检测的实例,了解纹理分析的实现方法,程序设计思路如下所示:

  • 程序一开始先由IMAQ Read ClassifierFile从分类器文件Texture.clf中读取事先训练好的纹理特征信息,并为后续处理分配内存;
  • 循环结构中的代码,逐一从文件夹中取出被测图像,在用清除无损图层后,由IMAQ Detect Texture Defect根据分类器对纹理进行分类;
  • Nl Vision分类过程使用范围为0~1000的识别得分(ldentification Score)来判别被测特征与某一类别的相似程度,当纹理与合格的特征信息差别越大时,说明其越接近缺陷;
  • 由此,程序中设置了最小缺陷分类识别得分为200,分类时任何得分等于或大于该阈值的像素均被识别为纹理缺陷。

程序设计如下所示:

通过运行程序,效果如下所示:

项目资源下载请参见:LabVIEW墙壁纹理缺陷检测-嵌入式文档类资源-CSDN下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pgtn.cn/news/18577.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

PCL:超详细的基于法向量和曲率的区域生长算法原理以及源码解读

---------原理介绍: (1)首先计算出来各点的曲率值,将曲率值按照从小到大的顺序进行排序。 (2)设置一空的种子点序列和一个空的聚类数组。 (3)选取曲率最小的点放入上述种子点序列…

万万没想到,低功耗也会烧毁元器件?

今天读到一篇ADI期刊中的故障解决,虽然这种问题在如今芯片设计时已经考虑到并解决,但也非常有意思,分享给各位朋友。 问题: 我更换了一个更新更好的稳压器,具有更低的电流损耗。结果发生故障,稳压器甚至烧…

和12岁小同志搞创客开发:有意思的激光切割技术

目录 1、选材标准 2、设计软件 3、设计流程 机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧。 项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html 青少年创客在设计开发产品后难免要做外型工装&#xff…

AJAX ControlToolkit学习日志-ModalPopupExtender(16)

ModalPopupExtender控件用于设置网页上文本的样式。下面看一个示例&#xff1a;1)在Vs2005中新建一个ASP.NET AJAX-Enabeld Web Project项目工程&#xff0c;命名为ModalPopupExtender1。2)在Default.aspx中的<div/>标签中添加一段文字。再添加一个LinkButton控件&#x…

隐马尔可夫(HIdden Markov Model)1:隐马尔可夫模型(HMM)背景介绍

首先引入两个概念&#xff1a;1.频率派&#xff08;后来逐渐发展称为统计机器学习&#xff0c;其核心问题就是优化问题&#xff0c;把他的loss function定义出来&#xff0c;求解&#xff09; 2.贝叶斯派&#xff08;后来发展为概率图模型&#xff0c;最终是要做推断&#x…

和12岁小同志搞创客开发:检测按键状态的两件法宝

目录 1、检测电平变化&#xff0c;判断按键状态 2、使用中断触发&#xff0c;判断按键状态 机缘巧合在网上认识一位12岁小同志&#xff0c;从零开始系统辅导其创客开发思维和技巧。 ​​​项目专栏&#xff1a;https://blog.csdn.net/m0_38106923/category_11097422.html 按…

个人信息管理器

转&#xff1a;http://www.cnblogs.com/maxianghui/archive/2006/10/10/524873.html 经过一个多月的努力&#xff0c;终于搞定了这个小软件&#xff0c;请大家给点意见我。采用VC# Access2003 XML开发&#xff0c;扩展了TreeView控件&#xff0c;扩展了RichTextBox控件&#…

和12岁小同志搞创客开发:遥控舵机

目录 1、舵机控制理论 2、舵机控制实践 机缘巧合在网上认识一位12岁小同志&#xff0c;从零开始系统辅导其创客开发思维和技巧。 ​​​项目专栏&#xff1a;https://blog.csdn.net/m0_38106923/category_11097422.html 之前讲到了设计一款亮度可调节灯&#xff0c;在此基础…