From 27acf3cfe0b88def65b659f90a3761a5e8e46ca2 Mon Sep 17 00:00:00 2001 From: duxin Date: Wed, 29 Jul 2026 17:43:15 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20PhysicalFeature=20=E7=B2=BE?= =?UTF-8?q?=E7=82=BC=E8=87=B3=2015=20=E4=B8=AA=E6=8C=87=E6=95=B0=20?= =?UTF-8?q?=E2=80=94=20=E7=A0=8D=E5=86=97=E4=BD=99=E6=AF=94=E5=80=BC=20+?= =?UTF-8?q?=20=E8=A1=A5=20BGA=20=E5=85=AC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 删除 6 个无明确物理意义的波段比值(R700_R670 等) - 新增 PC_ND: (R650-R620)/(R650+R620) 藻蓝归一化差值 - 最终 15 个: 通用4 + Chl5 + BGA3 + Turb3 --- src/preprocessing/spectral_Preprocessing.py | 22 ++++++++------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/src/preprocessing/spectral_Preprocessing.py b/src/preprocessing/spectral_Preprocessing.py index 64b7f9e..078c4c9 100644 --- a/src/preprocessing/spectral_Preprocessing.py +++ b/src/preprocessing/spectral_Preprocessing.py @@ -436,7 +436,7 @@ class MNFTransformer(TransformerMixin, BaseEstimator, _ArrayAsFloat64): # ============================================================================ class PhysicalFeatureExtractor(TransformerMixin, BaseEstimator, _ArrayAsFloat64): - """从原始高光谱波段计算 20 个精选水质/植被指数。 + """从原始高光谱波段计算 15 个精选水质/植被指数。 涵盖通用植被指数 + Chl/BGA/Turb 等指标,覆盖全部 13 个预测目标。 使用最近的传感器波段匹配目标波长,无需外部公式库。 @@ -444,34 +444,28 @@ class PhysicalFeatureExtractor(TransformerMixin, BaseEstimator, _ArrayAsFloat64) 输入 X 为 DataFrame 时自动解析列名;ndarray 时需在 __init__ 传入 wavelengths。 """ - # (名称, 分子波长nm, 分母波长nm) + # (名称, 公式类型, 目标波长nm_a, 目标波长nm_b) # ratio 型: (A-B)/(A+B); ratio_single 型: A/B _INDEX_DEFS = [ - # ── 通用植被/水体指数 ── + # ── 通用植被/水体指数 (4个) ── ('NDVI', 'ratio', 800.0, 670.0), ('NDWI', 'ratio', 550.0, 800.0), ('MNDWI', 'ratio', 550.0, 1600.0), - ('EVI', 'ratio', 800.0, 670.0), # EVI 简化: (NIR-R)/(NIR+R) - # ── Chl 叶绿素 ── + ('EVI', 'ratio', 800.0, 670.0), + # ── Chl 叶绿素 (5个) ── ('NDCI', 'ratio', 708.0, 665.0), ('CIgreen', 'ratio_single', 750.0, 550.0), ('CIrededge', 'ratio_single', 750.0, 705.0), ('MCI', 'ratio', 709.0, 665.0), ('SABI', 'ratio', 800.0, 670.0), - # ── BGA 藻蓝蛋白 ── + # ── BGA 藻蓝蛋白 (3个) ── ('PC_ratio1', 'ratio_single', 620.0, 600.0), ('PC_ratio2', 'ratio_single', 650.0, 620.0), - # ── Turb 浊度 ── + ('PC_ND', 'ratio', 650.0, 620.0), # 藻蓝 ND 指数 + # ── Turb 浊度 (3个) ── ('Turb_RedNIR', 'ratio_single', 800.0, 670.0), ('Turb_GreenRed','ratio_single', 550.0, 670.0), ('Turb_NIRGreen','ratio_single', 800.0, 550.0), - # ── 其他有用比值 ── - ('R700_R670', 'ratio_single', 705.0, 670.0), - ('R550_R670', 'ratio_single', 550.0, 670.0), - ('R800_R550', 'ratio_single', 800.0, 550.0), - ('R800_R700', 'ratio_single', 800.0, 705.0), - ('R670_R550', 'ratio_single', 670.0, 550.0), - ('R670_R440', 'ratio_single', 670.0, 440.0), ] def __init__(self, wavelengths=None):