OpenCV | 告别人工目检:深度学习技术引领工业品缺陷检测新时代

文章目录

    • 机器视觉
    • 缺陷检测
    • 工业上常见缺陷检测方法
    • 内容简介
    • 作者简介
    • 目录
    • 读者对象
    • 如何阅读本书
    • 获取方式


机器视觉

机器视觉是使用各种工业相机,结合传感器跟电气信号实现替代传统人工,完成对象识别、计数、测量、缺陷检测、引导定位与抓取等任务。其中工业品的缺陷检测极大的依赖人工完成,特别是传统的3C制造环节,产品缺陷检测依赖于人眼睛来发现与检测,不仅费时费力还面临人员成本与工作时间等因素的制约。使用机器视觉来实现产品缺陷检测,可以节约大量时间跟人员成本,实现生产过程的自动化与流水线作业。

缺陷检测

常见得工业品缺陷主要包括划痕、脏污、缺失、凹坑、裂纹等,这些依赖人工目检(眼睛检测)的缺陷都可以通过机器视觉的缺陷检测算法来实现替代。当前工业缺陷检测算法目前主要分为两个方向,基于传统视觉的算法和基于深度学习的算法,前者主要依靠对检测目标的特征进行量化,比如颜色,形状,长宽,角度,面积等,好处是可解释性强、对样本数量没有要求、运行速度快,缺点是依赖于固定的光照成像,稍有改动就要改写程序重新部署,而且检测规则和算法跟开发者经验其主导作用。基于深度学习的缺陷检测算法刚好能弥补前者的不足之处,能够很好适应不同的光照,更好地适配同类缺陷要求,缺点是对样本数量有一定要求,对硬件配置相比传统也会有一定要求。

《OpenCV应用开发:入门、进阶与工程化实践》一书第十四 章 通过案例详细介绍基于OpenCV如何实现传统方式的缺陷检测跟基于深度学习的缺陷检测。

工业上常见缺陷检测方法

方法一:基于简单二值图像分析实现划痕提取,效果如下:
图片

方法二:复杂背景下的图像缺陷分析,基于频域增强的方法实现缺陷检测,运行截图:

图片

方法三:复杂背景下的图像缺陷分析,基于空域增强实现图像缺陷分析,针对复杂背景的图像,通过空域滤波增强以后实现缺陷查找,运行截图如下:

图片
方法四:基于样品模板比对实现基于空域增强实现图像缺陷分析,通过二之分析与轮廓比对实现缺陷查找,运行截图如下:
图片
方法五:基于深度学习UNet模型网络,实现裂纹与划痕检测,运行截图如下:
图片
方法六:基于深度学习实例分割网络模型网络,实现细微缺陷检测,运行截图如下:
图片
以上内容均来自最近出版的一本新书《OpenCV应用开发:入门、进阶与工程化实践》一书第十四章,分享给大家。

在这里插入图片描述

内容简介

本书专注于介绍OpenCV4在工业领域的常用模块,通过合理的章节设置构建了阶梯式的知识点学习路径。化繁就简、案例驱动,注重算法原理、代码演示及在相关场景的实际使用。本书还介绍了必备的深度学习知识与开发技巧,拓展OpenCV开发者技能。全书共16章,分为3篇。
● 基础篇(第1~4章):主要介绍OpenCV的简单使用、像素操作、色彩空间、图像直方图。
特色:从如何配置OpenCV开发环境开始到完成第一个OpenCV代码演示,从图像的表示到基本的像素操作,方便读者全面扎实地掌握基本图像处理知识与函数使用技巧,为深入学习打下坚实基础。
● 进阶篇(第5~12章):主要介绍卷积操作、二值图像分析、形态学分析、特征提取、视频分析、机器学习、DNN。
特色:结合代码演示学习OpenCV框架中主要图像处理模块的算法原理与相关函数使用,通过多个案例打通知识节点,学会使用OpenCV传统算法解决实际问题。
● 高级与实战篇(第13~16章):主要介绍YOLO 5自定义对象检测、缺陷检测、OpenVINO加速与CUDA加速。
特色:面向工程应用,帮助OpenCV开发者提升技能,通过实战案例增强OpenCV应用能力,掌握视觉开发必备的深度学习知识,以及从模型训练到部署加速的技巧。

