1. 课程导学与视觉基础
大家好,欢迎来到《边缘检测与Blob分析缺陷定位实战》。我是这门课的主讲,一个在机器视觉行业摸爬滚打了十来年的工程师。
说实话,刚入行那会儿,我也觉得缺陷检测不就是“找不同”嘛。直到第一次在产线上被老师傅指着屏幕问:“这个0.3毫米的划痕你算法漏了,知道为什么吗?”——嗯,从那以后,我再也不敢小看任何一个像素。
这一章,我们先不急着写代码。先把地图摊开,看看我们要去哪,路上会经过哪些站。
1.1 机器视觉是什么?
机器视觉,说白了就是给机器装上“眼睛”和“大脑”。
- 眼睛:工业相机、镜头、光源,负责把物理世界变成数字图像。
- 大脑:算法和软件,负责从图像里提取信息、做出判断。
我经常跟新人讲:视觉系统不是万能的。它最擅长干三件事——测量、识别、定位。而缺陷检测,其实是这三件事的综合体。
核心公式:
缺陷检测 = 边缘定位(找到边界) + Blob分析(找到区域) + 逻辑判断(判定好坏)
1.2 缺陷检测的应用场景
你可能觉得缺陷检测离生活很远。其实你手里的手机、桌上的饮料瓶、开的车,出厂前都被视觉系统“盯”过一遍。
| 行业 | 典型缺陷 | 检测难点 |
|---|---|---|
| 3C电子 | 屏幕划痕、PCB焊点不良、芯片引脚歪斜 | 反光、微小、背景复杂 |
| 锂电/新能源 | 极片毛刺、隔膜褶皱、涂布不均匀 | 高速运动、对比度低 |
| 汽车零部件 | 密封圈缺料、轴承表面裂纹、螺纹损伤 | 曲面、金属反光 |
| 食品/制药 | 包装破损、胶囊缺失、液位异常 | 透明、高速、卫生要求 |
| 纺织/印刷 | 布匹断纱、印刷套色偏差、图案污点 | 纹理干扰、幅面大 |
我曾经在锂电产线上遇到过一个问题:极片毛刺只有20微米,普通算法根本抓不到。后来我用边缘检测配合亚像素定位,才勉强搞定。你看,这就是实战和课本的区别。
1.3 课程项目演示
这门课不是纯理论课。我们围绕一个核心项目展开:工业零件表面缺陷自动检测系统。
先给你看看最终效果(别急,代码会一行行教):
# 伪代码示意——最终项目核心流程
image = load_image("零件.bmp")
edges = canny_edge_detect(image, low=50, high=150)
contours = find_contours(edges)
blobs = extract_blobs(contours, min_area=100)
defects = classify_defects(blobs, template="合格品")
output_report(defects)
整个项目会覆盖:
- 图像采集与预处理——怎么拍出好照片
- 边缘检测算法——Canny、Sobel、Laplacian实战对比
- Blob分析——连通域、形状特征、筛选策略
- 缺陷分类与定位——面积、周长、圆度、长宽比
- 系统集成与优化——速度、鲁棒性、误检率控制
我的建议:每章学完后,自己找几张缺陷图片跑一遍。代码我全给,但调参的经验,得自己摔跟头才能长记性。
1.4 学习路径与知识体系
30章内容,我把它分成5个阶段。你跟着走就行:
⚠️ 避坑指南:我曾经带过一个学员,跳过边缘检测直接学Blob分析。结果调了三天参数,缺陷就是找不准。后来回头补了Canny的滞后阈值原理,十分钟解决问题。基础不牢,地动山摇——这话在视觉领域尤其对。
1.5 你需要准备什么?
硬件方面,一台普通电脑就行。软件方面:
- Python 3.8+(推荐3.10)
- OpenCV 4.5+(推荐4.8)
- NumPy、Matplotlib(做可视化)
- 一个趁手的IDE(我用VS Code,PyCharm也行)
安装命令很简单:
pip install opencv-python==4.8.1.78
pip install numpy matplotlib
如果你用的是Anaconda,记得先建个虚拟环境:
conda create -n defect_detection python=3.10
conda activate defect_detection
pip install opencv-python numpy matplotlib
小技巧:第一次装OpenCV如果报错,多半是版本冲突。试试用 pip install opencv-python-headless,这个版本不依赖GUI库,服务器上也能用。
好了,地图已经摊开。下一站,我们直接进入图像预处理——怎么把一张“脏乱差”的工业图片,变成算法喜欢的样子。