LabVIEW基于机器视觉的钢轨表面缺陷检测系统
LabVIEW基于机器视觉的钢轨表面缺陷检测系统
机器视觉检测技术和LabVIEW软件程序,可以实现轨道工件的表面质量。CMOS彩色工业相机采集的图像通过图像预处理、图像阈值分割、形态分析、特征定位和图案匹配进行处理和分析。图形显示界面采用LabVIEW软件编程设计,进行钢轨缺陷的实时显示。系统能够快速有效地诊断钢轨表面裂纹和划痕两大缺陷。容易实现缺陷表面检测的智能化,达到钢轨生产中钢轨工件表面缺陷检测的要求。
目前,表面缺陷检测作为制造业中不可或缺的关键步骤,已广泛应用于航空、陶瓷、汽车零部件制造、金属和电子元件设备等工业制造领域。表面缺陷检测的发展历史大致可分为三个阶段:人工视觉检测、机电光学技术检测和机器视觉检测。虽然人工目视检查方法被广泛使用,但依靠目视检查的漏检率很高,对工人来说强度相对较高。机电光学测试有很大的局限性。例如,电磁感应检测方法只能检测电流阻断缺陷,而超声波检测需要耦合剂并且容易受到干扰。以上两种检测方法已不能满足现代工业产品表面缺陷检测的要求。与前两种检测方法相比,机器视觉检测方法受环境磁场的影响较小,工作距离大,测量精度高。机器视觉检测方法满足了生产线快速的生产节奏和现代工业自动检测的效率和精度要求。目前,机器视觉检测已成为工业产品表面质量监测的重要先进手段和技术,更适合于自动化生产线的在线监测。
在钢轨轧制过程中,由于加工工艺不完善、设备和部件老化等因素,钢轨表面经常出现各种缺陷。缺陷主要包括:裂纹、划痕等。这些缺陷对产品的外观、耐磨性和耐腐蚀性有很大影响。严重影响钢轨的质量和性能指标。因此,检测生产线上的钢轨表面缺陷尤为重要,利用LabVIEW制备了一套完整的钢轨表面缺陷检测系统,满足自动检测的效率和精度要求。
系统硬件组成
硬件系统由运动控制模块、照明模块和图像采集模块组成。运动控制模块包括机械传动带、单片机和运动控制卡。该模块用于驱动检测装置上的机械传送带,使平面在工作台上高速移动。因此,图像采集模块可以准确快速地扫描工件。照明模块包括一个LED光源。光源是机器视觉系统中非常重要的一部分。适当的光源照明可以大大提高捕获图像的清晰度,降低图像处理算法中分割和识别的难度。形成最有利于图像处理的成像效果,从而提高系统的可靠性和综合性能。根据钢轨工件检测现场的实际情况和钢轨材料本身的影响,使钢轨表面易于反映。因此,该系统采用频闪自由白环LED光源,使用寿命长,亮度高,光扩散均匀,可以解决对角线照明阴影的问题。图像采集模块由工业相机、光学镜头和图像采集卡组成。目前,用于工业产品表面缺陷检测的工业相机主要包括CCD相机和CMOS相机。CMOS相机的传感器比CCD相机具有更高的传输速度,分辨率和更低的功耗。为了最大限度地保留图像信息,系统采用CMOS彩色工业相机采集图像。
系统工作过程:待测工件放置在工作台上,A点限位开关检测工件;计算机触发图像采集单元根据位置检测信号采集图像;机械传动带由运动控制模块触发,带动工件从A点到B点的目标位置;捕获的图像通过LabVIEW的IMAQVision通信模块发送到主控制计算机;经过一系列的图像处理和分析,识别被测工件中缺陷的类型和位置,并统计缺陷信息。
系统软件设计
LabVIEW软件编程是一种基于程序代码的图形化编程语言。它提供了大量的图像预处理、图像分割、图像理解函数库和开发工具。使用LabVIEW机器视觉软件作为开发平台,可以建立快速高效的自动检测系统。
该系统的软件主要由LabVIEW软件编译。LabVIEW软件编译的算法控制相机拍摄待测钢轨工件的实时照片,并采集待测钢轨工件的图像信息。CMOS彩色工业相机采集的图像通过图像采集模块传输到LabVIEW虚拟仪器开发平台。采用直方图和灰度变换处理图像信息,开始采用线性灰度直方图对采集到的图像进行预处理和滤波。图像预处理完成后,通过阈值分割和形态分析的图像处理技术,尽可能消除干扰噪声。实现基于图像灰度特征的物体存在检测和模式匹配。通过图案匹配的结果,可以对钢轨工件的表面缺陷进行检测和分类。
图像预处理
为了最大限度地保留图像信息,提高钢轨工件缺陷检测的准确性。该系统使用彩色工业相机采集图像,因此采集的图像为RGB图像。
系统采用LabVIEW的IMAQ直方图功能模块,对采集到的待测钢轨工件图像进行过滤,排除无明显缺陷的钢轨工件。不排除的工件被视为难点零件,然后进入后续检测过程进行进一步分析和加工。
由于待测工件与背景之间的灰度明显不同,不同目标的灰度值会在直方图中聚集成峰值。当可以清晰区分图像灰度直方图的峰值时,可以以谷底附近的灰度值作为完成图像分割的阈值。因此,使用直方图对钢轨工件图像进行预处理,为后续的图像分割带来了极大的便利。
图像阈值分割
图像分割的过程是为了进一步简化图像分析、处理和机器决策的过程。阈值分割主要利用检测物体灰度与背景的差值,选择一个或多个灰度阈值,根据像素灰度和阈值的对比结果对像素进行分类。
系统使用LabVIEW的视觉和运动图像处理功能调板中的IMAQ阈值功能模块,实现单灰度范围中的图像分割。系统使用LabVIEW的IMAQ局部阈值功能模块,通过定义适合钢轨缺陷检测系统的局部阈值算法,对阈值的灰像进行划分。
形态学分析
与检测到的物体相似的一些点和噪声会干扰从图像中提取有用信息。形态分析过程可以消除这些区域并增强图像中的有用信息。蚀刻是形态学算法之一,可以消除图像中相对背景亮度较高的孤立像素。并将像素的灰度值更改为其邻域中像素的最小灰度值,缩小明亮的目标区域,并扩展图像中的暗背景。系统在LabVIEW中应用IMAQ灰色形态功能模块对钢轨图像进行腐蚀操作,过滤图像中下部的大面积无关噪声。
然后使用IMAQ去除粒子功能模块过滤图像中的小面积独立噪声。消除与轨道表面缺陷无关的大小颗粒噪声。
D.图像特征和分析
基于LabVIEW机器视觉的钢轨表面缺陷检测系统以图像的像素灰度为研究目标,根据标准图像中目标的特性确定参考坐标系。基于图像灰度定量指标,构建用于识别和机器决策的特征模式。
系统将标准示例图像特征读入内存。程序在搜索参考坐标系模式下调用IMAQFindPattern3功能模块,搜索标准样本图像中与要素模板匹配的部分,以设置标准图像的参考坐标系。然后使用在更新测量坐标系模式下工作的IMAQFindPattern3功能模块重新匹配新图像的要素模板以更新测量坐标系。
系统监控的矩形区域基于标准图像。根据输入测量坐标系与参考坐标系的关系,调用IMAQ变换ROI功能模块,将矩形ROI转换为合适的位置。确定矩形ROI位置后,调用IMAQROIToMask功能模块,将矩形ROI转换为图像遮罩。IMAQ直方图根据图像掩码计算矩形区域中的灰度量化指数。获取测量坐标系后,调用IMAQ测光表功能模块。IMAQ测光表功能模块可以在指定的矩形范围内返回灰度量化指数。此外,IMAQ测光表功能模块可以根据参考坐标系和测量坐标系之间的关系,自动将测量ROI调整到适当的位置进行计算。检查计算出的平均灰度值和灰度分布的标准差是否在设定范围内。
E.图像模式匹配
基于灰度的图案匹配以像素灰度或灰度梯度信息为特征。本文使用LabVIEW中的IMAQ学习模式和IMAQ匹配模式功能模块来匹配轨道工件图像的灰度级别。使用IMAQ读取图像和视觉信息VI和IMAQ写入图像和视觉信息VI分别打开和创建模式匹配模板。使用设置学习模式功能模块建立模型的学习模式,获取原始图像的数据。结合设置匹配模式功能模块设置匹配模式、角度、对比度等参数。在获取图像的特征数据后,程序调用IMAQ匹配模式,将目标图像与模板进行匹配。匹配后,IMAQ匹配模式将输出匹配区域的数量、位置、大小、角度、相似度等信息封装在匹配集群中。最后,程序根据返回的位置信息标记图像中的匹配区域。
表面缺陷检测实验
钢轨表面裂纹和划痕分类程序主要使用IMAQ分类模块中的读取分类器文件功能来读取分类文件。使用添加分类器样本添加分类样本。使用获取分类器示例信息VI检索示例缩略图和类别标签。IMAQ分类功能用于对给定ROI内的样品进行分类。
通过实验分析,基于LabVIEW机器视觉的钢轨表面缺陷检测系统完全满足钢轨表面划痕和裂纹的缺陷检测要求。
这是LabVIEW的一个功能介绍,更多的使用方法与开发案例,欢迎登录官网,了解更多信息。有需要LabVIEW项目合作开发,请与我们联系。
相关文章:

