【机器视觉】——裂纹检测笔记

2023-11-02

目录

传统算法处理裂缝的基本思路:

第一种思路

第二种思路:

第三种思路

CPP代码

halcon代码

python代码

Matlab代码

深度学习缺陷检测

裂缝检测文献


传统算法处理裂缝的基本思路:

第一种思路

1.先转换彩色图为灰度图
2.进行自适应局部阈值化,目的是为了减少光照与阴影对阈值的影响
3.进行膨胀操作,尽量放大凸显裂缝,在用中值滤波平滑一下,去除一些高频噪声
4.进行腐蚀操作,让轮廓枝干化,减少类似裂缝物体的干扰。
5.测量裂缝宽和高
代码见:https://blog.csdn.net/freedom098/article/details/52774911/

第二种思路:

基于机器视觉的裂纹检测与跟踪
1.针对白亮的图像,先结合原色先验理论和去雾技术,增强裂纹特征,并对增强后的裂纹特征进行边缘提取,分析比较亚像素边缘检测。
https://blog.csdn.net/qq_16481211/article/details/79963651

第三种思路

形态学梯度(形态学边缘提取)
https://blog.csdn.net/wenhao_ir/article/details/51888042

CPP代码

1.标裂缝长宽–裂缝的检测与测量
处理流程如下:
图像灰度化
增加对比度
Canny边缘检测
用形态学连接临近裂缝
找出所有连通域,删除非裂缝噪点区域
对每个连通域提取骨架,测量长度和宽度
https://blog.csdn.net/m0_37350758/article/details/89413655
2.处理简单裂缝:
https://blog.csdn.net/qq_16481211/article/details/79963651
3.找轮廓并画缺陷
https://blog.csdn.net/hechaoqi09/article/details/84862938
4.sobel算子与scharr算子
canny算子不保证边缘连续,而且无法给出直线划分,但却给我们一个分析问题的方向。以下思路是在canny算子的基础上进行的。对于比较直,但长度粗细不定,有些地方非常微弱,断断续续的直线,可能是个好方向,此处记录一下。
https://blog.csdn.net/weixin_34068198/article/details/91306309
5.基于OpenCv的金属表面划痕检测
https://blog.csdn.net/guoruijiushiwo/article/details/77412617
6.圆环零件检测,划痕检测
https://blog.csdn.net/weixin_44076038/article/details/87723386
7.凹点检测研究
https://blog.csdn.net/u014003644/article/details/80288830

halcon代码

1…缺陷检测之高纹理图像检测
https://blog.csdn.net/y363703390/article/details/82424988
2.缺陷检测之划伤检测
https://blog.csdn.net/y363703390/article/details/82454045
3.处理金属表面凹坑
https://blog.csdn.net/Bamboo265925/article/details/85252042

python代码

1.寻找相似的灰度值来找到可能存在的裂缝
https://blog.csdn.net/cywtiancai/article/details/80601407
2.python处理缺陷图像,返回缺陷面积
https://blog.csdn.net/qq_19656669/article/details/79963347
3.圆口缺陷检测,通过面积的差别判断圆口是否是规范圆
https://blog.csdn.net/renegade_m/article/details/82292313

Matlab代码

1.对钢板表面缺陷检测:几何校正、分割、填充红色、计算面积
https://blog.csdn.net/qq_41385719/article/details/80273946

深度学习缺陷检测

