使用 python 执行光谱去统(皮)处理
光谱去统(皮)处理是高光谱领域常规处理手段,用于增强光谱吸收(或反射)特征。有相当量的文献在介绍这个技术的原理和算法, 本文结合 scipy 包中的 spatial 子模块中的 ConvexHull 函数给出实践方式。
读取数据
本示例中读取了一条由安捷伦4300实测的岩心波谱,截取其中8800-9600纳米区间的光谱数据。
import pandas as pd
import numpy as np
from scipy.signal import find_peaks
d=pd.read_csv('/home/lee/Documents/寨上波谱数据/ZK43-3_/275.76-291.26/2002-12-15T22-11-28.csv')
x=10000/d['Wavenumber'].values
y=d['Intensity'].values/100
y=y[(x>8.8) & (x<9.6)]
x=x[(x>8.8) & (x<9.6)]*1000
plt.plot(x,(y),'.')
数据处理
执行去除连续统处理的函数如下:
from scipy import interpolate
import numpy as np
from scipy.spatial import ConvexHull
def get_continuum_removal(x,y):
points=np.array([x,y]).T
points=points[x.argsort()]
points=np.vstack( [ np.array([[points[0,0],-1]]),points,np.array([[points[-1,0],-1]])])
hull = ConvexHull(points)
temp=hull.vertices
temp.sort()
hull=points[temp[1:-1]]
tck = interpolate.splrep((hull[:,0]),(hull[:,1]), k=1)