作者简介

贾志刚
OpenVINO中文社区创始成员、英特尔物联网创新大使、华为晟腾HAE、51CTO学院金牌讲师。在机器视觉缺陷检测、生物医学细胞分类与检测识别、安防监控视频内容分析与提取、人工智能软件开发、深度学习框架集成开发等方面有深入研究,开发过多个图像处理算法模块并成功应用在医学检测与工业检测领域。开设有公众号“OpenCV学堂”,并著有《Java数字图像处理:编程技巧与应用实践》《OpenCV Android开发实战》等书。

张 振
上海赫立苏州研究院(赫芯科技)院长,具备丰富的机器视觉检测一线研发、管理与运营经验。深耕半导体/SMT缺陷检测领域10余年,拥有自主知识产权的软件和相关专利数十项。多年成功创业经历,积累了丰富的研发创新和团队管理经验,并参与市场与客户需求分析、技术分析与评估、方案制订、算法迭代、验收指标制定、标准机型量产的全流程管理与实践。

目录

前言

基础篇

第1章 OpenCV简介与安装 / 2

1.1 OpenCV简介 / 2

1.1.1 OpenCV历史 / 2

1.1.2 OpenCV的模块与功能 / 3

1.1.3 OpenCV4里程碑 / 4

1.1.4 OpenCV发展现状与

应用趋势 / 4

1.2 OpenCV源码项目 / 4

1.3 OpenCV4开发环境搭建 / 5

1.4 第一个OpenCV开发程序 / 6

1.5 图像加载与保存 / 7

1.5.1 加载图像 / 7

1.5.2 保存图像 / 8

1.6 加载视频 / 9

1.7 小结 / 12

第2章 Mat与像素操作 / 13

2.1 Mat对象 / 13

2.1.1 什么是Mat对象 / 13

2.1.2 一切图像皆Mat / 14

2.1.3 Mat类型与深度 / 15

2.1.4 创建Mat / 15

2.2 访问像素 / 18

2.2.1 遍历Mat中的像素 / 18

2.2.2 像素算术运算 / 20

2.2.3 位运算 / 21

2.2.4 调整图像亮度与对比度 / 22

2.3 图像类型与通道 / 23

2.3.1 图像类型 / 23

2.3.2 图像通道 / 23

2.3.3 通道操作 / 24

2.4 小结 / 25

第3章 色彩空间 / 26

3.1 RGB色彩空间 / 26

3.2 HSV色彩空间 / 28

3.3 LAB色彩空间 / 29

3.4 色彩空间的转换与应用 / 30

3.5 小结 / 31

第4章 图像直方图 / 32

4.1 像素统计信息 / 32

4.2 直方图的计算与绘制 / 34

4.2.1 直方图计算 / 35

4.2.2 直方图绘制 / 36

4.3 直方图均衡化 / 37

4.4 直方图比较 / 40

4.5 直方图反向投影 / 41

4.6 小结 / 43

进阶篇

第5章 卷积操作 / 46

5.1 卷积的概念 / 46

5.2 卷积模糊 / 49

5.3 自定义滤波 / 53

5.4 梯度提取 / 56

5.5 边缘发现 / 59

5.6 噪声与去噪 / 61

5.7 边缘保留滤波 / 64

5.8 锐化增强 / 66

5.9 小结 / 68

第6章 二值图像 / 70

6.1 图像阈值化分割 / 70

6.2 全局阈值计算 / 72

6.3 自适应阈值计算 / 76

6.4 去噪与二值化 / 77

6.4.1 去噪对二值化的影响 / 77

6.4.2 其他方式的二值化 / 78

6.5 小结 / 79

第7章 二值分析 / 80

7.1 二值图像分析概述 / 80

7.2 连通组件标记 / 82

7.3 轮廓发现 / 85

7.3.1 轮廓发现函数 / 85

7.3.2 轮廓绘制函数 / 87

7.3.3 轮廓发现与绘制的示例

代码 / 87

7.4 轮廓测量 / 88

7.5 拟合与逼近 / 90

7.6 轮廓分析 / 95

7.7 直线检测 / 97

7.8 霍夫圆检测 / 99

7.9 最大内接圆与最小外接圆 / 101

7.10 轮廓匹配 / 102

