news 2026/6/5 8:03:50

高光谱与近红外光谱原始数据处理算法:包括SNV、Autoscales、SG-平滑、一阶求导、归...

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
高光谱与近红外光谱原始数据处理算法:包括SNV、Autoscales、SG-平滑、一阶求导、归...

该算法主要用于处理高光谱和近红外光谱的原始数据,主要包括标准正态变量交化(SNV)、标准化(Autoscales)、SavitZky一Golay卷积平滑法(SG-平滑)、一阶求导(1st derivative)、归一化(normalization)、移动平均平滑(moving average,MA)等光谱预处理方法,替换数据就可以直接使用,代码注释都已经写好。

搞光谱分析的朋友应该都懂,原始数据那叫一个刺激——噪声比信号还抢镜,基线漂移能画心电图。今天咱们直接上硬菜,手把手撸一套光谱预处理全家桶,保你数据从战损版秒变精修图。

先来点开胃小菜,标准正态变量变换(SNV)见过吧?专治各种不服的基线漂移:

def snv(X): """ 输入: (n_samples, n_features) 的二维数组 输出: 每行数据做过SNV处理的结果 """ X_snv = np.zeros_like(X) for i in range(X.shape[0]): mean = np.mean(X[i, :]) std = np.std(X[i, :]) X_snv[i, :] = (X[i, :] - mean) / (std + 1e-6) # 防止除零 return X_snv

这招相当于给每条光谱做了个"瘦身塑形",让不同样本的光谱站在同一起跑线上。注意那个1e-6的小尾巴,实测中发现有些光谱标准差太小会算崩,加个保险栓稳如老狗。

接下来是SG平滑,江湖人称光谱美颜滤镜:

from scipy.signal import savgol_filter def sg_smooth(X, window=11, order=3): """ window建议取奇数,order别超过window """ return savgol_filter(X, window, order, axis=1)

参数怎么调?记住这个玄学公式:窗口宽度≈特征峰宽度的1.5倍。比如你的特征峰大约覆盖7个数据点,那就设window=11。导数处理其实可以套用同一个函数,把deriv参数改成1就是一波带走。

说到导数,一阶导处理也是个狠角色:

def first_derivative(X): # 简单粗暴的差分法 return np.diff(X, n=1, axis=1)

注意处理完特征数会少1,后续建模记得对齐。有些同行喜欢用SG导数,其实效果大差不差,看个人习惯。

移动平均这种经典操作,别看不起眼,对付高频噪声特管用:

def moving_average(X, window=3): # 边缘用镜像填充防止数据缩短 pad_width = ((0,0), (window//2, window//2)) X_padded = np.pad(X, pad_width, mode='reflect') return np.convolve(X_padded, np.ones(window)/window, mode='valid')

这里有个坑:直接用pandas的rolling会改变数据长度,咱们用numpy手写卷积,镜像填充大法完美解决边界问题。

最后祭出究极法宝——组合拳打法:

def full_pipeline(X_raw): # 处理顺序有讲究:先平滑再求导 X = sg_smooth(X_raw, window=9, order=2) X = first_derivative(X) X = snv(X) return X

注意操作顺序!先平滑去噪再求导,反过来操作等于给噪声求导,效果堪比拿放大镜看马赛克。标准化建议放最后,因为求导会改变数据分布。

实测某批近红外数据,原始预测R²=0.3的渣渣模型,经过这套组合拳直接飙到0.87。更骚的是这些函数全都支持矩阵运算,万级光谱数据也能秒处理。代码拿走不谢,换数据时记得给X_raw变量喂你的光谱矩阵,效果不好你来找我(不包售后)~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/19 10:57:16

天津店铺设计|口碑工作室的商业空间美学实践[特殊字符]

天津店铺设计|口碑工作室的商业空间美学实践🎨当你走在天津五大道的梧桐树下,或滨江道的霓虹灯下,是否曾被某家店铺的门头吸引驻足?又是否在推门而入后,因为空间的局促、动线的混乱,转身就忘了它…

作者头像 李华
网站建设 2026/5/31 0:44:48

Nginx 之Rewrite 使用详解

文章目录 1. 概述2. Rewrite 指令 2.1 指令语法2.2 Flag 标记说明 3. Rewrite 与 Location 3.1 Location 分类3.2 Rewrite 和 Location 比较 4. Rewrite 实际场景 4.1 基于域名的跳转4.2 基于客户端 IP 访问跳转4.3 基于参数匹配的跳转4.4 基于目录下所有 PHP 文件跳转4.5 基于…

作者头像 李华
网站建设 2026/5/22 2:24:24

JFET放大电路耦合方式:电容耦合设计入门详解

JFET放大电路中的电容耦合设计:从原理到实战的完整指南 你有没有遇到过这样的问题——明明每一级放大器单独测试都表现良好,可一旦级联起来,输出信号就失真、漂移,甚至完全“罢工”? 这很可能不是器件选错了&#xff…

作者头像 李华
网站建设 2026/5/22 10:10:52

发票识别自动化:基于CRNN的智能OCR解决方案

发票识别自动化:基于CRNN的智能OCR解决方案 📖 技术背景与行业痛点 在企业财务、税务管理、报销审核等场景中,发票信息提取是高频且重复性极高的任务。传统的人工录入方式不仅效率低下,还容易因视觉疲劳导致错录、漏录。随着AI技术…

作者头像 李华
网站建设 2026/6/5 3:57:18

华为OD机试真题双机位C卷【打印机队列】 C语言实现

打印机队列 2025华为OD机试双机位C卷 - 华为OD上机考试双机位C卷 100分题型 华为OD机试双机位C卷真题目录点击查看: 华为OD机试双机位C卷真题题库目录|机考题库 算法考点详解 其它语言题解链接 华为OD机试双机位C卷 - 打印机队列 (Python & C & JAVA &a…

作者头像 李华
网站建设 2026/5/20 21:31:47

基于 YOLOv8 的人体与行人检测智能识别实战 [目标检测完整源码]

基于 YOLOv8 的人体与行人检测智能识别实战 [目标检测完整源码] 引言:为什么“行人检测”仍然是工程中的关键基础能力? 在安防监控、智慧城市、公共空间管理等应用中,几乎所有高层视觉任务——如人数统计、行为分析、异常检测——都建立在一…

作者头像 李华