在机器视觉领域,算法是核心中的核心,无论是预处理还是检测,都离不开一套成熟的方法论。下面先梳理一下常用的图像处理算法,它们构成了整个视觉系统的底层能力。
常用的图像处理算法
1、图像变换
图像变换主要覆盖四个方面:空域与频域、几何变换、色度变换、尺度变换。几何变换包括图像的平移、旋转、镜像、转置;尺度变换则涉及图像缩放,以及最近邻插值、线性插值、双三次插值等插值算法。
空域与频域间的变换是重点——图像阵列通常很大,直接在空间域处理计算量惊人。因此,有时需要转换到频域处理,比如傅立叶变换、沃尔什变换、离散余弦变换等。这些间接处理技术不仅能减少计算量,还能获得更有效的处理效果,例如在频域中进行数字滤波。
2、图像增强
图像增强不考虑降质原因,目的是突出图像中感兴趣的部分。比如强化高频分量能让物体轮廓清晰、细节明显;强化低频分量则可以减少噪声影响。具体方法包括:
- 灰度变换增强:线性、分段线性、非线性灰度变换
- 直方图增强:直方图统计、直方图均衡化
- 图像平滑/降噪:邻域平均法、加权平均法、中值滤波、非线性均值滤波、高斯滤波、双边滤波
- 图像(边缘)锐化:梯度锐化,Roberts算子、Laplace算子、Sobel算子等
3、纹理分析
包括取骨架、连通性分析等操作,常用于表面纹理和结构特征的提取。
4、图像分割
图像分割是将图像中有意义的特征部分提取出来,这些特征包括边缘、区域等,它是后续识别、分析和理解的基础。主要方法有:
- 阈值分割:固定阈值、最优/OTSU阈值、自适应阈值
- 基于边界分割:Canny边缘检测、轮廓提取、边界跟踪
- Hough变换:直线检测、圆检测
- 基于区域分割:区域生长、区域归并与分裂、聚类分割
- 色彩分割、分水岭分割
5、图像特征
特征是描述图像的关键,主要分为以下几类:
- 几何特征:位置与方向、周长、面积、长轴与短轴、距离(欧式距离、街区距离、棋盘距离)
- 形状特征:几何形态分析(Blob分析)包括矩形度、圆形度、不变矩、偏心率、多边形描述、曲线描述
- 幅值特征:矩、投影
- 直方图特征(统计特征):均值、方差、能量、熵、L1范数、L2范数等。这类方法计算简单,具有平移和旋转不变性,对颜色像素的精确空间分布不敏感,在表面检测、缺陷识别中应用广泛
- 颜色特征:颜色直方图、颜色矩
- 局部二值模式(LBP)特征:LBP对光照变化造成的灰度变化有很强的鲁棒性,应用于表面缺陷检测、指纹识别、OCR、人脸识别、车牌识别等。由于计算简单,也适合实时检测
6、图像/模板匹配
包括轮廓匹配、归一化积相关灰度匹配、不变矩匹配、最小均方误差匹配。
7、色彩分析
涉及色度、色密度、光谱、颜色直方图、自动白平衡等。
8、图像数据编码压缩和传输
编码压缩技术能减少描述图像的数据量,节省传输和处理时间,降低存储器占用。压缩可以在不失真或允许失真的条件下进行。编码是压缩中最重要且发展最早、最成熟的技术。
9、表面缺陷目标识别算法
传统方法包括贝叶斯分类、K最近邻(KNN)、人工神经网络(ANN)、支持向量机(SVM)、K-means等。
10、图像分类(识别)
属于模式识别范畴,主要内容是图像经过预处理(增强、复原、压缩)后,进行分割和特征提取,最终判决分类。
11、图像复原
图像复原需要对降质原因有一定了解,一般根据降质过程建立“降质模型”,再采用某种滤波方法恢复或重建原始图像。
现有可用的视觉检测软件/库
目前市场上可二次开发的视觉系统包括Labview、DVT、Halcon、OpenCV等。常用的视觉检测软件/库有Halcon、VisionPro、LabView、OpenCV,还有eVision、Mil、Sapera等。
(一)Halcon
Halcon是德国MVtec公司的机器视觉算法包,拥有广泛的集成开发环境。它由一千多个独立函数和底层数据管理核心构成,涵盖滤波、色彩、几何、数学转换、形态学计算、校正、分类、形状搜寻等功能。整个函数库可用C、C++、C#、Visual Basic和Delphi等语言访问,并为大量图像获取设备提供接口,保证硬件独立性。Halcon底层算法多、运算性能快、功能齐全,上手容易,项目开发周期短。不过它是商用收费的,价格较贵。
(二)OpenCV
OpenCV是一个开源跨平台计算机视觉库,可运行在Linux、Windows、Mac OS上。其核心由C函数和少量C++类构成,实现了图像处理和计算机视觉的很多通用算法。它支持C++主接口,也有Python、Ja va、MATLAB/OCTA VE接口,甚至支持C#、Ruby。OpenCV起源于Intel开源计算机视觉库,拥有300多个C函数,跨平台、免费(商业应用也免费)、速度快、使用方便。主要特征包括:用C/C++编写、开发实时应用、独立于操作系统和硬件、通用图像/视频读写模块、支持底层和高层开发。它能实现图像数据操作、输入输出、矩阵向量运算、动态数据结构、基本数字图像处理(滤波、边缘检测、角点检测、采样插值、色彩转换、形态操作、直方图、图像金字塔等)、结构分析(轮廓、距离变换、矩、模板匹配、Hough变换、多边形拟合、直线拟合、椭圆拟合、Delaunay三角剖分等)、摄像机标定、运动分析(光流、运动分割、跟踪)、目标识别(特征法、HMM)、基本GUI(图像显示、键盘鼠标事件、滚动条)以及图像标注等。相比Halcon,OpenCV功能算法略少,但开源可商用,开发周期相对较长,有些算法需要自己实现。
(三)VisionPro
VisionPro是美国康耐视(Cognex)公司的全套视觉解决方案。它提供多种开发工具——拖放式界面、简单指令码和编程方式,全面支持所有开发模式。用户利用VisionPro QuickBuild无需编程即可配置读取、选择并优化视觉工具,决定产品是否合格。也可用C++、C#、VB及.NET开发管理应用程序。Vision Pro的.NET接口允许用户用面向对象的高级语言访问所有工具,高效开发专用视觉方案。
(四)LabView
LabView是美国国家仪器(NI)公司的程序开发环境,使用图形化编辑语言G编写程序,产生的程序以框图形式呈现。LabView是NI设计平台的核心,适合开发测量或控制系统,集成了快速构建各种应用所需的工具,帮助工程师解决问题、提高生产力。
HSV颜色识别——HSV基本颜色分量范围
对颜色空间图像进行有效处理通常在HSV空间进行。对于基本色对应的HSV分量,需要给定严格的范围。以下是通过实验计算的模糊范围:H: 0–180,S: 0–255,V: 0–255。HSV(色相/饱和度/明度)颜色空间根据色相通道对颜色类型建模,在需要根据颜色分割对象的任务中非常有用。饱和度变化代表颜色成分多少,明度通道描述颜色的亮度。