1.结合GAN生成多样性裂缝,提高数据多样性和均衡性
https://blog.csdn.net/c2a2o2/article/details/85111283
2.SSD深度学习模型对工件裂纹进行检测
https://blog.csdn.net/qq_29462849/article/details/83472430
3.基于yolov3的铁轨缺陷/裂纹检测
https://blog.csdn.net/qq_29462849/article/details/84772263
4.tiny YOLO v3做缺陷检测实战
https://blog.csdn.net/qq_27871973/article/details/85009026
5.手机屏缺陷检测《Scale insensitive and focus driven mobile screen defect detection in industry》
https://blog.csdn.net/qq_27871973/article/details/83345023
细节和技巧:
1).将放缩后的不同尺寸的图像输入AlexNet网络,看各个网络层的feature map激活情况
2).最后作者将一个原始图像分成多个模块进行特征提取,然后将提取的特征输入RNN网络进行判别
3).作者在实验中,使用了简单的数据扩充方法对样本进行扩充。不过对于显示屏检测这个领域有些缺陷很明显,有的缺陷真的是肉眼都难以分辨,通过微妙的色调变换,就构成了缺陷.
6.深度学习实现工业零件的缺陷检测
https://blog.csdn.net/qq_29462849/article/details/82662928
细节和技巧:
1).对工业缺陷零件来说,由于特征不是太明显,往往只是一小块,在选择网络的时候,要考虑把浅层特征和深度特征进行融合,这样的话就不会造成主要特征丢失。关于网络,推荐使用ResNet、DenseNet、InceptionResNetV2这些,经过自己的测试,DenseNet效果要更好些,深度在22层左右。
2).可以选取不同的数据(数据最好不要完全相同)训练几个不同的模型,比如训练出三个模型分别对应:ResNet、DenseNet、InceptionResNetV2。训练完成后,把这三个模型的全连接层去掉,只用这三个模型的卷积层进行特征提取,然后把提取的特征进行拼接,可以在channel方向上(此时要求feature map的w和h必须相同),也可以在对应位置上进行特征相加(点加)。然后把这些特征进行汇总,重新建立三个网络,每个网络模型分别对应训练好的三个模型,提取训练好模型的参数,赋给新的模型,然后建立全连接层,这个时候只有一个全连接层。在训练的时候,新的网络只用来做特征提取,卷积层的参数不做训练,把这些网络参数冻结,只更新全连接层。
3).对于2中的特征融合,还有一种方法就是:用三个训练好的模型进行特征提取,然后建立一个mlp多层感知机类型的网络。训练好的模型去掉全连接层,只保存卷积层,做特征提取,并把产生的特征进行拼接,训练时只对全连接层进行更新。
如果整个场景图像特别大,缺陷特征比较局部化,对图像进行卷积操作后,特征基本上不存在,这时可以考虑把场景图像进行切分,比如一个场景图像被切分成四份,可以横向切分,也可以纵向切分。然后需要自己去做数据,赋以标签。在做数据上可能要花点时间,不过效果还不错。在预测的时候,只要场景图像的四个子图像有一个是缺陷图像,就认为其是缺陷图像。这在一定程度上避免了特征过于局部化。
4).Focal Loss:用来解决数据不均衡问题。

裂缝检测文献

1.kmeans筛选裂缝,然后膨胀,腐蚀,把裂缝轮廓清晰化
http://www.doc88.com/p-7377816204970.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【机器视觉】——裂纹检测笔记 的相关文章