LabVIEW基于机器视觉的钢轨表面缺陷检测系统
LabVIEW基于机器视觉的钢轨表面缺陷检测系统 机器视觉检测技术和LabVIEW软件程序,可以实现轨道工件的表面质量。CMOS彩色工业相机采集的图像通过图像预处理、图像阈值分割、形态分析、特征定位和图案匹配进行处理和分析。图形显示界面采用LabVIEW软件编程设计&…...

Qt程序的发布和打包,任何电脑都可以安装
## 1. Qt程序的发布 当Qt程序编写完成通过IDE编译就可以得到对应的可执行程序,这个可执行程序在本地运行是完全没有问题的(因为在本地有Qt环境,程序运行过程中可以加载到相关的动态库),但是如果我们想把这个Qt程序给到其他小伙伴使用可能就会出问题了,原因如下: 对方电…...

MD5生成和校验
MD5生成和校验 2021年8月19日席锦 任何类型的一个文件,它都只有一个MD5值,并且如果这个文件被修改过或者篡改过,它的MD5值也将改变。因此,我们会对比文件的MD5值,来校验文件是否是有被恶意篡改过。 什么是MD5ÿ…...
PostgreSQL 正则表达式匹配字段
在 PostgreSQL 数据库中,可以使用 ~ 和 !~ 操作符进行正则表达式的匹配和否定匹配。还可以使用 :: 操作符进行正则表达式的模式匹配。 例如,假设我们有一个名为 users 的表,其中有一个名为 email 的字段,我们可以使用以下 SQL 语句…...

