Machine Vision
机器视觉使用摄像头、受控照明和图像分析,在生产线上实时检查、测量、识别和引导零部件。
机器视觉(MV)是指在工业自动化中使用相机、光学器件、照明和图像分析来检查产品、测量零件、读取代码并引导机器;每项检测结果都会触发相应操作,例如剔除或分拣零件,或控制机器人。它是融入控制回路的计算机视觉:包装生产线上的视觉系统必须在生产线的周期时间内完成每项判断——高速灌装线上每个零件只有几十毫秒——并通过数字 I/O 或工业网络将结果报告给可编程逻辑控制器(PLC)。机器视觉的任务通常分为四类:引导(为机器人定位零件)、检测(查找缺陷和缺失特征)、测量(测量尺寸)和识别(读取条形码、数据矩阵码和印刷文本,即光学字符识别)。
机器视觉、计算机视觉与图像处理的区别#
机器视觉将图像处理(通过滤除噪声或锐化边缘来变换图像)和计算机视觉(在各种场景中从图像中提取含义)应用于工业机器。机器视觉的定义取决于其硬件和集成方式:受控的照明和光学器件、由生产线传感器触发的相机、确定性的时序,以及连接到执行器的输出。这三个领域的区别主要在于范围;现代机器视觉系统运行的深度学习模型与其他计算机视觉应用使用的模型相同。
机器视觉系统的组成部分#
- 照明: 照明决定相机能看到什么。背光可将零件变成轮廓清晰的剪影,便于精确测量边缘;漫射穹顶灯可抑制光亮表面的眩光;低角度暗场灯可突出划痕和压印字符;投射的激光线则可显示 3D 高度轮廓。
- 光学器件: 远心镜头会在零件距离变化时保持放大率不变,因此测量结果不受零件位置影响。
- 相机: 面阵相机通过一次曝光拍摄离散零件;线阵相机逐行构建钢材、纸张和纺织品等连续材料的图像;3D 传感器则使用激光三角测量、立体视觉或飞行时间技术。GigE Vision、USB3 Vision 和 GenICam 等接口标准让软件能够控制不同厂商的相机。
- 处理与 I/O: 光电传感器或编码器触发每次采集,智能相机或工业 PC 运行分析,结果则发送给 PLC;如今,这类处理越来越多地运行在配备 GPU 或 NPU 的边缘硬件上。
基于规则的工具与深度学习#
传统机器视觉软件会串联一系列确定性工具:阈值处理、斑点分析、边缘检测、模式匹配,以及测量边缘间距的卡尺工具。下面的示例对硬币照片运行斑点分析,统计零件数量并测量其尺寸:
import numpy as np
from scipy import ndimage as ndi
from skimage import data, filters, measure, segmentation
# Grayscale photo of 24 Greek coins on a gray background, bundled with scikit-image
image = data.coins()
# Seed the background (dark) and the parts (bright), then grow both along edge strength
markers = np.zeros_like(image)
markers[image < 30] = 1
markers[image > 150] = 2
mask = ndi.binary_fill_holes(segmentation.watershed(filters.sobel(image), markers) == 2)
# Blob analysis: label each part, ignore specks, and gauge each diameter in pixels
parts = [r for r in measure.regionprops(measure.label(mask)) if r.area > 300]
diameters = [part.equivalent_diameter_area for part in parts]
print(f"{len(parts)} parts, diameters {min(diameters):.0f}-{max(diameters):.0f} px")程序会打印 24 parts, diameters 37-63 px:每枚硬币都被找到并测量。在生产系统中,还会将每枚硬币的直径与公差进行比较,并将结果发送给 PLC。这张照片中的背景从左上方开始逐渐变亮,且与硬币的灰度范围重叠,因此单个全局 Otsu 阈值会将图像分成 96 个斑点;在生产线上,受控照明可以避免这个问题。
基于规则的工具速度快、可解释性强,在几何形状固定的零件上也能精确工作,但难以应对木纹、食品或形态多样的外观缺陷等自然变化。目标检测、实例分割和异常检测模型可以从示例中学习这些情况。在缺陷图像上训练的 YOLO26分割模型会逐像素勾勒划痕和裂纹;Ultralytics 的导出模式可将模型转换为 TensorRT 或 OpenVINO,使实时推理在工业 PC 或 NVIDIA Jetson上满足生产线的节拍要求。










