172 lines
4.8 KiB
Markdown
172 lines
4.8 KiB
Markdown
|
||
# 高光谱塑料分类工具
|
||
|
||

|
||
[](https://www.python.org/)
|
||
|
||
## 基于高光谱成像和深度学习的微塑料材料分类与识别工具
|
||
|
||
### 功能特性
|
||
- 支持BIL格式高光谱数据读取和处理
|
||
- 使用UNet模型进行图像分割和掩膜生成
|
||
- 多种塑料材料的分类识别
|
||
- 背景校正和光谱特征提取
|
||
- 输出ENVI标准格式分类结果
|
||
|
||
### 安装
|
||
|
||
#### 前置要求
|
||
- Python 3.12
|
||
- CUDA (可选,用于GPU加速)
|
||
- 足够的内存处理高光谱数据
|
||
- 固态硬盘
|
||
#### 安装步骤
|
||
1. 克隆仓库:
|
||
|
||
```bash
|
||
git clone
|
||
cd hyperspec-plastic-classification
|
||
```
|
||
|
||
2. 安装依赖:
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
### 使用方法
|
||
|
||
#### 基本用法
|
||
|
||
```bash
|
||
python main.py --bil_path /path/to/input.bil --output_path /path/to/output --model_path /path/to/model.m
|
||
```
|
||
|
||
#### 参数说明
|
||
|
||
| 参数 | 必需 | 默认值 | 描述 |
|
||
|-----------------|------|-----------------------------------------------------|--------------------------------|
|
||
| --bil_path | 是 | 无 | 输入BIL文件路径 |
|
||
| --output_path | 是 | 无 | 输出目录路径 |
|
||
| --model_path | 是 | 无 | 分类模型路径 |
|
||
| --unet_path | 否 | ./unet_pytorch/logs/best_epoch_weights.pth | UNet模型权重路径 |
|
||
|
||
#### 示例
|
||
|
||
```bash
|
||
# 使用默认UNet权重
|
||
python main.py --bil_path ./data/input.bil --output_path ./results --model_path ./models/svm.m
|
||
|
||
# 指定所有参数
|
||
python main.py --bil_path ./data/input.bil --output_path ./results --model_path ./models/svm.m --unet_path ./custom_unet_weights.pth
|
||
|
||
# Windows系统示例
|
||
python main.py --bil_path "C:\Users\HyperSpec\test\MPData2.bil" --output_path "C:\Users\HyperSpec\test" --model_path ".\classification_model\modelsave\svm.m" --unet_path ".\unet_pytorch\logs\best_epoch_weights.pth"
|
||
```
|
||
|
||
### 项目结构
|
||
|
||
```
|
||
hyperspec-plastic-classification/
|
||
├── main.py # 主程序入口
|
||
├── bil2rgb.py # BIL转RGB模块
|
||
├── unet_pytorch/ # UNet模型相关
|
||
│ ├── predict_rgb.py
|
||
│ └── logs/
|
||
│ └── best_epoch_weights.pth # 预训练UNet权重
|
||
├── classification_model/ # 分类模型
|
||
│ └── Parallel/
|
||
│ └── predict_plastic.py
|
||
├── modelsave/
|
||
│ └── svm.m # 预训练分类模型
|
||
├── shape_spectral.py # 光谱特征提取
|
||
├── shape_spectral_background.py # 背景校正
|
||
├── requirements.txt # 项目依赖
|
||
└── README.md # 项目说明
|
||
```
|
||

|
||
### 输入输出格式
|
||
|
||
#### 输入文件格式
|
||
- BIL 格式高光谱数据文件 (.bil)
|
||
- 对应的 HDR 头文件 (.hdr)
|
||
|
||
#### 输出文件格式
|
||
- ENVI 分类结果文件 (.dat)
|
||
- ENVI 头文件 (.hdr)
|
||
|
||
### 处理流程
|
||
|
||
1. 读取BIL格式高光谱数据
|
||
2. 转换为RGB图像
|
||
3. 使用UNet模型生成掩膜
|
||
4. 提取光谱特征
|
||
5. 应用背景校正
|
||
6. 数据清理和过滤
|
||
7. 使用分类模型预测材料类型
|
||
8. 保存ENVI格式分类结果
|
||
|
||
### 支持的塑料类型
|
||
|
||
工具支持以下塑料材料的分类:
|
||
|
||
| 类别编号 | 材料名称 |
|
||
|----------|----------|
|
||
| 1 | ABS |
|
||
| 2 | HDPE |
|
||
| 3 | LDPE |
|
||
| 4 | PA6 |
|
||
| 5 | PET |
|
||
| 6 | PP |
|
||
| 7 | PS |
|
||
| 8 | PTFE |
|
||
| 9 | PVC |
|
||
|
||
### 依赖库
|
||
|
||
主要依赖的 Python 库:
|
||
|
||
- opencv-python
|
||
- numpy
|
||
- matplotlib
|
||
- pandas
|
||
- pywavelets
|
||
- scikit-learn
|
||
- torch
|
||
|
||
完整依赖请查看 `requirements.txt` 文件。
|
||
|
||
### 许可证
|
||
|
||
本项目采用 Creative Commons 非商业许可证。
|
||
|
||
|
||
|
||
### 常见问题
|
||
|
||
1. **运行时报错"ModuleNotFoundError"**
|
||
|
||
确保已安装所有依赖:`pip install -r requirements.txt`
|
||
|
||
2. **处理大型文件时内存不足**
|
||
|
||
考虑减少处理区域或增加系统内存
|
||
|
||
3. **分类结果不准确**
|
||
|
||
检查输入数据质量,确认模型是否适合当前数据类型
|
||
|
||
### 联系方式
|
||
|
||
作者:[北京依锐思]
|
||
邮箱:[huilai_zhang@126.com](mailto:your.email@example.com)
|
||
项目地址:[https://github.com/yourusername/hyperspec-plastic-classification](https://github.com/yourusername/hyperspec-plastic-classification)
|
||
|
||
### 更新日志
|
||
|
||
- v1.0.0 (2025-08-26)
|
||
初始版本发布
|
||
- 支持BIL格式高光谱数据处理
|
||
- 集成UNet分割和SVM分类
|
||
- 输出ENVI格式分类结果
|