# 高光谱塑料分类工具 ![CC BY-NC](https://i.creativecommons.org/l/by-nc/4.0/88x31.png) [![Python Version](https://img.shields.io/badge/python-3.12%252B-blue)](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 # 项目说明 ``` ![img.png](img.png) ### 输入输出格式 #### 输入文件格式 - 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格式分类结果