# 激光线扫相机算法实现方案

## 1. 激光线检测算法

### 1.1 高斯滤波预处理
**目的**: 去除图像噪声，提高激光线检测的稳定性
**原理**: 使用高斯核函数对图像进行卷积，平滑图像的同时保持边缘信息
**参数选择**: 
- 核大小: 5×5 或 7×7
- 标准差σ: 1.0-1.5

### 1.2 激光线区域分割
**方法1: 自适应阈值分割**
- 计算图像局部区域的均值和标准差
- 设置动态阈值: T = μ + k×σ
- 其中k为经验系数，通常取2-3

**方法2: Otsu全局阈值分割**
- 计算图像直方图
- 寻找最优分割阈值，使类间方差最大
- 适用于激光线对比度较高的情况

### 1.3 激光线中心提取
**高斯拟合方法**:
1. 对每列像素进行高斯函数拟合
2. 拟合函数: f(x) = A×exp(-(x-μ)²/(2σ²)) + B
3. 激光线中心位置: x_center = μ
4. 亚像素精度可达0.1像素

**质心法**:
1. 计算激光线区域的质心坐标
2. 质心公式: x_c = Σ(x×I(x))/ΣI(x)
3. 其中I(x)为像素强度值

### 1.4 异常值过滤
**统计滤波**:
- 计算激光线位置的均值和标准差
- 去除超出μ±3σ范围的点
- 使用中值滤波平滑轨迹

**几何约束**:
- 激光线应具有连续性
- 相邻点间距离不应过大
- 激光线角度变化应平滑

## 2. 相机标定算法

### 2.1 内参标定
**棋盘格标定法**:
1. 采集多张不同角度的棋盘格图像
2. 检测棋盘格角点坐标
3. 使用张正友标定算法求解内参矩阵
4. 内参矩阵形式:
```
K = [fx  0   cx]
    [0   fy  cy]
    [0   0   1 ]
```

**畸变校正**:
- 径向畸变: k1, k2, k3
- 切向畸变: p1, p2
- 畸变校正公式:
```
x_corrected = x(1 + k1r² + k2r⁴ + k3r⁶) + 2p1xy + p2(r²+2x²)
y_corrected = y(1 + k1r² + k2r⁴ + k3r⁶) + p1(r²+2y²) + 2p2xy
```

### 2.2 激光平面标定
**标定板法**:
1. 使用已知高度的标定板
2. 激光线在标定板上的投影位置
3. 建立激光平面方程: ax + by + cz + d = 0
4. 最小二乘法求解平面参数

**多平面法**:
1. 使用多个不同高度的标定板
2. 每个平面提供一组约束方程
3. 求解激光平面的精确参数

### 2.3 手眼标定
**目的**: 确定相机与激光发射器的相对位置关系
**方法**: 
1. 相机坐标系与激光坐标系的关系
2. 旋转矩阵R和平移向量t
3. 使用标定板进行联合标定

## 3. 3D重建算法

### 3.1 三角测量原理
**基本公式**:
```
Z = (f × d) / (x × tan(α) + f)
```

**参数说明**:
- Z: 物体表面高度
- f: 相机焦距(像素单位)
- d: 激光发射器与相机的基线距离
- x: 激光线在图像中的像素偏移
- α: 激光发射角度

### 3.2 坐标变换
**图像坐标到相机坐标**:
```
X_c = (u - cx) × Z / fx
Y_c = (v - cy) × Z / fy
Z_c = Z
```

**相机坐标到世界坐标**:
```
[X_w]   [R] [X_c]   [t]
[Y_w] = [ ] [Y_c] + [ ]
[Z_w]   [ ] [Z_c]   [ ]
```

### 3.3 点云生成
**扫描策略**:
1. 激光线沿X方向扫描
2. 物体沿Y方向移动
3. 生成规则网格点云

**点云密度控制**:
- 激光线间距: 0.1-1.0mm
- 扫描步长: 0.05-0.5mm
- 总点数: 10⁶-10⁷个点

### 3.4 表面重建
**三角网格生成**:
1. Delaunay三角剖分
2. 生成连续的三角网格
3. 网格优化和简化

**曲面拟合**:
1. 多项式拟合
2. B样条曲面拟合
3. 非均匀有理B样条(NURBS)

## 4. 精度分析

### 4.1 误差来源
**系统误差**:
- 相机标定误差: ±0.1-0.3像素
- 激光平面标定误差: ±0.05-0.1mm
- 机械安装误差: ±0.02-0.05mm

**随机误差**:
- 图像噪声: ±0.1-0.2像素
- 激光线抖动: ±0.05-0.1像素
- 环境光干扰: ±0.1-0.3像素

### 4.2 精度评估
**重复性精度**: 多次测量同一标准块，计算标准差
**绝对精度**: 与高精度测量设备对比
**空间精度**: 不同位置、不同角度的测量精度

## 5. 算法优化策略

### 5.1 实时性优化
**并行处理**:
- 多线程图像采集
- GPU加速图像处理
- 流水线式处理架构

**算法简化**:
- 快速阈值分割
- 简化的激光线检测
- 增量式3D重建

### 5.2 鲁棒性增强
**多尺度检测**:
- 不同分辨率下的激光线检测
- 自适应参数调整
- 多特征融合

**异常处理**:
- 激光线丢失检测
- 自动参数恢复
- 错误数据标记

## 6. 应用场景适配

### 6.1 工业检测
**表面缺陷检测**:
- 划痕、凹坑、凸起检测
- 表面粗糙度测量
- 尺寸精度检测

**质量控制**:
- 产品尺寸测量
- 装配精度检测
- 变形量测量

### 6.2 逆向工程
**3D建模**:
- 复杂曲面重建
- 零件数字化
- 设计验证

**尺寸测量**:
- 几何尺寸测量
- 形位公差检测
- 装配间隙分析

## 7. 性能指标

### 7.1 测量精度
- 重复性精度: ±0.05mm
- 绝对精度: ±0.1mm @ 100mm工作距离
- 空间分辨率: 0.1mm × 0.1mm

### 7.2 测量速度
- 单帧处理时间: <33ms (30fps)
- 点云生成速度: >1000点/秒
- 实时显示延迟: <100ms

### 7.3 测量范围
- 工作距离: 50-500mm
- 测量深度: ±50mm
- 视场角度: 30°-60°

## 8. 算法验证方法

### 8.1 仿真验证
**虚拟场景测试**:
- 生成标准几何体
- 添加噪声和畸变
- 验证算法精度

**参数敏感性分析**:
- 标定参数变化影响
- 噪声水平影响
- 光照条件影响

### 8.2 实物验证
**标准块测量**:
- 使用高精度标准块
- 对比测量结果
- 计算测量误差

**重复性测试**:
- 多次测量同一物体
- 统计分析测量结果
- 评估系统稳定性 