2. 3D视觉基础
在汽车零部件3D视觉检测项目中,无论是测量孔径、检测平面度,还是识别焊缝轨迹,最终都要回归到对三维数据的理解和处理上。3D视觉并非单一技术,而是由传感器硬件、数学建模、数据处理算法共同构成的系统工程。本章将围绕点云、深度图、视差图、相机模型和坐标系转换这五个核心概念展开,帮助学员建立统一的3D视觉知识框架。这些概念是后续进行手眼标定、点云配准、尺寸测量和缺陷检测的基石,理解不透彻,后续所有算法调试都将缺乏方向感。
2.1 点云:三维空间的离散表达
点云是3D视觉中最直观、最常用的数据形式。它是一组在三维空间中具有坐标的点集合,每个点通常包含X、Y、Z坐标值,有时还附带强度(Intensity)、颜色(RGB)或法向量等信息。在汽车零部件检测中,点云数据通常由激光轮廓仪、结构光相机或双目视觉系统生成。例如,检测发动机缸体表面的气孔缺陷时,点云能够精确反映表面凹凸变化,通过分析局部点云的法向量和曲率,可以快速定位异常区域。
核心原理:点云的本质是对物体表面进行离散采样。采样密度决定了检测精度,而采样密度又受传感器分辨率、工作距离和物体表面反射特性影响。对于汽车零部件中常见的金属反光表面,点云容易出现“飞点”或“孔洞”,这是实际项目中必须处理的噪声来源。
判断方法与操作流程:在实际项目中,处理点云数据通常遵循以下流程:
- 点云获取:通过传感器扫描或从深度图转换得到原始点云。
- 预处理:包括统计滤波去除离群点、体素滤波降采样、平滑处理等。
- 配准与融合:多视角扫描时,需要将不同视角的点云通过ICP(迭代最近点)等算法对齐到统一坐标系。
- 特征提取:计算法向量、曲率、边界特征,用于后续检测。
2.2 深度图与视差图:2.5D数据的价值
深度图是一种灰度图像,每个像素值代表该点与相机之间的距离(深度)。视差图则来源于双目视觉,它记录的是左右相机图像中对应像素点的水平位置差。深度图与视差图之间存在数学换算关系:深度 Z = (f × B) / d,其中 f 为焦距,B 为基线距离,d 为视差值。在汽车零部件检测中,深度图常用于表面缺陷检测和尺寸测量,因为它保留了图像的结构化邻域关系,处理效率远高于无序点云。
核心原理:深度图本质上是2.5D数据——它包含深度信息,但仍然是规则网格结构。这种结构使得图像处理算法(如边缘检测、形态学操作)可以直接应用。视差图则是双目视觉的中间产物,其质量直接决定了深度图的精度。在汽车零部件项目中,如果使用双目方案,视差图的匹配质量是系统精度的瓶颈。
案例拆解:某汽车零部件厂需要检测刹车盘表面的划痕深度。项目采用双目结构光方案,工作距离500mm,基线120mm。初始调试时,视差图在金属反光区域出现大量误匹配,导致深度图出现“空洞”。通过调整结构光投影亮度、增加偏振片抑制反光,并将视差图进行中值滤波后,深度图质量显著提升,划痕深度检测精度达到±0.05mm,满足客户要求。
| 数据形式 | 维度 | 存储效率 | 邻域关系 | 适用场景 |
|---|---|---|---|---|
| 深度图 | 2.5D | 高(单通道) | 规则网格,明确 | 表面缺陷、平面度、高度差 |
| 视差图 | 2D(中间产物) | 高 | 规则网格 | 双目匹配、深度计算前处理 |
| 点云 | 3D | 低(XYZ+属性) | 无序,需建立索引 | 复杂曲面、自由形状、装配检测 |
2.3 相机模型:从三维世界到二维图像的映射
相机模型是3D视觉的数学基础。最常用的是针孔相机模型,它描述了三维空间点如何通过透视投影映射到图像平面。相机模型包含内参(焦距fx、fy,主点cx、cy,畸变系数)和外参(旋转矩阵R、平移向量T)。在汽车零部件检测项目中,相机模型的准确性直接影响测量精度。例如,使用远心镜头时,内参模型与普通镜头不同,需要单独标定。
核心原理:针孔模型假设光线通过光心投影到成像平面,但实际镜头存在畸变,包括径向畸变(桶形/枕形)和切向畸变(镜头与成像平面不平行)。畸变校正公式为:x_corrected = x(1 + k1r² + k2r⁴ + k3r⁶) + 2p1xy + p2(r² + 2x²)。标定通常使用棋盘格或圆点标定板,通过OpenCV或Halcon等工具计算内参和畸变系数。
操作流程:
- 采集15~20张不同姿态的标定板图像。
- 提取角点或圆心特征。
- 使用张正友标定法计算内参和畸变系数。
- 验证重投影误差,通常应小于0.1像素。
2.4 坐标系转换:统一世界的坐标语言
在3D视觉检测系统中,存在四个关键坐标系:像素坐标系(u,v)、图像坐标系(x,y)、相机坐标系(Xc,Yc,Zc)和世界坐标系(Xw,Yw,Zw)。像素坐标是离散的整数,图像坐标是物理单位(mm),相机坐标以光心为原点,世界坐标则是我们定义的参考系。在汽车零部件检测中,通常需要将相机坐标系下的测量结果转换到机器人基座坐标系或夹具坐标系下,才能进行后续的抓取或装配。
核心原理:坐标系转换的核心是刚体变换,包含旋转和平移。转换公式为:Pw = R·Pc + T,其中R是3×3旋转矩阵,T是3×1平移向量。手眼标定解决的就是相机与机器人之间的变换关系。Eye-in-Hand(眼在手上)和Eye-to-Hand(眼在手外)两种安装方式对应不同的标定方法。
实战场景:某项目需要检测汽车车门铰链的安装孔位置,并将坐标发送给机器人进行装配。系统采用Eye-to-Hand布局,相机固定于支架上。通过手眼标定得到相机到机器人基座的变换矩阵T_cam_to_base。检测时,先通过点云处理得到铰链孔在相机坐标系下的坐标Pc,然后计算Pbase = T_cam_to_base × Pc,即可得到机器人可执行的坐标。整个标定过程需要采集至少15组机器人末端与标定板的位姿数据,使用AX=XB方程求解。
2.5 常见误区与项目复盘
在3D视觉项目实践中,工程师常犯以下错误:
- 误区一:混淆深度图与点云。深度图是规则网格,点云是无序集合,两者转换时需注意坐标方向和数据精度损失。
- 误区二:忽略畸变校正。在边缘视场,畸变可达数十像素,不校正直接测量会导致严重误差。
- 误区三:坐标系混乱。多个传感器融合时,未统一坐标系导致数据错位。
- 误区四:过度依赖点云处理。对于平面类零部件,深度图处理效率更高,不必强行转换为点云。
项目复盘案例:某新能源电池托盘检测项目,要求测量托盘底面平面度(公差±0.1mm)。初始方案采用双目结构光,直接使用点云进行平面拟合。调试中发现,由于电池托盘表面有大量定位销孔和凹槽,点云拟合时受干扰严重,平面度测量重复性差。复盘后改为:先通过深度图提取有效区域,排除孔洞和边缘干扰,再转换为点云进行平面拟合。同时,将相机工作距离从800mm缩短至600mm,提高点云密度。最终测量重复性从±0.15mm提升至±0.06mm,满足产线要求。此案例说明,理解数据特性并选择合适的处理路径,比盲目追求算法复杂度更重要。