7.11 最大轮廓与关键点编码 / 104

7.12 凸包检测 / 106

7.13 小结 / 107

第8章 形态学分析 / 108

8.1 图像形态学概述 / 108

8.2 膨胀与腐蚀 / 109

8.3 开/闭操作 / 111

8.4 形态学梯度 / 113

8.5 顶帽与黑帽 / 115

8.6 击中/击不中 / 116

8.7 结构元素 / 119

8.8 距离变换 / 120

8.9 分水岭分割 / 121

8.10 小结 / 124

第9章 特征提取 / 125

9.1 图像金字塔 / 125

9.1.1 高斯金字塔 / 125

9.1.2 拉普拉斯金字塔 / 128

9.1.3 图像金字塔融合 / 129

9.2 Harris角点检测 / 131

9.3 shi-tomas角点检测 / 133

9.4 亚像素级别的角点检测 / 135

9.5 HOG特征与使用 / 137

9.5.1 HOG特征描述子 / 137

9.5.2 HOG特征行人检测 / 139

9.6 ORB特征描述子 / 140

9.6.1 关键点与描述子提取 / 140

9.6.2 描述子匹配 / 144

9.7 基于特征的对象检测 / 148

9.7.1 单应性矩阵计算方法 / 148

9.7.2 特征对象的位置发现 / 150

9.8 小结 / 152

第10章 视频分析 / 153

10.1 基于颜色的对象跟踪 / 153

10.2 视频背景分析 / 155

10.3 帧差法背景分析 / 157

10.4 稀疏光流分析法 / 158

10.5 稠密光流分析法 / 161

10.6 均值迁移分析 / 163

10.7 小结 / 166

第11章 机器学习 / 167

11.1 KMeans分类 / 167

11.1.1 KMeans图像语义

分割 / 167

11.1.2 提取主色彩构建色卡 / 170

11.2 KNN分类 / 172

11.2.1 KNN函数支持 / 172

11.2.2 KNN实现手写数字

识别 / 173

11.3 SVM分类 / 175

11.3.1 SVM的原理与分类 / 175

11.3.2 SVM函数 / 176

11.3.3 SVM实现手写数字

识别 / 176

11.4 SVM与HOG实现对象检测 / 177

11.4.1 数据样本特征提取 / 178

11.4.2 SVM特征分类 / 179

11.4.3 构建SVM对象检测器 / 179

11.5 小结 / 181

第12章 深度神经网络 / 182

12.1 DNN概述 / 182

12.2 图像分类 / 183

12.3 对象检测 / 186

12.3.1 SSD对象检测 / 187

12.3.2 Faster-RCNN对象

检测 / 188

12.3.3 YOLO对象检测 / 190

12.4 ENet图像语义分割 / 193

12.5 风格迁移 / 195

12.6 场景文字检测 / 197

12.7 人脸检测 / 199

12.8 小结 / 201

高级与实战篇

第13章 YOLO 5自定义对象

检测 / 204

13.1 YOLO 5对象检测框架 / 204

13.2 YOLO 5对象检测 / 205

13.3 自定义对象检测 / 208

13.3.1 数据集制作与生成 / 209

13.3.2 模型训练与查看损失

曲线 / 210

13.3.3 模型导出与部署 / 211

13.4 小结 / 212

第14章 缺陷检测 / 213

14.1 简单背景下的缺陷检测 / 213

14.2 复杂背景下的缺陷检测 / 216

14.2.1 频域增强的缺陷检测 / 216

14.2.2 空间域增强的缺陷检测 / 219

14.3 案例:刀片缺陷检测 / 220

14.4 基于深度学习的缺陷检测 / 222

14.4.1 基于分类的缺陷检测 / 223

14.4.2 基于分割的缺陷检测 / 226

14.5 小结 / 228

第15章 OpenVINO加速 / 229

15.1 OpenVINO框架安装与环境

配置 / 229

15.1.1 OpenVINO安装 / 230

15.1.2 配置C++开发支持 / 232

15.2 OpenVINO2022.x版SDK

推理演示 / 233

15.2.1 推理SDK介绍 / 234

15.2.2 推理SDK演示 / 235

15.3 OpenVINO支持UNet部署 / 236

15.4 OpenVINO支持YOLO 5

