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

本文主要是介绍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简介与安装 / 21.1 OpenCV简介 / 21.1.1 OpenCV历史 / 21.1.2 OpenCV的模块与功能 / 31.1.3 OpenCV4里程碑 / 41.1.4 OpenCV发展现状与应用趋势 / 41.2 OpenCV源码项目 / 41.3 OpenCV4开发环境搭建 / 51.4 第一个OpenCV开发程序 / 61.5 图像加载与保存 / 71.5.1 加载图像 / 71.5.2 保存图像 / 81.6 加载视频 / 91.7 小结 / 12第2章 Mat与像素操作 / 132.1 Mat对象 / 132.1.1 什么是Mat对象 / 132.1.2 一切图像皆Mat / 142.1.3 Mat类型与深度 / 152.1.4 创建Mat / 152.2 访问像素 / 182.2.1 遍历Mat中的像素 / 182.2.2 像素算术运算 / 202.2.3 位运算 / 212.2.4 调整图像亮度与对比度 / 222.3 图像类型与通道 / 232.3.1 图像类型 / 232.3.2 图像通道 / 232.3.3 通道操作 / 242.4 小结 / 25第3章 色彩空间 / 263.1 RGB色彩空间 / 263.2 HSV色彩空间 / 283.3 LAB色彩空间 / 293.4 色彩空间的转换与应用 / 303.5 小结 / 31第4章 图像直方图 / 324.1 像素统计信息 / 324.2 直方图的计算与绘制 / 344.2.1 直方图计算 / 354.2.2 直方图绘制 / 364.3 直方图均衡化 / 374.4 直方图比较 / 404.5 直方图反向投影 / 414.6 小结 / 43进阶篇第5章 卷积操作 / 465.1 卷积的概念 / 465.2 卷积模糊 / 495.3 自定义滤波 / 535.4 梯度提取 / 565.5 边缘发现 / 595.6 噪声与去噪 / 615.7 边缘保留滤波 / 645.8 锐化增强 / 665.9 小结 / 68第6章 二值图像 / 706.1 图像阈值化分割 / 706.2 全局阈值计算 / 726.3 自适应阈值计算 / 766.4 去噪与二值化 / 776.4.1 去噪对二值化的影响 / 776.4.2 其他方式的二值化 / 786.5 小结 / 79第7章 二值分析 / 807.1 二值图像分析概述 / 807.2 连通组件标记 / 827.3 轮廓发现 / 857.3.1 轮廓发现函数 / 857.3.2 轮廓绘制函数 / 877.3.3 轮廓发现与绘制的示例代码 / 877.4 轮廓测量 / 887.5 拟合与逼近 / 907.6 轮廓分析 / 957.7 直线检测 / 977.8 霍夫圆检测 / 997.9 最大内接圆与最小外接圆 / 1017.10 轮廓匹配 / 1027.11 最大轮廓与关键点编码 / 1047.12 凸包检测 / 1067.13 小结 / 107第8章 形态学分析 / 1088.1 图像形态学概述 / 1088.2 膨胀与腐蚀 / 1098.3 开/闭操作 / 1118.4 形态学梯度 / 1138.5 顶帽与黑帽 / 1158.6 击中/击不中 / 1168.7 结构元素 / 1198.8 距离变换 / 1208.9 分水岭分割 / 1218.10 小结 / 124第9章 特征提取 / 1259.1 图像金字塔 / 1259.1.1 高斯金字塔 / 1259.1.2 拉普拉斯金字塔 / 1289.1.3 图像金字塔融合 / 1299.2 Harris角点检测 / 1319.3 shi-tomas角点检测 / 1339.4 亚像素级别的角点检测 / 1359.5 HOG特征与使用 / 1379.5.1 HOG特征描述子 / 1379.5.2 HOG特征行人检测 / 1399.6 ORB特征描述子 / 1409.6.1 关键点与描述子提取 / 1409.6.2 描述子匹配 / 1449.7 基于特征的对象检测 / 1489.7.1 单应性矩阵计算方法 / 1489.7.2 特征对象的位置发现 / 1509.8 小结 / 152第10章 视频分析 / 15310.1 基于颜色的对象跟踪 / 15310.2 视频背景分析 / 15510.3 帧差法背景分析 / 15710.4 稀疏光流分析法 / 15810.5 稠密光流分析法 / 16110.6 均值迁移分析 / 16310.7 小结 / 166第11章 机器学习 / 16711.1 KMeans分类 / 16711.1.1 KMeans图像语义分割 / 16711.1.2 提取主色彩构建色卡 / 17011.2 KNN分类 / 17211.2.1 KNN函数支持 / 17211.2.2 KNN实现手写数字识别 / 17311.3 SVM分类 / 17511.3.1 SVM的原理与分类 / 17511.3.2 SVM函数 / 17611.3.3 SVM实现手写数字识别 / 17611.4 SVM与HOG实现对象检测 / 17711.4.1 数据样本特征提取 / 17811.4.2 SVM特征分类 / 17911.4.3 构建SVM对象检测器 / 17911.5 小结 / 181第12章 深度神经网络 / 18212.1 DNN概述 / 18212.2 图像分类 / 18312.3 对象检测 / 18612.3.1 SSD对象检测 / 18712.3.2 Faster-RCNN对象检测 / 18812.3.3 YOLO对象检测 / 19012.4 ENet图像语义分割 / 19312.5 风格迁移 / 19512.6 场景文字检测 / 19712.7 人脸检测 / 19912.8 小结 / 201高级与实战篇第13章 YOLO 5自定义对象检测 / 20413.1 YOLO 5对象检测框架 / 20413.2 YOLO 5对象检测 / 20513.3 自定义对象检测 / 20813.3.1 数据集制作与生成 / 20913.3.2 模型训练与查看损失曲线 / 21013.3.3 模型导出与部署 / 21113.4 小结 / 212第14章 缺陷检测 / 21314.1 简单背景下的缺陷检测 / 21314.2 复杂背景下的缺陷检测 / 21614.2.1 频域增强的缺陷检测 / 21614.2.2 空间域增强的缺陷检测 / 21914.3 案例:刀片缺陷检测 / 22014.4 基于深度学习的缺陷检测 / 22214.4.1 基于分类的缺陷检测 / 22314.4.2 基于分割的缺陷检测 / 22614.5 小结 / 228第15章 OpenVINO加速 / 22915.1 OpenVINO框架安装与环境配置 / 22915.1.1 OpenVINO安装 / 23015.1.2 配置C++开发支持 / 23215.2 OpenVINO2022.x版SDK推理演示 / 23315.2.1 推理SDK介绍 / 23415.2.2 推理SDK演示 / 23515.3 OpenVINO支持UNet部署 / 23615.4 OpenVINO支持YOLO 5部署 / 23715.5 小结 / 239第16章 CUDA加速 / 24016.1 编译OpenCV源码支持CUDA加速 / 24016.2 用CUDA加速传统图像处理 / 24516.2.1 Mat与GpuMat / 24516.2.2 加速图像处理与视频分析 / 24616.3 加速DNN / 24816.4 小结 / 249