关于iterm2的美化
iterm2 美化 笔者公司最近给发了一个新 M1 mac pro,所以一些软件需要重新安装。其中比较麻烦就是iterm2的一个美化工程 , 由于每次安装的效果都不尽相同所以这次写一个博客来记录一下 安装的过程 。 全程高能开始: 使用brew 来安装 iterm2 …...

Hook原理--逆向开发
今天我们将继续讲解逆向开发工程另一个重要内容--Hook原理讲解。Hook,可以中文译为“挂钩”或者“钩子”,逆向开发中改变程序运行的一种技术。按照如下过程进行讲解 Hook概述Hook技术方式fishhook原理及实例符号表查看函数名称总结 一、Hook概述 在逆…...

做数据可视化,谨记三大要点
数据可视化报表就是“一图胜千言”的最佳例子。数据可视化,也就是将数据图形化、图表化,以良好的视觉效果呈现数据,达到发现、分析、预测、监控、决策等目的。要想做出一份优秀的数据可视化报表,那就要在做报表时谨记三大要点&…...
软件设计原则-接口隔离原则讲解以及代码示例
接口隔离原则 一,介绍 1.前言 接口隔离原则(Interface Segregation Principle,ISP)是面向对象设计中的一个原则,提倡使用多个专门的接口,而不使用单一的大接口。它最早由Robert C. Martin在其《敏捷软件…...

