first commit
This commit is contained in:
171
README.md
Normal file
171
README.md
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
|
||||||
|
# 高光谱塑料分类工具
|
||||||
|
|
||||||
|

|
||||||
|
[](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格式分类结果
|
||||||
Reference in New Issue
Block a user