随机推荐

  • 超级账本PBFT(拜占庭容错)算法详解

    上一章我们从分布式系统的角度简单叙述了一下 IBM HyperLedger fabric 的一些基本概念 架构和协议信息 其中最为核心的部分就是共识算法 consensus plugin fabric推荐并实现的就是PBFT这一经典算法 B
  • 弱监督学习--半监督学习(3):Mean teachers are better role models

    前言 论文链接 https arxiv org pdf 1703 01780 pdf github https github com CuriousAI mean teacher Mean Teacher 模型是由芬兰的一家AI初创公司在2
  • c语言怎样的序列满足堆,C语言堆排序法谁能通俗易懂又清晰地讲解一下?谢谢...

    您可以找本数据结构的书看看 比如清华严尉敏的 数据结构 以下摘抄于 http student zjzk cn course ware data structure web paixu paixu8 4 2 1 htm 这个网站的讲解挺不错
  • Android OpenGL ES2.0(一):详细讲解如何绘制一个三角形

    一 Android OpenGL ES2 0简介 1 什么是OpenGL OpenGL 全写Open Graphics Library 是指定义了一个跨编程语言 跨平台的编程接口规格的专业的图形程序接口 它用于三维图像 二维的亦可 是一个功
  • 缓存怎么测试?

    1 缓存的介绍 平时用的Redis缓存是一款高性能的内存型键值对 key value 数据库 是高并发场景常用一款存储中间件 其主要用于 缓存热点数据 减少DB的请求IO 其场景使用主要有 分布式锁 全局ID 计数器 限流 消息队列 购物车
  • 垃圾回收机制

    目录 一 为什么要有垃圾回收 二 垃圾回收主要回收哪个内存区域 三 垃圾判断算法 1 引用计数法 2 可达性分析法 四 垃圾回收算法 1 标记 清除算法 2 标记 整理算法 3 复制算法 4 分代收集算法 一 为什么要有垃圾回收 在 JVM
  • DRF请求与响应

    目录 Request类 常用参数 Response类 请求编码与相应编码 相应编码 Request类 经过rest framwork 传入视图函数的request已经不是原来的request了 而是Request的类产生的对象request
  • Docker 安装 Nginx(三)

    Nginx 是一个高性能的 HTTP 和反向代理 web 服务器 同时也提供了 IMAP POP3 SMTP 服务 以前没有用Docker时 直接在服务器中下载 安装 修改配置 运行Nginx 一套完整流程下来花费的时间也就那样 但是 自从
  • RabbitMQ - 消息堆积问题的最佳解决方案?惰性队列

    目录 一 惰性队列 1 1 消息堆积问题 1 2 消息堆积问题的解决方法 从消费者的角度 从队列的角度 1 3 引入惰性队列 1 3 1 什么是惰性队列 1 3 2 惰性队列的使用 1 3 3 效果演示 一 惰性队列 1 1 消息堆积问题
  • StringUtils.isEmpty和StringUtils.isBlank用法

    a target blank href http blog csdn net ocean20 article details 6674077 转载自 http blog csdn net ocean20 article details 66
  • Ubuntu22.04编译安装FFmpeg

    FFmpeg介绍 概述 FFmpeg是一款用C语言编写的跨平台免费开源多媒体处理工具 该软件可实现音视频的采集 编解码 转码 过滤以及流媒体相关操作等功能 同时 FFmpeg也为其他多种语言和操作系统提供了开发组件 包括Java Pytho
  • Android的init过程:init.rc解析流程

    这几天打算看下安卓的代码 看优秀的源码也是一种学习过程 看源码的过程就感觉到 安卓确实是深受linux内核的影响 不少数据结构的用法完全一致 花了一中午时间 研究了下init rc解析过程 做个记录 init rc 文件并不是普通的配置文件
  • Ant内置任务之unjar/untar/unwar/unzip

    一 概述 unjar untar unwar unzip是Ant内置任务 用于解压zip war或jar文件 PatternSet用于选择从存档中提取的文件 资源集合用于选择执行解压的存档文件 Unjar Unwar Unzip只支持基于文
  • 并发编程系列之Fork/Join

    前言 上节我们讲了阻塞队列 Java中的并发容器就算有了个基本的认识 今天我们来介绍一种线程工作模式 叫Fork Join 他是JDK7之后提供的一个并行执行框架 主要的思想我觉得是分而治之 将一个大的任务分成多个小的任务并行执行 然后等所
  • 成为技术传播者(二):Why and Why NOT

    前文 成为技术传播者 一 写在前面 Contributing to Eclipse的开篇第一句话说得很有味道 Humans need to feel nurtured and cared for Humans also need to nu
  • 关于vs编译错误CL.exe已退出的解决方案

    IDE问题 VS2010突然无法编辑C 项目 会报错误 30 error MSB6006 CL exe 已退出 代码为 1073741701 这个问题是 我也碰到了 你改一下设置就好了 一劳永逸 随便打开一个项目 点击 视图 gt 属性管理
  • Vue 项目打包之后,CSS 找不到问题

    Vue 项目打包之后 CSS 找不到问题 记录日常开发中遇到的 坑 问题 我把vue项目打包之后放在本地的web环境下可以正常显示 但是我放到 nginx 服务器之后 找不到 css 文件 当时配置如下图 解决办法 我将 打包的路径从 v4
  • fastx常用控件

    目录 表格控件 bootstrap table 日历控件 bootstrap datepicker 通用帮助框 单选 多选 bootstrap标签页 通过设置数据字典来设置下拉框的值 表格控件 bootstrap table 自带搜索框 等
  • c++文件读写操作

    1 声明头文件 include 2 实例化对象 ifstream fin ifstream是中的一个类 fin是一个实例化对象 之所以起这个名字是类比cin 实际上他们有很多相似的地方 3 fin open 文件名 打开方式 本文的打开方式
  • 【机器视觉】——裂纹检测笔记

    目录 传统算法处理裂缝的基本思路 第一种思路 第二种思路 第三种思路 CPP代码 halcon代码 python代码 Matlab代码 深度学习缺陷检测 裂缝检测文献 传统算法处理裂缝的基本思路 第一种思路 1 先转换彩色图为灰度图 2 进