部署 / 237

15.5 小结 / 239

第16章 CUDA加速 / 240

16.1 编译OpenCV源码支持CUDA

加速 / 240

16.2 用CUDA加速传统图像处理 / 245

16.2.1 Mat与GpuMat / 245

16.2.2 加速图像处理与视频

分析 / 246

16.3 加速DNN / 248

16.4 小结 / 249

读者对象

本书适合以下读者阅读:

  • 计算机视觉领域的从业者。
  • OpenCV的爱好者。
  • 高等院校相关专业的师生。
  • C++/Python开发者。

如何阅读本书

本书共16章,分为3篇,由浅入深地讲解OpenCV的技术及应用。
基础篇(第1~4章)主要介绍了OpenCV4框架中基础模块相关的图像知识、函数及应用。
进阶篇(第5~12章)深入介绍了OpenCV4核心模块的功能与应用场景,主要包括图像卷积、二值分析、形态学分析、特征提取、视频分析、机器学习模块等,其中穿插大量实践案例。
高级与实战篇(第13~16章)全面介绍了OpenCV4支持的各种性能加速技术与深度学习模型推理技术,从项目实现出发,讲解了对象检测、缺陷检测、深度学习模型加速等高级应用层面的OpenCV开发技术。

获取方式

京东图书:《OpenCV4应用开发:入门、进阶与工程化实践》(贾志刚,张振)

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

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

相关文章

听GPT 讲Rust源代码--src/tools(21)

File: rust/src/tools/miri/src/shims/x86/mod.rs 在Rust的源代码中,rust/src/tools/miri/src/shims/x86/mod.rs文件的作用是为对x86平台的处理提供支持。它包含一些用于模拟硬件操作的shim函数和相关的类型定义。 具体来说,该文件中的函数是通过使用一组…

华为---登录USG6000V防火墙---console、web、telnet、ssh方式登录

目录 一、环境搭建 二、第一次登录USG6000V防火墙,即通过console方式登录 三、用户配置 四、web登录USG6000V防火墙 1. 用web创建的用户通过web方式登录USG6000V防火墙 2. 命令行创建的用户通过web方式登录USG6000V防火墙 五、ssh方式登录USG6000V防火墙 1. 用…

STM32CubeMX配置HAL库输入捕获