读者对象

本书适合以下读者阅读:

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

如何阅读本书

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

获取方式

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

这篇关于OpenCV | 告别人工目检:深度学习技术引领工业品缺陷检测新时代的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/525202

相关文章

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

Go中sync.Once源码的深度讲解

《Go中sync.Once源码的深度讲解》sync.Once是Go语言标准库中的一个同步原语,用于确保某个操作只执行一次,本文将从源码出发为大家详细介绍一下sync.Once的具体使用,x希望对大家有... 目录概念简单示例源码解读总结概念sync.Once是Go语言标准库中的一个同步原语,用于确保某个操

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

五大特性引领创新! 深度操作系统 deepin 25 Preview预览版发布

《五大特性引领创新!深度操作系统deepin25Preview预览版发布》今日,深度操作系统正式推出deepin25Preview版本,该版本集成了五大核心特性:磐石系统、全新DDE、Tr... 深度操作系统今日发布了 deepin 25 Preview,新版本囊括五大特性:磐石系统、全新 DDE、Tree

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

opencv实现像素统计的示例代码

《opencv实现像素统计的示例代码》本文介绍了OpenCV中统计图像像素信息的常用方法和函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 统计像素值的基本信息2. 统计像素值的直方图3. 统计像素值的总和4. 统计非零像素的数量

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert