[Halcon学习笔记]机器视觉缺陷检测常用方法对比总结

1、介绍

缺陷检测时机器视觉需求中最复杂难度较大的一类需求。究其原因,主要是在项目开发过程中首先要保证检测的稳定性和精度,又要实现缺陷检测的通用性,常见的缺陷:凹凸、污点瑕疵、划痕、裂缝、伤痕、毛刺等等类型种类繁杂,缺陷检测不同于尺寸、二维码、OCR识别等算法。后者的应用场景比较单一,基本使用一些成熟的算法实现,最多增加一些定位、图像增强的算法,应用门槛相对较低,也比较容易做成通用的产品或工具。但缺陷检测主要针对工业场景,不同的行业的需求和重点都有差别,这导致不同的行业所使用的缺陷算法迥然不同,这也注定了缺陷检测被工业场景非标定制所束缚。随着缺陷检测要求的不断提高和技术的不断发展,机器学习和深度学习也成了缺陷领域一个不可或缺的技术难点。

2、缺陷检测目前解决方案

2.1 传统算法检测缺陷

优点:可根据需求和图像进行不同需求的开发,可直观展示效果;
缺点:调试难度大,图像变化后会导致检测算法不稳定进而需要反复调参,而且复杂缺陷误检的概率较大,兼容性不好,很难做成通用效果。

2.2 机器学习检测缺陷

一般使用类似MLP的一些单层神经网络,对缺陷特征进行训练分类,该方法需要事先提取出缺陷部分,一般用来与传统分割法搭配使用,达到缺陷检测分类的效果。

2.3 深度学习检测缺陷

优点:通用性好,可以通过迭代训练模型不断提升某个产品的检测准确度。
缺点:需要大量的数据样本(缺陷样本),而且缺陷种类越多,特征性越模糊,检测精度要求越高,其需要的缺陷样本就越大,而且深度学习中的缺陷样本需要人工去标注标签,样本越大,手动标注的工作量也越大,训练的周期也越长。只适合产品产量大且缺陷样本较多的案例。

2.4 深度学习检测缺陷(迁移学习方法)

其操作方法如2.3,但同一行业或相似行业有大量的缺陷样本库,如果深度训练网络具有泛化和迁移的特点,可以在常规缺陷少的情况下,根据统一行业缺陷进行迁移学习训练,进而解决缺陷样本少的问题。该方法我感觉会成为后面工业领域检测瑕疵的一个大趋势,但是需要一些公司去收集各种行业的缺陷类型图片和训练的网络模型,并共享出来,然后后来者可以使用迁移学习的方法学习前人训练好的模型。然后不断的丰富缺陷样本和训练模型。

3、总结

目前机器视觉中缺陷检测主要分为以下几种:

1 Blob分析+特征提取
2 模板匹配(定位)+查分
3 光度立体
4 特征训练
5 测量拟合
6 频域+空间域
7 深度学习

以后的笔记中再详细介绍各种缺陷检测方法使用的场景和实际案例。

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

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

相关文章

MySQL中Buffer pool、Log Buffer和redo、undo日志介绍

MySQL中Buffer pool、Log Buffer和redo、undo日志介绍 Buffer Pool 原理MySQL中的内存结构Buffer PoolChange BufferLog Buffer redo和undo日志redo日志为什么需要REDO日志redo log 基本概念redo的组成redo的整体流程redo log的刷盘策略 undo 日志undo log 基本概念undo log的作…

Linux:网络相关概念的认识

文章目录 基本认知数据跨网络传输初识ip地址 端口号端口号的理解进程与端口号总结 本篇是基于前面对于网络的基本框架搭建,进而进行相关概念的进一步理解,为后续准备 基本认知 那么首先总结一下一些基本的相关结论性的信息 对于任何协议来说&#xff…

156.乐理基础-和弦固定标记法(五)挂留(sus)和弦省略音(omit)和弦

如果到这五线谱还没记住还不认识的话去看102.五线谱-高音谱号与103.五线谱-低音谱号这两个里,这里面有五线谱对应的音名,对比着看 如果一章没落下,看到这里,但是看不懂什么意思,那就强行下看,看着看着指不…

热点!浅谈低代码到底是什么?

低代码平台的历史相对较短,大约始于 2000 年初,源于快速应用程序开发工具。随着低代码平台和工具的日益普及和优势,它不断发展以满足各种领域和角色的需求。 本文将研究各种低代码和无代码应用程序开发方法、业务用例、挑战和未来预测等。 …

