机器视觉算法是计算机视觉领域的核心,通过模拟人类视觉系统赋予机器“看懂”世界的能力,这些算法从图像预处理到高级决策分析,覆盖了从像素级理解到场景级推理的全流程,广泛应用于工业检测、医疗影像、自动驾驶、安防监控等领域,以下将系统梳理主流机器视觉算法的分类、原理及应用场景。

图像预处理算法
图像预处理是机器视觉的基石,旨在提升图像质量、消除噪声并突出关键信息,为后续分析奠定基础。
- 灰度化与二值化:灰度化将彩色图像转换为灰度图像,减少计算量;二值化则通过设定阈值将图像转为黑白二值图像,适用于文字识别、边缘检测等场景。
- 滤波去噪:包括均值滤波、中值滤波、高斯滤波等,用于抑制图像中的随机噪声,中值滤波对椒盐噪声效果显著,而高斯滤波则适合处理高斯噪声。
- 图像增强:通过直方图均衡化、伽马校正等方法增强图像对比度,提升暗部或亮部细节的可见性,在低光照场景下,直方图均衡化可有效扩展像素动态范围。
- 几何变换:包括图像缩放、旋转、仿射变换等,用于校正图像畸变或调整视角,在车牌识别系统中,需通过透视变换将倾斜的车牌图像校正为正视图。
特征提取与描述算法
特征提取是从图像中提取关键信息(如边缘、角点、纹理)的过程,是实现目标识别的基础。
- 边缘检测:Canny、Sobel、Laplacian等算法用于检测图像中的边缘信息,Canny算法通过高斯滤波、非极大值抑制和双阈值检测,能精准定位边缘且抗噪性强,广泛应用于轮廓提取。
- 角点检测:Harris角点检测、Shi-Tomasi角点检测等用于识别图像中的“兴趣点”,这些点在视角变化时仍保持稳定,常用于图像匹配与三维重建。
- 特征描述子:SIFT(尺度不变特征变换)、SURF(加速鲁棒特征)、ORB( oriented FAST and rotated BRIEF)等算法提取的特征具有旋转、尺度不变性,SIFT在复杂场景下鲁棒性极高,但计算量大;ORB则通过二进制描述子实现实时处理,适用于移动端应用。
- 纹理与形状特征:灰度共生矩阵(GLCM)用于提取纹理特征(如粗糙度、对比度);Hu矩、Zernike矩等则描述图像的整体形状,适用于目标分类与识别。
图像分割算法
图像分割将图像划分为具有相似属性的区域,是实现目标定位与场景理解的关键步骤。

- 阈值分割:通过设定阈值将像素分为 foreground 和 background,简单高效但仅适用于灰度分布明显的图像,自适应阈值分割(如Otsu算法)能根据图像局部特性动态调整阈值。
- 边缘分割:基于边缘检测的结果(如Canny边缘)进行区域划分,适合目标轮廓清晰的场景。
- 区域生长:从种子点出发,根据像素相似性逐步合并区域,适用于医学影像(如肿瘤区域分割)等需要精确边界的场景。
- 聚类分割:K-means、Mean Shift等算法通过像素颜色、空间特征聚类实现分割,适用于彩色图像分割。
- 深度学习分割:U-Net、Mask R-CNN等基于卷积神经网络(CNN)的算法能实现像素级语义分割,在医学影像分析、自动驾驶场景分割中表现优异。
目标检测与识别算法
目标检测定位图像中目标的位置并分类,识别则进一步判断目标的具体类别。
- 传统检测算法:Haar特征与Adaboost结合的人脸检测算法实时性强;HOG(方向梯度直方图)与SVM(支持向量机)组合常用于行人检测。
- 基于深度学习的检测:
- 两阶段检测器:如R-CNN系列(Faster R-CNN),通过生成候选区域再分类,精度高但速度较慢,适用于高精度要求的场景(如工业缺陷检测)。
- 单阶段检测器:如YOLO(You Only Look Once)、SSD(Single Shot MultiBox Detector),直接回归目标位置与类别,速度快,适合实时检测(如视频监控)。
- 目标识别算法:
- CNN分类网络:AlexNet、VGG、ResNet等通过卷积层提取特征,全连接层分类,广泛应用于图像分类任务。
- 迁移学习:在预训练模型(如ImageNet上的ResNet)基础上微调,适用于小样本场景,如医疗影像中的疾病识别。
三维视觉与姿态估计算法
三维视觉旨在从二维图像恢复三维信息,姿态估计则分析目标的空间姿态。
- 立体视觉:通过双目摄像头模拟人类双眼,利用视差计算深度信息,用于三维重建、机器人避障等。
- 结构光:通过投影特定光栅到物体表面,通过变形图案计算三维坐标,精度高,广泛应用于三维扫描、人脸识别。
- 姿态估计:2D姿态估计(如OpenPose)通过关键点检测定位人体关节;3D姿态估计(如HR-Net)结合多视角信息,实现人体、物体的三维姿态重建,用于动作分析、人机交互。
传统与深度学习算法的融合
传统算法(如特征提取)与深度学习(如CNN)的结合是当前趋势,在工业检测中,传统算法可快速定位缺陷区域,再通过CNN分类缺陷类型,兼顾效率与精度。

相关问答FAQs
Q1:机器视觉算法中,传统算法与深度学习算法如何选择?
A1:选择需根据场景需求权衡,传统算法(如SIFT、边缘检测)计算简单、实时性强,适用于资源受限或规则明确的场景(如尺寸测量);深度学习算法(如CNN、U-Net)通过数据驱动学习复杂特征,适用于非结构化场景(如自然场景下的目标识别),但需大量标注数据且计算资源消耗较大。
Q2:如何提升机器视觉算法在复杂光照下的鲁棒性?
A2:可通过以下方法优化:① 图像预处理阶段采用自适应直方图均衡化或Retinex算法增强光照不均匀图像;② 数据增强时模拟不同光照条件,扩充训练样本;③ 设计光照不变的特征(如纹理特征、归一化颜色特征);④ 采用深度学习中的注意力机制,让模型聚焦于光照不变的关键区域。

