# 光谱预处理方法
**Repository Path**: aBugsLife/spectral-pretreatment-method
## Basic Information
- **Project Name**: 光谱预处理方法
- **Description**: 标准正态变换;
多元散射校正;
Savitzky-Golay 平滑滤波函数;
滑动平均滤波;
一阶差分;
二阶差分 ;
小波变换 ;
均值中心化;
标准化 ;
最大最小归一化 ;
矢量归一化
- **Primary Language**: Python
- **License**: WTFPL
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 92
- **Forks**: 20
- **Created**: 2021-04-01
- **Last Updated**: 2025-08-24
## Categories & Tags
**Categories**: mathlibs
**Tags**: 光谱分析, 近红外
## README
# 算法列表
* 标准正态变换 SNV
* 多元散射校正 MSC
* Savitzky-Golay平滑滤波函数 SG
* 滑动平均滤波 move_avg
* 一阶差分 D1
* 二阶差分 D2
* 小波变换 wave
* 均值中心化 mean_centralization
* 标准化 standardlize
* 最大最小归一化 max_min_normalization
* 矢量归一化 vector_normalization
感谢 @[panxy0826](https://blog.csdn.net/Joseph__Lagrange/article/details/95302398)的开源,本Tool 部分搬运修改于该作者
# 快速使用
## 0. WARNING
如果您编程能力较弱 对python理解不足 不建议参考使用本项目代码 本项目代码未经大量测试 无法保证通用性。如果您对本项目进行了结构性更改,请一定通知我进行同步更改。
## 1. 导入数据
```python
# 导入 pandas 读取数据
import pandas as pd
import numpy as np
# 读取数据
data = pd.read_csv("./data/peach_spectra_brix.csv")
# m * n
print("数据矩阵 data.shape:",data.shape)
# 50个样本, 600个 波段 第一列是 桃子糖度值 需要分离开
X = data.values[:,1:]
```
## 2. 数据绘制
```python
from pretreatment import Pretreatment as pre
p = pre()
# 该方法为快速示例 而编写
# 测试用例 图片名 波段起始点 波段间距
p.PlotSpectrum(X, '演示', 0, 5).show()
## 为保证数据可以正确绘制 请将 矩阵转化为 numpy.ndarray 格式
type(X)
```
## 3. 数据预处理
### 多元散射校正 MSC
```python
msc = p.msc(X)
p.PlotSpectrum(msc, 'msc', 0, 5).show()
```
### 标准正态变换 SNV
```python
snv = p.snv(X)
p.PlotSpectrum(snv, 'snv', 0, 5).show()
```
### Savitzky-Golay平滑滤波函数 SG
```python
# 此处参数为参考 具体 后续 详述
sg = p.SG(X, 4*5+1,2*3,2)
p.PlotSpectrum(sg, 'sg', 0, 5).show
```
### 滑动平均滤波 move_avg
```python
move_avg = p.move_avg(X)
p.PlotSpectrum(move_avg, 'move_avg', 0, 5).show
```
### 一阶差分 D1
```python
D1 = p.D1(X)
p.PlotSpectrum(D1, 'D1', 0, 5).show
```
### 二阶差分 D2
```python
D2 = p.D2(X)
p.PlotSpectrum(D2, 'D2', 0, 5).show
```
### 小波变换 wave
```python
wave = p.wave(X)
p.PlotSpectrum(wave, 'wave', 0, 5).show
```
### 均值中心化 mean_centralization
```python
mean_centralization = p.mean_centralization(X)
p.PlotSpectrum(mean_centralization, 'mean_centralization', 0, 5).show
```
### 标准化 standardlize
```python
standardlize = p.standardlize(X)
p.PlotSpectrum(standardlize, 'standardlize', 0, 5).show
```
### 最大最小归一化 max_min_normalization
```python
max_min_normalization = p.max_min_normalization(X)
p.PlotSpectrum(max_min_normalization, 'max_min_normalization', 0, 5).show
```
### 矢量归一化 vector_normalization
```python
vector_normalization = p.vector_normalization(X)
p.PlotSpectrum(vector_normalization, 'vector_normalization', 0, 5).show
```
# 注意事项
先将如何使用写出,具体原理后续会补上
示例数据来源:[nirpyresearch.com](https://nirpyresearch.com/)