定制红酒:品质保障,从源头做起

云仓酒庄的洒派定制红酒,以其卓着的品质和与众不同的口感,赢得了众多消费者的喜爱。而这种品质的保障,正是从源头上开始的。 在葡萄种植方面,种植者对土壤、气候等自然条件进行严格的筛选和评估,确保葡萄能够在理想的环…

递增四元组

解法: 首先都可以想到dp[i]:第i个元素结尾的递增四元组有dp[i]个 然后发现有一组数据:2,3,6,1,5,8。会出现6结尾和5结尾的递增三元组,也就是未来的决策受过去影响,专业的说就是有后效性。需要强化约束条件&#xff0…

普发Pfeiffer分子泵TMH-U1001PC-1601PC安装使用维护说明

普发Pfeiffer分子泵TMH-U1001PC-1601PC安装使用维护说明

【Linux中vim系列】如何在vim中检索字符串

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

最简明的大模型agent教程

大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 大模型应用向开发路径及一点个人思考大模型应用开发实用开源项目汇总大模型问答项目…

关闭Elasticsearch built-in security features are not enabled

禁用Kibana安全提示(Elasticsearch built-in security features are not enabled) Kibana提示#! Elasticsearch built-in security features are not enabled. Without authentication, your cluster could be accessible to anyone. See https://www.e…

基于SSM+Jsp+Mysql的KTV点歌系统

基于SSMJspMysql的KTV点歌系统 基于SSMJspMysql的KTV点歌系统的设计与实现 开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工…

Redisson分布式锁(WatchDog分析,浅浅看下源码)

带大家简单了解下Redisson的看门狗机制,这个面试中也比较常见。 目录 WatchDog(看门狗)机制开启WatchDog(看门狗)浅看下源码 WatchDog(看门狗)机制 Redisson看门狗机制是用于解决在业务运行时间…

弱网测试利器 - Charles工具实战分享!

一:弱网测试要点 二:利用抓包工具charles进行弱网设置,适用PC端和移动端(IOS/Android) 1、以charles 4.5.6版本为例,打开Proxy->Throttle Settings 2、打开Throttle Settings,界面…

蓝桥杯练习06给网页化个妆

给页面化个妆 介绍 各个网站都拥有登录页面,设计一个界面美观的登录页面,会给用户带来视觉上的享受。本题中我们要完成一个登录页面的布局。 准备 开始答题前,需要先打开本题的项目代码文件夹,目录结构如下: 其中&…

A7680C 4G模块连接MQTT服务器

AT\r\n检查模块正常工作 返回 OK ATCPIN?\r\n检查SIM是否正常 返回: [20:01:31.561]接收←ATCPIN? CPIN: READY OK ATCGREG? //检查网络注册注册状态 返回 [20:02:21.042]接收←ATCGREG?…

28 OpenCV 轮廓周围绘制图形

文章目录 approxPolyDP 轮廓周围绘制矩形boundingRectminAreaRect绘制圆和椭圆示例 approxPolyDP 轮廓周围绘制矩形 approxPolyDP(InputArray curve, OutputArray approxCurve, double epsilon, bool closed)curve:输入点集,二维点向量的集合appro…

干货!Python正则表达式之匹配分组和其他功能函数

1.匹配分组 ():表示一个整体,表示分组,然后捕获 2.匹配分组实例 # 导入re模块 import re ​ tel "0755-98776754" ​ # 定义正则表达式 pattern "(\\d{4})-(\\d{8})" result re.search(pattern, tel) print(result…

offer选择:创业公司 VS 大厂外包

面试拿到两个offer,一个是规模只有几十人的初创小公司,另一个是大厂外包岗位。都是功能测试,两者薪水待遇也差不多,该如何选择?更有利于之后的职业发展...... 这是一个比较典型的问题,对于要转行的同学或者是刚入行没…

Leetcode 200. 岛屿数量

心路历程: 在没有看图论这一章之前看这道题没什么直接的思路,在看完图论之后,学着使用DFS和BFS去套用解决。第一次自己做的时候还是遇到了很多小问题。整体思路很流畅,但是需要处理的细节第一次没怎么处理好,花了很多…

VC++ error C1001: 内部编译器错误 c\error.h”,第 1291 行) 原因和解决

原因是使用模板时实现方法没写分号 #include <iostream>template <class T> class A { public:A() {};~A() {};void GetName() {return}; };int main(int argc, char* argv[]) {return 0; }