yolov8x-p2 实现 tensorrt 推理
简述 在最开始的yolov8提供的不同size的版本,包括n、s、m、l、x(模型规模依次增大,通过depth, width, max_channels控制大小),这些都是通过P3、P4和P5提取图片特征; 正常的yolov8对象检测模型输出层是P3、…...
Type Script的变量类型
Typescript 的重要特性之一就是数据有类型了。 常见的类型如:字符串、数值、布尔等都有了明确的定义。 变量声明的格式 let 变量名:类型 初始值;字符型 let str:string "abc";数值型 数值型也支持不同的进制,用前缀区分 支持 整…...

系统架构师备考倒计时13天(每日知识点)
1. 数据仓库四大特点 面向主题的。操作型数据库的数据组织面向事务处理任务,各个业务系统之间各自分离,而数据仓库中的数据是按照一定的主题域进行组织的。集成的。数据仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整…...
20 | Spring Data JPA 中文文档
Spring Data JPA 中文文档 1. 前言 Spring Data JPA 为 Jakarta Persistence API(JPA)提供 repository 支持。它简化了需要访问JPA数据源的应用程序的开发。 1.1. 项目元数据 版本控制: https://github.com/spring-projects/spring-data-jpaBug跟踪:…...

【AOA-VMD-LSTM分类故障诊断】基于阿基米德算法AOA优化变分模态分解VMD的长短期记忆网络LSTM分类算法(Matlab代码)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
K8s:Pod 中 command、args 与 Dockerfile 中 CMD、 ENTRYPOINT 的对应关系
写在前面 前几天被问到,这里整理笔记之前也没怎么注意这个问题理解不足小伙伴帮忙指正 曾以为老去是很遥远的事,突然发现年轻是很久以前的事了。时光好不经用,抬眼已是半生,所谓的中年危机,真正让人焦虑的不是孤单、不…...

Visual Studio Code (VS Code)安装教程
Visual Studio Code(简称“VS Code”)。 1.下载安装包 VS Code的官网: Visual Studio Code - Code Editing. Redefined 首先提及一下,vscode是不需要破解操作的; 第一步,看好版本,由于我的系…...
技巧 | 如何解决 zsh: permission denied 问题 | Mac
技巧 | 如何解决 zsh: permission denied 问题 | Mac 问题描述 在 macOS 系统终端执行 sh 程序脚本时,抛出异常 zsh: permission denied 原因分析 用户没有权限,所以才出现了这个错误,所以只需要用 chmod 修改一下权限就可以了 解决方法…...

【JavaEE】线程安全的集合类 -- 多线程篇(9)
线程安全的集合类 多线程环境使用 ArrayList多线程环境使用队列多线程环境使用哈希表 多线程环境使用 ArrayList 自己使用同步机制 (synchronized 或者 ReentrantLock)Collections.synchronizedList(new ArrayList); synchronizedList 是标准库提供的一个基于 synchronized 进…...

【MySQL架构篇】MySQL字符集、大小写规范及默认数据库
文章目录 1. 字符集与字符集比较规则2. 大小写规范3. 默认数据库4. 与文件系统相关 1. 字符集与字符集比较规则 MySQL有4个级别的字符集和比较规则,分别是 服务器级别数据库级别表级别列级别 当创建对应表或列未指定字符集时,默认会取其上一级别的字符…...

【Linux系统编程】命令模式2
目录 一,Linux下的初阶认识 1,管道 2,时间戳 二,Liunx系统命令操作 1,date时间指令 2,cal日历指令 3,which和find查找指令 3-1,which指令: 3-2,find…...

【Leetcode】【中等】1726.同积元组
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/tuple-with-same-product/ 给你…...

Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...

DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...

使用ch340继电器完成随机断电测试
前言 如图所示是市面上常见的OTA压测继电器,通过ch340串口模块完成对继电器的分路控制,这里我编写了一个脚本方便对4路继电器的控制,可以设置开启时间,关闭时间,复位等功能 软件界面 在设备管理器查看串口号后&…...