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

## 项目概述

本项目实现了一个基于激光线扫相机的3D重建系统，通过激光线扫描和图像处理技术，实现对物体表面的高精度三维重建。

## 技术原理

### 激光三角测量原理
激光线扫相机基于激光三角测量原理，通过以下步骤实现3D重建：

1. **激光发射**: 发射器产生高亮度的激光线
2. **激光投影**: 激光线投射到被测物体表面
3. **图像采集**: 相机从不同角度采集激光线图像
4. **三角计算**: 利用激光线在图像中的位置计算物体表面高度

### 数学模型
```
Z = (f * d) / (x * tan(α) + f)
```
其中：
- Z: 物体表面高度
- f: 相机焦距
- d: 激光发射器与相机的基线距离
- x: 激光线在图像中的像素偏移
- α: 激光发射角度

## 系统架构

```
激光发射器 → 被测物体 → 图像采集 → 图像预处理 → 激光线检测 → 3D重建 → 结果输出
```

## 核心算法

### 1. 激光线检测算法
- **高斯滤波**: 去除图像噪声
- **阈值分割**: 提取激光线区域
- **亚像素定位**: 提高激光线中心定位精度
- **异常值过滤**: 去除检测错误点

### 2. 相机标定算法
- **内参标定**: 相机内参矩阵、畸变系数
- **外参标定**: 激光发射器与相机的相对位置
- **手眼标定**: 相机与机械系统的标定

### 3. 3D重建算法
- **三角测量**: 基于标定参数计算3D坐标
- **点云生成**: 生成密集的3D点云
- **表面重建**: 生成连续的3D表面模型

## 性能指标

- **精度**: 0.1mm @ 100mm工作距离
- **分辨率**: 2048×1536像素
- **扫描速度**: 30fps
- **工作距离**: 50-500mm
- **测量范围**: ±50mm

## 应用场景

- 工业检测
- 质量控制
- 逆向工程
- 机器人视觉
- 医疗成像

## 文件结构

```
laser-line-scan-camera/
├── README.md                 # 项目说明文档
├── requirements.txt          # 依赖包列表
├── src/                     # 源代码目录
│   ├── __init__.py
│   ├── laser_detection.py   # 激光线检测算法
│   ├── camera_calibration.py # 相机标定算法
│   ├── reconstruction.py    # 3D重建算法
│   ├── utils.py            # 工具函数
│   └── main.py             # 主程序
├── data/                    # 数据目录
│   ├── calibration/         # 标定数据
│   └── test_images/        # 测试图像
├── results/                 # 结果输出目录
└── tests/                   # 测试代码
```

## 安装和运行

### 环境要求
- Python 3.8+
- OpenCV 4.5+
- NumPy 1.20+
- SciPy 1.7+
- Matplotlib 3.3+

### 安装步骤
```bash
pip install -r requirements.txt
```

### 运行示例
```bash
python src/main.py --config config.yaml
```

## 技术特点

1. **高精度**: 采用亚像素定位技术，提高测量精度
2. **实时性**: 优化的算法实现，支持实时处理
3. **鲁棒性**: 多种异常情况处理机制
4. **可扩展性**: 模块化设计，易于扩展功能

## 开发团队

- 算法工程师: [姓名]
- 软件工程师: [姓名]
- 硬件工程师: [姓名]

## 许可证

MIT License 