STM32CubeMX配置HAL库输入捕获 STM32的输入捕获功能可以用来测量脉冲宽度或者频率。其工作原理是,通过检测TIMx_CHx上的边沿信号,在边沿信号发生跳变(比如 上升沿/下降沿)的时候,将当前定时器的值(TIMx_C…

被有道云笔记成功劝退拥抱Joplin(Joplin使用过程遇到的问题)

本人职业程序员,培训讲师(技术类)、活动主持人,对多端阅读是有些需求的,平时习惯墨水平板、手机和笔记本电脑登录着有道云笔记。其实本人对内容比较重视,对有道云笔记提供的什么AI服务、PDF转Word等功能是没…

【python】进阶--->网络编程(二)

一、分层模型 OSI/RM(开放系统互联参考模型) 是由国际标准化组织提出来的一种网络互联模型,成为所有的销售商都能实现的开放网络模型.(OSI模型提供我们理解网络协议的内部运作) OSI模型将网络通信工作分为7层,每一层为上一层服务,并为上一层提供一个访问的接口或者界面. 越下…

用Minikube 搭建一个单机k8s玩玩

Minikube 介绍 Minikube是一款单机搭建和管理Kubernetes集群的工具。与Kind 类似,但是个人认为比Kind 好用 Minikube 安装 mac如果安装了 Homebrew,直接执行以下命令安装minikube brew install minikubemac没有安装Homebrew,需要到官网下载选择系统配置…

【Prometheus|报错】Out of bounds

【背景】进入Prometheus地址的9090端口,pushgateway(0/1)error : out of bounds 【排查分析】 1、out of bounds报错,是由于Prometheus向tsdb存数据出错,与最新存数据的时间序列有问题,有可能当前时间与最…

VGGNet

目录 一、VGGNet介绍 1、VGG块 2、VGG架构 3、LeNet, AlexNet和VGGNet对比 4、总结 二、代码实现 1、定义VGG卷积块 2、VGG网络 3、训练模型 4、总结 一、VGGNet介绍 VGGNet(Visual Geometry Group Network)是一种深度卷积神经网络,…

Android Studio 安装和使用

前些天,打开了几年前的一个Android Studio app项目,使用安卓虚拟机仿真app崩溃,怀疑是不是中间升级过Android Studio导致异常的,马上脑子一热卸载了,结果上次踩过的坑,一个没少又踩一次,谨以此文…

系列十二(面试)、Java中的GC回收类型有哪些?

一、Java中的GC回收类型 1.1、概述 Java中的GC回收类型主要包含以下几种,即:UseSerialGC、UseParallelGC、UseConcMarkSweepGC、UseParNewGC、UseParallelOldGC、UseG1GC。 1.2、源码

Linux:sudo给予账户特定的权限

我们某些用户权限比较低,如果我们他们的权限提高,或者假如搞权限的组,那么会大大减少安全性,我们可以使用sudo对他们开放指定的命令 我这里有 a1—3 3个用户,现在我切换到a1执行一下重启的命令 发现我们这个用户并无…

【vtkWidgetRepresentation】第十六期 vtkContourRepresentation(三)

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 前言 本文分享vtkContourLineInterpolator接口的源码剖析和实例应用,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 目录 前言 …

Uniapp 开发 BLE

BLE 低功耗蓝牙(Bluetooth Low Energy,或称Bluetooth LE、BLE,旧商标Bluetooth Smart),用于医疗保健、运动健身、安防、工业控制、家庭娱乐等领域。在如今的物联网时代下大放异彩,扮演者重要一环&#xff…

Ubuntu 常用命令之 man 命令用法介绍

📑Linux/Ubuntu 常用命令归类整理 man命令在Ubuntu系统中是一个非常重要的命令,它用于查看系统的手册页。手册页是Linux和Unix系统中的一种在线文档,用于描述系统中的命令、函数、配置文件等的详细信息。 man命令的基本格式是 man [选项] …

如何开发一套家政预约小程序,家政系统有哪些功能?

家政服务小程序保洁上门预约维修 同城师傅入驻抢单派单平台开发 家政保洁预约小程序的功能与特点; 一、功能介绍 1. 小程序与公众号无缝对接,支持员工预约、项目预约两种方式,用户可随时在线预约,享受便捷服务。 2. 商家在预约小程…

WiFi+蓝牙物联网定制方案——五大核心难点

WiFi蓝牙物联网定制方案可以根据具体需求进行定制: 1、设备连接方案:采用WiFi和蓝牙技术,将物联网设备与智能手机、平板电脑等设备进行连接,实现数据传输和远程控制。 2、数据传输方案:通过WiFi和蓝牙技术,…

安全基础~实战应用

文章目录 HTTP请求头应用X-Forwarded-ForHTTP动作练习(修改请求方式)浏览器信息伪造(修改User-Agent)来源请求伪造(referer应用) 密码的应用SQL注入漏洞测试(前部分)PHP_encrypt_1(ISCCCTF) XShell连接Linxu连接Windows连接 HTTP请求头应用 X-Forwarded-For 原理作用 一般的…

SpringBoot+Redis的Bloom过滤器

1.保姆级Linux安装Redis ①把redis.tar.gz下载到linux中,并用命令tar -zxvf安装 ②安装完成进入目录输入make进行编译,编译完成后输入make install 进行安装 ③创建两个文件夹mkdir bin mkdir etc 将redis目录下的redis.conf文件移动到etc文件中&…

磁盘类型选择对阿里云RDS MySQL的性能影响

测试说明 这是一个云数据库性能测试系列,旨在通过简单标准的性能测试,帮助开发者、企业了解云数据库的性能,以选择适合的规格与类型。这个系列还包括: * 云数据库(RDS MySQL)性能深度测评与对比 * 阿里云RDS标准版(x86) vs 经济…

医院影像科PACS系统源码,医学影像系统,支持MPR、CPR、MIP、SSD、VR、VE三维图像处理

PACS系统是医院影像科室中应用的一种系统,主要用于获取、传输、存档和处理医学影像。它通过各种接口,如模拟、DICOM和网络,以数字化的方式将各种医学影像,如核磁共振、CT扫描、超声波等保存起来,并在需要时能够快速调取…