# 水质参数反演分析系统 - 软件说明书 ## 1. 软件概述 ### 1.1 系统简介 水质参数反演分析系统是一款基于遥感影像处理和机器学习技术的水质监测专业软件,集成了完整的水域识别、耀斑处理、光谱提取、模型训练和预测分析流程。 ### 1.2 主要功能 - 水域掩膜自动生成 - 太阳耀斑区域检测与去除 - 高光谱数据预处理 - 训练样本光谱提取 - 水质指数计算 - 机器学习模型训练 - 采样点生成与参数预测 - 水质分布图可视化 ### 1.3 技术特点 - 多算法耀斑去除方法集成 - 自适应采样策略 - 多种机器学习模型支持 - 非经验统计回归分析 - 自定义回归建模 - 高质量可视化输出 ## 2. 系统要求 ### 2.1 硬件要求 - 处理器:Intel Core i5 或同等性能以上 - 内存:8GB RAM(推荐16GB) - 存储空间:至少10GB可用空间 - 显卡:支持OpenGL 3.0以上 ### 2.2 软件要求 - 操作系统:Windows 10/11, Linux, macOS - Python版本:3.12+ - 必要依赖库:GDAL, NumPy, Pandas, Scikit-learn, PyQt5等 ## 3. 安装与配置 ### 3.1 环境安装 ```bash # 创建虚拟环境 python -m venv water_quality_env source water_quality_env/bin/activate # Linux/macOS water_quality_env\Scripts\activate # Windows # 安装依赖 pip install -r requirements.txt ``` ### 3.2 软件启动 ```bash python water_quality_gui.py ``` ## 4. 功能模块详解 ![](E:\code\WQ\fengzhuang\sub\png\watermask.png) ## 4.1 步骤1:水域掩膜生成 ### 4.11 功能概述 步骤1负责生成水域掩膜文件,用于后续步骤中限定水域范围。支持两种生成方式: 1. **使用现有掩膜文件** - 直接使用已有的Shapefile或栅格文件 2. **使用NDWI自动生成** - 基于NDWI(归一化水体指数)阈值分割自动提取水域 ### 4.12 支持的输入格式 #### 掩膜文件格式: - **Shapefile (.shp)** - 矢量格式,需要提供参考影像进行栅格化 - **栅格文件 (.dat, .tif)** - 直接使用,无需栅格化 #### 参考影像格式: - **ENVI格式 (.bsq, .dat)** - 支持多波段高光谱数据 - **GeoTIFF (.tif)** - 标准栅格格式 ### 4.13 参数配置 #### 使用现有掩膜文件模式: - **掩膜文件路径** - 选择.shp或.dat格式的水域掩膜文件 - **参考影像路径** - 当使用.shp文件时必须提供,用于栅格化 #### NDWI自动生成模式: - **参考影像路径** - 用于计算NDWI指数的多波段影像 - **NDWI阈值** - 默认0.4,范围0.0-1.0,控制水域提取的灵敏度 - 较低阈值:提取更多水域(可能包含非水域区域) - 较高阈值:提取更少水域(可能遗漏部分水域区域) ### 4.14 技术实现 #### 栅格化处理(针对.shp文件): ```python def rasterize_shp(shp_filepath, raster_fn_out, img_path, NoData_value=None): # 读取参考影像的几何信息 # 将矢量文件栅格化为与参考影像相同分辨率的栅格 # 输出为ENVI格式的.dat文件 ``` #### NDWI计算: ```python def ndwi(file_path, ndwi_threshold=0.4, output_path=None): # 计算绿光波段(552.19nm)和近红外波段(809.29nm)的NDWI # NDWI = (Green - NIR) / (Green + NIR) # 使用阈值分割提取水域区域 ``` ### 4.15 输出结果 - **输出掩膜文件** - 统一为ENVI格式的.dat文件 - **文件命名** - 默认"water_mask.dat",可自定义输出路径 ### 4.16 使用建议 1. **优先使用现有掩膜文件** - 如果已有精确的水域边界.shp文件 2. **NDWI适用于简单场景** - 当没有精确水域边界时使用 3. **调整NDWI阈值** - 根据具体水域特性调整阈值: - 清澈水域:0.3-0.4 - 浑浊水域:0.4-0.6 - 特殊情况可能需要实验确定最佳阈值 ### 4.17错误处理 - 文件不存在时会提示错误 - .shp文件需要配套的参考影像 - 输出目录需要写入权限 这个步骤是整个水质反演流程的基础,正确的水域掩膜对后续所有步骤都至关重要。 ## 4.2 步骤2:耀斑区域检测 [5 tools called] 基于代码分析,我来详细说明步骤2(耀斑区域检测)的软件说明: # 步骤2:耀斑区域检测 ## 功能概述 步骤2负责检测影像中的耀斑区域,生成耀斑掩膜文件。耀斑是水面反射太阳光造成的过亮区域,会影响水质参数反演的准确性。该步骤提供多种检测算法,可根据不同场景选择合适的方法。 ## 支持的输入格式 ### 必需输入: - **影像文件** - 多波段高光谱影像(.bsq, .dat, .tif格式) - **水域掩膜** - 步骤1生成的水域掩膜文件(可选,用于独立运行) ### 可选输入: - **水域掩膜文件** - 用于限定检测范围,提高检测精度 ## 检测方法 ### 1. Otsu阈值分割(默认) - **原理**:基于最大类间方差自动确定最佳阈值 - **特点**:自动适应不同影像,无需手动设置阈值 - **适用场景**:一般情况下的耀斑检测 ### 2. Z-score统计方法 - **原理**:基于标准差识别异常高亮像素 - **参数**:Z-score阈值(默认2.5) - **特点**:对数据分布不敏感,适合正态分布数据 - **适用场景**:数据分布相对均匀的情况 ### 3. 百分位数阈值方法 - **原理**:使用指定百分位数作为阈值 - **参数**:百分位数(默认95%) - **特点**:对异常值更稳健 - **适用场景**:数据存在极端异常值的情况 ### 4. IQR异常值检测 - **原理**:基于四分位距识别异常值 - **参数**:IQR倍数(默认1.5) - **特点**:对偏态分布数据效果好 - **适用场景**:数据分布不均匀的情况 ### 5. 自适应阈值方法 - **原理**:局部自适应阈值分割 - **参数**:窗口大小(默认15) - **特点**:适应局部亮度变化 - **适用场景**:光照不均匀的影像 ### 6. 多波段融合方法 - **原理**:融合多个波段的检测结果 - **参数**:波段波长列表、权重、子方法 - **特点**:综合利用多波段信息,检测更准确 - **适用场景**:复杂耀斑模式检测 ## 参数配置 ### 核心参数: - **耀斑检测波长** - 默认750nm,用于提取耀斑严重区域的波段 - **检测方法** - 六种可选方法 - **最大连通域面积** - 过滤小面积噪声,默认50像素 - **岸边缓冲区大小** - 避免岸边误检,默认10像素 ### 方法特定参数: - **Z-score阈值** - Z-score方法的阈值(2.0-3.0) - **百分位数** - 百分位数方法的阈值(90-99) - **IQR倍数** - IQR方法的倍数(1.0-3.0) - **窗口大小** - 自适应方法的窗口大小(5-30) ## 技术实现 ```python def find_severe_glint_area(img_path, water_mask_path=None, glint_wave=750.0, method='otsu', z_threshold=2.5, percentile=95.0, iqr_multiplier=1.5, window_size=15, max_area=50, buffer_size=10): # 读取影像和水域掩膜 # 根据选择的方法进行耀斑检测 # 后处理:面积过滤、岸边缓冲 # 输出耀斑掩膜文件 ``` ## 输出结果 - **耀斑掩膜文件** - ENVI格式的.dat文件,1表示耀斑区域,0表示非耀斑区域 - **文件命名** - 默认"glint_mask.dat",可自定义输出路径 ## 使用建议 1. **首选Otsu方法** - 适用于大多数情况,自动确定阈值 2. **调整检测波长** - 根据实际耀斑特征调整: - 一般耀斑:750-800nm - 强烈耀斑:可尝试更高波长 3. **使用水域掩膜** - 提高检测精度,避免陆地区域误检 4. **后处理参数**: - **最大面积**:过滤小面积噪声(建议10-100) - **岸边缓冲**:避免岸边误检(建议5-20) ## 错误处理 - 文件不存在或格式错误时提示 - 无效参数范围检查 - 统计计算异常处理 这个步骤是耀斑去除流程的关键,准确的耀斑检测直接影响后续耀斑去除和水质反演的效果。 ## 4.3 步骤3:耀斑去除 [4 tools called] 基于代码分析,我来详细说明步骤3(耀斑去除)的软件说明: # 步骤3:耀斑去除 ## 功能概述 步骤3负责去除影像中的耀斑效应,恢复水体的真实反射率。耀斑是水面反射太阳光造成的过亮区域,会严重影响水质参数反演的准确性。该步骤提供四种先进的去耀斑算法,可根据不同场景选择合适的方法。 ## 支持的输入格式 ### 必需输入: - **影像文件** - 多波段高光谱影像(.bsq, .dat, .tif格式) - **耀斑掩膜** - 步骤2生成的耀斑掩膜文件(自动从步骤2获取) ## 去耀斑方法 ### 1. Goodman方法(默认) - **原理**:基于近红外波段的线性回归模型 - **特点**:计算简单,速度快,适用于一般耀斑情况 - **参数配置**: - **NIR下波段索引**:默认65(约750nm) - **NIR上波段索引**:默认91(约900nm) - **参数A**:默认0.000019(经验系数) - **参数B**:默认0.1(经验系数) ### 2. Kutser方法 - **原理**:利用氧吸收波段(760nm附近)的特征 - **特点**:基于物理原理,对强烈耀斑效果好 - **参数配置**: - **氧吸收波段索引**:默认8(约760nm) - **下氧吸收波长**:默认756.54nm - **上氧吸收波长**:默认766.54nm - **NIR波段索引**:默认65(约750nm) ### 3. Hedley方法 - **原理**:基于深度学习的耀斑去除方法 - **特点**:智能化处理,适应复杂耀斑模式 - **参数配置**: - **NIR波段索引**:默认47(约750nm) ### 4. SUGAR方法(光谱解混) - **原理**:基于光谱解混的先进算法 - **特点**:精度最高,计算复杂,适用于科研应用 - **参数配置**: - **迭代次数**:默认3次(自动优化) - **LoG平滑σ**:默认1.0(平滑参数) - **估计背景光谱**:默认启用 - **耀斑掩膜方法**:cdf或otsu - **终止阈值**:默认20.0 - **优化边界**:默认[(1, 2)] ## 插值选项 ### 0值像素插值: - **启用插值**:对去耀斑后产生的0值像素进行插值修复 - **插值方法**: - **nearest** - 最近邻插值(最快) - **bilinear** - 双线性插值(推荐) - **spline** - 样条插值(平滑) - **kriging** - 克里金插值(最精确) ## 技术实现 ```python def remove_glint(img_path, glint_mask_path=None, method='goodman', nir_lower=65, nir_upper=91, goodman_A=0.000019, goodman_B=0.1, oxy_band=8, lower_oxy=756.54, upper_oxy=766.54, nir_band=65, sugar_iter=3, sugar_sigma=1.0, interpolate_zeros=True, interpolation_method='bilinear'): # 读取影像和耀斑掩膜 # 根据选择的方法进行耀斑去除 # 可选:对0值像素进行插值 # 输出去耀斑后的影像 ``` ## 输出结果 - **去耀斑影像文件** - ENVI格式的.dat文件,去除耀斑效应后的反射率数据 - **文件命名** - 默认"deglint_image.dat",可自定义输出路径 ## 使用建议 1. **方法选择指南**: - **一般耀斑**:Goodman方法(快速有效) - **强烈耀斑**:Kutser方法(物理基础) - **复杂耀斑**:Hedley方法(智能处理) - **科研应用**:SUGAR方法(最高精度) 2. **参数调整建议**: - **波段索引**:根据实际影像的波段设置调整 - **插值启用**:建议启用,修复去耀斑产生的空洞 - **插值方法**:双线性插值在速度和效果间取得平衡 3. **质量控制**: - 检查去耀斑后的影像是否存在过度校正 - 验证反射率值在合理范围内(0-1) - 对比去耀斑前后的影像质量 ## 错误处理 - 文件不存在或格式错误时提示 - 参数范围验证 - 计算过程中的异常处理 - 内存不足时的优化处理 这个步骤是水质反演流程中的关键预处理步骤,准确的耀斑去除直接影响后续光谱提取和建模的准确性。 ### 4.4 步骤4:数据预处理 [3 tools called] 基于代码分析,我来详细说明步骤4(数据预处理)的软件说明: # 步骤4:数据预处理 ## 功能概述 步骤4负责对水质参数CSV文件进行预处理,包括数据清洗、异常值检测与剔除、数据质量检查等操作。该步骤确保输入到后续机器学习建模的数据质量,提高模型的准确性和稳定性。 ## 支持的输入格式 ### 必需输入: - **水质参数CSV文件** - 包含采样点位置和水质参数的表格数据 - **文件格式要求**: - 必须包含经纬度坐标列(如longitude, latitude) - 必须包含水质参数列(如Chl-a, TSS, CDOM等) - 支持UTF-8编码,逗号分隔 ## 预处理功能 ### 1. 数据质量检查 - **缺失值检测**:识别并统计各列的缺失值数量 - **数据类型验证**:确保数值型数据的正确格式 - **坐标范围验证**:检查经纬度坐标在合理范围内 ### 2. 异常值检测与处理 - **统计方法**:基于Z-score(标准差)检测异常值 - **四分位距方法**:基于IQR(四分位距)检测异常值 - **可视化方法**:通过箱线图识别异常值 - **处理选项**:可选择剔除或标记异常值 ### 3. 数据标准化 - **Min-Max标准化**:将数据缩放到[0,1]范围 - **Z-score标准化**:将数据转换为均值为0,标准差为1 - **对数变换**:对偏态分布数据进行对数变换 ### 4. 特征工程 - **相关性分析**:计算水质参数间的相关系数 - **多重共线性检测**:识别高度相关的特征 - **特征选择**:基于重要性选择关键特征 ## 技术实现 ```python def preprocess_data(csv_path, output_path=None, outlier_method='zscore', z_threshold=3.0, iqr_multiplier=1.5, normalize_method='minmax', remove_outliers=True, save_processed=True): # 读取CSV文件 # 数据质量检查 # 异常值检测与处理 # 数据标准化 # 保存处理后的数据 ``` ## 输出结果 - **处理后CSV文件** - 清洗和标准化后的水质参数数据 - **预处理报告** - 包含处理统计信息的文本报告 - **可视化图表** - 异常值检测和分布变化的图表 ## 界面功能 ### CSV数据预览 - **实时预览**:显示CSV文件的前N行数据 - **行列统计**:显示数据表的行列数量 - **数据浏览**:支持表格形式的可视化浏览 ### 参数配置 - **预览行数**:控制预览显示的数据行数(1-200行) - **输出文件名**:指定处理后的CSV文件保存路径 ## 使用建议 1. **数据准备**: - 确保CSV文件包含必要的坐标和水质参数列 - 检查数据格式是否正确(数值型数据应为数字) 2. **异常值处理**: - **Z-score方法**:适用于数据近似正态分布的情况 - **IQR方法**:对偏态分布数据更稳健 - **阈值设置**:根据数据特性调整异常值检测阈值 3. **质量控制**: - 预览处理前后的数据变化 - 检查异常值剔除是否合理 - 验证标准化后的数据范围 ## 错误处理 - 文件不存在或格式错误时提示 - 编码问题自动检测和处理 - 数据类型转换错误处理 - 内存不足时的数据分块处理 这个步骤是机器学习建模前的关键数据准备阶段,高质量的数据预处理能够显著提升后续建模的准确性和可靠性。预处理后的数据将用于步骤5的光谱提取和步骤6的机器学习建模。 ### 4.5 步骤5:光谱提取 [3 tools called] 基于代码分析,我来详细说明步骤5(光谱提取)的软件说明: # 步骤5:光谱提取 ## 功能概述 步骤5负责从去耀斑后的高光谱影像中提取训练样本点的光谱数据。该步骤将水质参数CSV文件中的采样点位置与影像数据进行空间匹配,提取每个采样点周围区域的光谱特征,为后续机器学习建模提供训练数据。 ## 支持的输入格式 ### 必需输入: - **去耀斑影像文件** - 步骤3处理后的多波段高光谱影像(.bsq, .dat, .tif格式) - **处理后CSV文件** - 步骤4预处理后的水质参数数据(包含经纬度坐标) ### 可选输入: - **水体掩膜文件** - 步骤1生成的水域掩膜(.dat, .tif格式),用于限制提取范围 ## 核心功能 ### 1. 空间坐标匹配 - **坐标系转换**:支持多种坐标系(EPSG编码),默认WGS84(EPSG:4326) - **投影变换**:自动将地理坐标转换为影像像素坐标 - **精度控制**:亚像素级坐标匹配,确保提取位置准确 ### 2. 光谱提取方法 - **圆形采样区域**:以采样点为中心,指定半径的圆形区域 - **多像素平均**:提取区域内所有像素的光谱并计算平均值 - **统计特征**:同时计算标准差、最大值、最小值等统计量 ### 3. 质量控制 - **边界检查**:确保采样点位于影像范围内 - **水体验证**:使用水体掩膜验证采样点位于水域内 - **数据完整性**:检查每个采样点的光谱数据完整性 ## 参数配置 ### 采样参数: - **采样半径**:默认5像素,控制提取区域大小(1-50像素) - **源坐标系**:默认EPSG:4326(WGS84),支持自定义EPSG编码 ## 技术实现 ```python def extract_spectra(deglint_img_path, csv_path, boundary_path=None, radius=5, source_epsg=4326, output_path=None): # 读取去耀斑影像 # 读取水质参数CSV文件 # 坐标转换:地理坐标 → 像素坐标 # 对每个采样点提取圆形区域光谱 # 计算平均光谱和统计特征 # 保存包含光谱特征和水质参数的训练数据 ``` ## 输出结果 - **训练数据CSV文件** - 包含光谱特征和水质参数的完整数据集 - **文件结构**: - 前几列为水质参数(Chl-a, TSS, CDOM等) - 中间列为各波段的光谱反射率值 - 后几列为统计特征(标准差、最大值、最小值等) - **提取报告** - 包含成功提取数量和失败原因的统计报告 ## 界面功能 ### 文件选择区域 - **去耀斑影像**:选择步骤3处理后的影像文件 - **处理后CSV**:选择步骤4预处理的水质参数文件 - **水体掩膜**:可选,选择步骤1生成的水域掩膜文件 ### 参数设置区域 - **采样半径**:控制光谱提取的区域大小 - **坐标系设置**:指定采样点坐标的EPSG编码 ## 使用建议 1. **采样半径选择**: - **小半径(1-3像素)**:精确提取,适合点状采样 - **中等半径(4-8像素)**:平衡精度和稳定性,推荐使用 - **大半径(9+像素)**:提取更大区域,减少噪声影响 2. **坐标系设置**: - **WGS84(EPSG:4326)**:全球通用地理坐标系 - **UTM坐标系**:根据研究区域选择相应的UTM带 - **自定义EPSG**:支持任何有效的EPSG编码 3. **质量控制**: - 检查提取成功率,确保大多数采样点成功提取 - 验证光谱数据的合理性(反射率值在0-1范围内) - 检查统计特征的分布情况 ## 错误处理 - 坐标超出影像范围时自动跳过 - 坐标系不匹配时提示转换错误 - 文件格式错误时提供详细错误信息 - 内存不足时优化处理流程 这个步骤是连接遥感影像数据和地面实测数据的关键环节,准确的光谱提取为后续机器学习建模提供高质量的训练样本。提取的训练数据将用于步骤6的机器学习建模和步骤5.5的水质指数计算。 ### 4.6 步骤5.5:水质指数计算 [2 tools called] 基于代码分析,我来详细说明步骤5.5(水质指数计算)的软件说明: # 步骤5.5:水质指数计算 ## 功能概述 步骤5.5负责基于训练数据的光谱特征计算各种水质指数。该步骤通过数学公式将光谱反射率转换为具有物理意义的水质参数指标,为后续的统计回归和机器学习建模提供特征工程支持。 ## 支持的输入格式 ### 必需输入: - **训练数据CSV文件** - 步骤5提取的光谱训练数据(包含各波段反射率) - **公式CSV文件** - 包含水质指数计算公式的定义文件 ## 核心功能 ### 1. 公式管理系统 - **预定义公式库**:支持多种水质参数的指数计算公式 - **自定义公式**:允许用户添加新的水质指数公式 - **公式分类**:按水质参数类型组织公式(叶绿素a、总氮、总磷等) ### 2. 水质指数计算 - **波段运算**:支持加减乘除、对数、指数等数学运算 - **多波段组合**:支持多个波段的组合计算 - **批量计算**:一次性计算多个水质指数 ### 3. 公式类别支持 支持18种主要水质参数类别的指数计算: - 叶绿素a (chlorophyll_a) - 藻蓝蛋白 (Phycocyanin) - 总氮 (Total Nitrogen) - 总磷 (Total Phosphorus) - 正磷酸盐 (Orthophosphate) - 化学需氧量 (COD) - 生化需氧量 (BOD) - 总有机碳 (TOC) - 溶解氧 (Dissolved Oxygen) - 大肠杆菌 (E. coli) - 总大肠菌群 (Total Coliforms) - 浊度 (Turbidity) - 总悬浮物 (Total Suspended Solids) - 色度 (Color) - pH值 - 温度 (Temperature) - 电导率 (Conductivity) - 总溶解固体 (Total Dissolved Solids) ## 技术实现 ```python def calculate_water_indices(training_csv_path, formula_csv_path, selected_formulas, output_filename): # 读取训练数据(包含光谱反射率) # 读取公式定义文件 # 对每个选中的公式进行解析和执行 # 将计算结果添加到数据表中 # 保存包含水质指数的输出文件 ``` ## 输出结果 - **水质指数CSV文件** - 在原训练数据基础上增加水质指数列 - **文件结构**: - 保留原有的水质参数和光谱特征列 - 新增各水质指数的计算结果列 - 每个指数对应一个单独的列 ## 界面功能 ### 数据文件选择 - **训练数据CSV**:选择步骤5生成的光谱训练数据文件 - **公式CSV文件**:选择包含水质指数公式的定义文件 ### 公式选择区域 - **网格布局**:3列网格显示所有可用公式 - **批量选择**:支持全选和清空所有公式 - **实时刷新**:从公式文件动态加载公式列表 ### 自定义公式功能 - **公式名称**:自定义指数的名称 - **公式类别**:下拉选择或输入新的水质参数类别 - **公式表达式**:使用波段编号(如B1, B2)的数学表达式 - **参考文献**:记录公式的来源文献 ## 公式文件格式 公式CSV文件应包含以下列: - `Formula_Name` - 公式名称 - `Category` - 水质参数类别 - `Formula` - 数学表达式(使用B1, B2等表示波段) - `Reference` - 参考文献 示例: ```csv Formula_Name,Category,Formula,Reference NDCI,chlorophyll_a,(B5-B4)/(B5+B4),"Mishra & Mishra, 2012" ``` ## 使用建议 1. **公式选择策略**: - **相关性分析**:选择与目标水质参数相关性高的指数 - **多指数组合**:选择多个相关指数进行综合评估 - **验证有效性**:通过统计检验验证指数的有效性 2. **自定义公式注意事项**: - 使用标准的波段编号(B1, B2, B3...) - 确保数学表达式的语法正确 - 记录公式的来源和参考文献 3. **质量控制**: - 检查计算结果的范围是否合理 - 验证指数与实测水质参数的相关性 - 检查是否存在异常值或计算错误 ## 错误处理 - 公式语法错误时提供详细错误信息 - 波段编号不存在时提示 - 除零错误和其他数学运算错误的处理 - 文件格式错误的检测和提示 这个步骤是特征工程的重要环节,通过计算各种水质指数,可以提取更有物理意义和判别能力的特征,显著提升后续统计回归和机器学习模型的性能。计算的水质指数将用于步骤6.5的非经验统计回归建模。 ### 4.7 步骤6:机器学习建模 [2 tools called] 基于代码分析,我来详细说明步骤6(机器学习建模)的软件说明: # 步骤6:机器学习建模 ## 功能概述 步骤6负责基于训练数据构建水质参数反演的机器学习模型。该步骤支持多种机器学习算法、数据预处理方法和数据划分策略,通过交叉验证和模型比较,选择最优的水质参数预测模型。 ## 支持的输入格式 ### 必需输入: - **训练数据CSV文件** - 步骤5或步骤5.5生成的训练数据(包含光谱特征和水质参数) ## 核心功能 ### 1. 特征工程配置 - **特征起始列**:指定光谱特征列的起始位置(默认374.285004) - **自动特征识别**:根据列名自动识别光谱波段列 ### 2. 数据预处理方法(多选) 支持11种光谱预处理方法: - **None** - 无预处理 - **MMS** - Min-Max标准化 - **SS** - Standard Scaling(Z-score标准化) - **SNV** - Standard Normal Variate(标准正态变量变换) - **MA** - Moving Average(移动平均平滑) - **SG** - Savitzky-Golay滤波 - **MSC** - Multiplicative Scatter Correction(乘性散射校正) - **D1** - 一阶导数 - **D2** - 二阶导数 - **DT** - Detrending(去趋势) - **CT** - Continuum Removal(连续统去除) ### 3. 机器学习模型(多选) 支持4大类18种机器学习算法: #### 线性模型(5种) - **LinearRegression** - 线性回归 - **Ridge** - 岭回归 - **Lasso** - Lasso回归 - **ElasticNet** - 弹性网络回归 - **PLS** - 偏最小二乘回归 #### 树模型(6种) - **DecisionTree** - 决策树回归 - **RF** - 随机森林回归 - **ExtraTrees** - 极端随机树回归 - **XGBoost** - XGBoost回归 - **LightGBM** - LightGBM回归 - **CatBoost** - CatBoost回归 #### 集成学习(2种) - **GradientBoosting** - 梯度提升回归 - **AdaBoost** - AdaBoost回归 #### 其他模型(3种) - **SVR** - 支持向量回归 - **KNN** - K近邻回归 - **MLP** - 多层感知器回归 ### 4. 数据划分方法(多选) 支持3种数据划分策略: - **spxy** - Sample set Partitioning based on joint X-Y distances(基于X-Y距离的样本划分) - **ks** - Kennard-Stone算法 - **random** - 随机划分 ### 5. 模型评估 - **交叉验证**:支持2-10折交叉验证(默认3折) - **性能指标**:计算R²、RMSE、MAE等评估指标 - **模型比较**:自动比较不同预处理+模型组合的性能 ## 技术实现 ```python def train_ml_models(training_csv_path, feature_start_column, preprocessing_methods, model_names, split_methods, cv_folds, output_dir): # 读取训练数据 # 特征工程:分离特征和目标变量 # 数据预处理:应用选中的预处理方法 # 数据划分:使用选中的划分方法 # 模型训练:训练所有选中的模型 # 交叉验证:评估模型性能 # 模型保存:保存训练好的模型文件 ``` ## 输出结果 - **训练好的模型文件** - 每个预处理+模型组合的序列化模型 - **模型性能报告** - 包含各模型评估指标的CSV文件 - **最佳模型选择** - 自动选择性能最优的模型组合 - **训练日志** - 详细的训练过程记录 ## 界面功能 ### 训练参数设置 - **特征起始列**:指定光谱特征列的起始波长或位置 - **交叉验证折数**:控制交叉验证的折数(2-10) ### 多选配置区域 - **预处理方法**:3×4网格布局,支持全选/全不选 - **模型类型**:分组显示(线性模型、树模型、集成学习、其他模型) - **数据划分方法**:3种划分策略选择 ### 文件选择 - **训练数据**:选择包含光谱特征和水质参数的CSV文件 - **输出目录**:指定模型文件的保存目录 ## 使用建议 1. **预处理方法选择**: - **光谱平滑**:MA, SG适用于噪声较多的光谱 - **散射校正**:SNV, MSC适用于消除散射影响 - **导数变换**:D1, D2适用于增强光谱特征 - **标准化**:MMS, SS适用于不同量纲的数据 2. **模型选择策略**: - **线性模型**:适用于线性关系较强的数据 - **树模型**:适用于非线性关系,抗噪声能力强 - **集成学习**:综合多个弱学习器,性能稳定 - **默认选择**:SVR, RF, Ridge, Lasso(平衡性能和时间) 3. **数据划分方法**: - **spxy**:保持特征空间和目标空间的分布一致性 - **ks**:选择最具代表性的样本 - **random**:简单随机划分,计算速度快 4. **交叉验证设置**: - **小数据集**:使用较多折数(5-10折) - **大数据集**:使用较少折数(3-5折) - **计算资源**:折数越多,计算时间越长 ## 性能优化 ### 计算效率 - **并行训练**:支持多预处理方法和多模型的并行训练 - **内存优化**:大数据集的分块处理 - **模型缓存**:避免重复训练相同的模型 ### 质量控制 - **异常值处理**:训练过程中的异常值检测和处理 - **收敛监测**:监控模型训练的收敛情况 - **过拟合预防**:通过交叉验证防止过拟合 ## 错误处理 - 数据格式错误的检测和提示 - 特征列不存在的错误处理 - 内存不足时的优化处理 - 模型训练失败的错误恢复 这个步骤是机器学习建模的核心环节,通过多种算法和预处理方法的组合,构建高质量的水质参数反演模型。训练好的模型将用于步骤8的机器学习预测。 ### 4.8 步骤6.5:非经验统计回归建模 [2 tools called] 基于代码分析,我来详细说明步骤6.5(非经验统计回归建模)的软件说明: # 步骤6.5:非经验统计回归建模 ## 功能概述 步骤6.5专门用于构建基于光谱特征的非经验统计回归模型。与步骤6的机器学习建模不同,该步骤专注于传统的统计回归方法,特别适用于具有明确物理意义的水质参数反演。这些模型通常基于光谱特征与水质参数之间的统计关系建立。 ## 支持的输入格式 ### 必需输入: - **训练数据CSV文件** - 步骤5或步骤5.5生成的训练数据(包含光谱特征和水质参数) ## 核心功能 ### 1. 非经验算法选择(多选) 支持6种主要水质参数的非经验统计回归算法: - **chl_a** - 叶绿素a浓度反演算法 - **nh3** - 氨氮浓度反演算法 - **mno4** - 高锰酸盐指数反演算法 - **tn** - 总氮浓度反演算法 - **tp** - 总磷浓度反演算法 - **tss** - 总悬浮物浓度反演算法 ### 2. 数据预处理方法(多选) 支持11种光谱预处理方法(与步骤6相同): - **None** - 无预处理 - **MMS** - Min-Max标准化 - **SS** - Standard Scaling(Z-score标准化) - **SNV** - Standard Normal Variate(标准正态变量变换) - **MA** - Moving Average(移动平均平滑) - **SG** - Savitzky-Golay滤波 - **MSC** - Multiplicative Scatter Correction(乘性散射校正) - **D1** - 一阶导数 - **D2** - 二阶导数 - **DT** - Detrending(去趋势) - **CT** - Continuum Removal(连续统去除) ### 3. 参数配置 - **对应值列索引**:为每个算法指定水质参数值在CSV文件中的列索引 - **光谱起始列索引**:指定光谱特征列的起始位置(默认1) - **窗口大小**:控制光谱分析的窗口大小(1-20,默认5) ## 技术特点 ### 非经验模型优势 - **物理意义明确**:基于光谱特征与水质参数的物理关系 - **解释性强**:模型参数具有明确的物理含义 - **稳定性好**:对数据分布变化不敏感 - **计算效率高**:相比机器学习模型计算量更小 ### 算法原理 每种非经验算法基于特定的光谱特征: - **波段比值**:利用特定波段的反射率比值 - **导数光谱**:利用光谱的一阶或二阶导数特征 - **特征波段**:选择对水质参数敏感的特征波段 - **统计关系**:建立光谱特征与水质参数的统计回归关系 ## 技术实现 ```python def train_non_empirical_models(csv_path, preprocessing_methods, algorithms, value_cols, spectral_start_col, window, output_dir): # 读取训练数据 # 数据预处理:应用选中的预处理方法 # 对每个选中的算法: # - 提取对应的水质参数值 # - 计算光谱特征(波段比值、导数等) # - 建立统计回归模型 # - 评估模型性能 # 保存训练好的非经验模型 ``` ## 输出结果 - **非经验模型文件** - 每个算法+预处理组合的回归模型 - **模型系数文件** - 包含回归系数和统计指标 - **性能报告** - 各模型的R²、RMSE等评估指标 - **特征重要性** - 各光谱特征对模型的贡献度 ## 界面功能 ### 算法选择区域 - **算法复选框**:6种水质参数算法的多选 - **列索引设置**:为每个算法指定水质参数值的列位置 - **默认全选**:所有算法默认选中状态 ### 参数设置 - **光谱起始列**:指定光谱特征列的起始索引(从0开始) - **窗口大小**:控制光谱分析的窗口宽度 - **预处理方法**:3×4网格布局的多选区域 ### 文件管理 - **训练数据**:选择包含光谱和水质数据的CSV文件 - **输出目录**:指定模型文件的保存位置 ## 使用建议 1. **算法选择策略**: - **目标参数**:根据研究的水质参数选择对应的算法 - **多算法比较**:可以同时选择多个算法进行比较 - **验证有效性**:通过统计检验验证算法的适用性 2. **列索引设置**: - **正确对应**:确保每个算法的列索引指向正确的水质参数列 - **CSV结构**:了解CSV文件的列顺序和内容 - **默认值**:通常从0或1开始,根据实际文件结构调整 3. **预处理方法选择**: - **光谱质量**:根据光谱数据的质量选择合适的预处理 - **算法特性**:不同算法可能对特定预处理方法更敏感 - **实验比较**:可以尝试多种预处理方法的组合 4. **窗口大小设置**: - **小窗口**:适用于精细的光谱特征分析 - **大窗口**:适用于平滑的光谱趋势分析 - **默认值**:5是一个较好的平衡点 ## 性能优化 ### 计算效率 - **并行处理**:支持多算法和多预处理方法的并行计算 - **内存优化**:高效的数据处理和内存管理 - **模型缓存**:避免重复计算相同的模型 ### 质量控制 - **数据验证**:检查水质参数值的合理范围 - **模型诊断**:提供模型的统计诊断信息 - **异常处理**: robust的异常值处理机制 ## 应用场景 ### 适用情况 - **物理关系明确**:光谱与水质参数有明确的物理关系 - **数据量较小**:训练样本数量有限的情况 - **解释性要求**:需要模型具有良好解释性的场景 - **快速建模**:需要快速建立初步反演模型 ### 与其他步骤的关系 - **输入依赖**:依赖于步骤5的光谱提取或步骤5.5的水质指数计算 - **输出用途**:训练的非经验模型用于步骤8.5的非经验模型预测 - **互补作用**:与步骤6的机器学习建模形成互补 这个步骤提供了传统统计回归方法的建模能力,特别适合那些具有明确物理意义的水质参数反演问题。非经验模型通常具有更好的解释性和稳定性,是水质遥感反演中的重要工具。 ### 4.9 步骤6.75:自定义回归分析 [2 tools called] 基于代码分析,我来详细说明步骤6.75(自定义回归分析)的软件说明: # 步骤6.75:自定义回归分析 ## 功能概述 步骤6.75提供了完全自定义的回归分析功能,允许用户灵活选择自变量和因变量,并尝试多种回归方法。这个步骤特别适合探索性数据分析和特定关系的建模,为用户提供了最大的灵活性来探索数据中的各种关系模式。 ## 支持的输入格式 ### 必需输入: - **任意CSV文件** - 包含待分析数据的CSV文件(可以是步骤5、5.5或其他任何数据) ## 核心功能 ### 1. 灵活的变量选择 - **自变量选择**:支持从CSV文件中任意选择多个自变量列 - **因变量选择**:支持从CSV文件中任意选择多个因变量列 - **智能默认选择**:自动识别常见的水质指数列和水质参数列 ### 2. 多种回归方法(多选) 支持7种经典回归方法: - **linear** - 线性回归:y = a + bx - **exponential** - 指数回归:y = a * e^(bx) - **power** - 幂函数回归:y = a * x^b - **logarithmic** - 对数回归:y = a + b*ln(x) - **polynomial** - 多项式回归:y = a + bx + cx² + ... - **hyperbolic** - 双曲线回归:y = a + b/x - **sigmoidal** - S型曲线回归:y = a / (1 + e^(-b(x-c))) ### 3. 智能列识别 - **自动识别指数列**:默认选中包含'index', 'ratio', 'normalized', 'nd', 'b'等关键词的列 - **自动识别水质参数列**:默认选中包含'chl', 'tn', 'tp', 'turbidity', 'do', 'ph', 'conductivity'等关键词的列 ## 技术特点 ### 完全自定义 - **无预设限制**:不限制自变量和因变量的类型和数量 - **任意组合**:支持任意自变量与因变量的组合分析 - **批量分析**:一次性分析多个变量对的回归关系 ### 探索性分析 - **关系发现**:帮助发现数据中隐藏的相关关系 - **模型比较**:比较不同回归方法的拟合效果 - **最佳拟合**:自动选择最适合的回归模型形式 ## 技术实现 ```python def custom_regression_analysis(csv_path, x_columns, y_columns, methods, output_dir): # 读取CSV数据 # 对每个因变量y: # 对每个自变量x: # 对每个回归方法: # - 建立回归模型 # - 计算拟合优度(R²等) # - 保存模型参数 # 生成综合报告 ``` ## 输出结果 - **回归模型文件** - 每个变量对+回归方法的模型参数 - **拟合优度报告** - 包含各模型R²、RMSE等指标的CSV文件 - **最佳模型推荐** - 为每个变量对推荐最佳回归方法 - **可视化图表** - 回归拟合曲线和散点图 ## 界面功能 ### 数据文件管理 - **CSV文件选择**:选择包含分析数据的CSV文件 - **自动刷新**:文件改变时自动加载列信息 - **手动刷新**:提供刷新按钮重新加载列信息 ### 变量选择区域 - **自变量选择**:滚动区域显示所有列,支持多选(3列布局) - **因变量选择**:滚动区域显示所有列,支持多选(2列布局) - **全选/全不选**:为自变量和因变量分别提供批量选择功能 ### 回归方法选择 - **方法网格**:3×3网格布局显示7种回归方法 - **默认选择**:线性、指数、幂函数、对数回归默认选中 - **批量操作**:支持所有方法的全选和全不选 ### 输出配置 - **输出目录**:自定义输出目录名称 - **启用控制**:可以禁用此步骤而不删除配置 ## 使用建议 1. **变量选择策略**: - **自变量**:通常选择光谱指数、波段比值等特征列 - **因变量**:通常选择水质参数测量值列 - **多变量探索**:可以同时分析多个变量对的关系 2. **回归方法选择**: - **线性关系**:使用linear回归 - **指数增长**:使用exponential回归 - **幂律关系**:使用power回归 - **饱和曲线**:使用logarithmic或hyperbolic回归 - **复杂关系**:使用polynomial回归 3. **数据分析流程**: - **先探索后建模**:先用此步骤探索数据关系 - **确定最佳模型**:找到最适合的回归模型形式 - **转移到其他步骤**:将发现的良好关系用于正式建模 4. **输出结果利用**: - **模型比较**:比较不同回归方法的性能 - **关系可视化**:查看回归拟合曲线 - **参数导出**:将最佳模型参数导出使用 ## 应用场景 ### 适用情况 - **数据探索**:初步探索数据中的关系模式 - **模型选择**:确定最适合的回归模型形式 - **特定分析**:针对特定变量对的深入分析 - **方法验证**:验证预设的回归模型假设 ### 典型应用 - **光谱指数与水质参数**:分析各种光谱指数与水质参数的关系 - **波段组合优化**:寻找最佳的波段组合形式 - **模型形式确定**:确定线性、非线性等最佳模型形式 - **异常关系发现**:发现数据中的异常或特殊关系 ## 性能特点 ### 计算效率 - **并行计算**:支持多变量对和多方法的并行分析 - **内存优化**:高效的数据处理和内存管理 - **增量分析**:可以分批次分析大量变量对 ### 质量控制 - **数据验证**:检查变量值的合理性和有效性 - **模型诊断**:提供回归模型的统计诊断信息 - **异常处理**: robust的异常值检测和处理 ## 与其他步骤的关系 ### 输入灵活性 - **数据来源**:可以接受任何步骤输出的CSV文件 - **变量类型**:不限制变量的类型和含义 - **预处理**:数据应该已经过适当的预处理 ### 输出用途 - **探索结果**:主要用于数据探索和关系发现 - **模型参考**:为其他步骤提供模型形式的参考 - **独立分析**:可以独立完成完整的回归分析 这个步骤提供了最大程度的灵活性,让用户可以自由探索数据中的各种关系模式,是数据分析和模型开发的重要工具。特别适合那些需要自定义分析场景和探索未知关系的研究工作。 ### 4.10 步骤7:采样点生成 [1 tool called] 基于代码分析,我来详细说明步骤7(采样点生成)的软件说明: # 步骤7:预测采样点生成 ## 功能概述 步骤7负责在水域区域内生成用于水质预测的采样点网格。这些采样点将作为后续预测步骤(步骤8、8.5、8.75)的输入,用于在整个水域范围内进行水质参数的预测和空间分布分析。 ## 支持的输入格式 ### 必需输入: - **去耀斑影像文件** - 步骤3生成的去耀斑处理后的遥感影像(.bsq, .dat, .tif格式) ### 可选输入: - **水域掩膜文件** - 步骤1生成的水域掩膜文件(.dat, .tif格式),用于精确限定采样区域 ## 核心功能 ### 1. 采样网格生成 - **规则网格采样**:在水域区域内生成规则的采样点网格 - **智能边界处理**:自动处理水域边界,避免在陆地区域生成采样点 - **空间均匀分布**:确保采样点在水域内均匀分布 ### 2. 采样参数配置 - **采样点间隔**:控制采样点之间的间距(10-500像素,默认50像素) - **采样半径**:定义每个采样点的统计范围(1-50像素,默认5像素) - **处理块大小**:控制内存分块处理的大小(100-10000,默认1000) ### 3. 输出格式 - **CSV格式**:生成包含采样点坐标和统计信息的CSV文件 - **坐标信息**:包含每个采样点的行列坐标和地理坐标(如果可用) - **统计信息**:包含采样区域内光谱统计值(均值、标准差等) ## 技术特点 ### 空间采样策略 - **自适应采样**:根据水域形状自动调整采样密度 - **边界优化**:避免在水陆边界处生成无效采样点 - **内存优化**:支持大影像的分块处理,避免内存溢出 ### 质量控制 - **有效性检查**:确保所有采样点都在有效水域范围内 - **统计可靠性**:保证每个采样点有足够数量的有效像素 - **异常值过滤**:自动过滤掉统计值异常的采样点 ## 技术实现 ```python def generate_sampling_points(deglint_img_path, water_mask_path=None, interval=50, sample_radius=5, chunk_size=1000, output_path="sampling_points.csv"): # 读取去耀斑影像和水域掩膜 # 生成采样点网格坐标 # 对每个采样点: # - 计算采样区域内的光谱统计值 # - 验证采样点的有效性 # - 记录坐标和统计信息 # 保存为CSV文件 ``` ## 输出结果 - **采样点CSV文件** - 包含所有有效采样点的详细信息: - 行号、列号坐标 - 地理坐标(如果影像有地理参考) - 各波段的光谱均值 - 各波段的光谱标准差 - 采样点有效性标志 ## 界面功能 ### 文件输入区域 - **去耀斑影像**:必需输入,选择步骤3处理后的影像文件 - **水域掩膜**:可选输入,用于精确限定采样区域 ### 参数设置区域 - **采样点间隔**:控制采样密度,值越大采样点越稀疏 - **采样半径**:控制每个采样点的统计范围 - **处理块大小**:优化内存使用,适应不同大小的影像 ### 输出配置 - **输出文件**:指定采样点CSV文件的保存路径和名称 - **默认命名**:自动建议"sampling_points.csv"作为输出文件名 ## 使用建议 1. **采样间隔设置**: - **高密度采样**:10-30像素间隔,适用于精细分析 - **中等密度**:30-100像素间隔,平衡精度和计算量 - **低密度采样**:100-500像素间隔,适用于快速预览 2. **采样半径选择**: - **小半径**:1-5像素,保留更多空间细节 - **中等半径**:5-15像素,平衡细节和统计稳定性 - **大半径**:15-50像素,提高统计稳定性但损失细节 3. **处理块大小优化**: - **小影像**:100-500,减少内存开销 - **中等影像**:500-2000,平衡内存和效率 - **大影像**:2000-10000,提高处理效率 4. **水域掩膜使用**: - **推荐使用**:提供水域掩膜可以获得更精确的采样 - **自动处理**:如果没有提供掩膜,系统会自动识别水域 - **精度影响**:使用掩膜可以提高采样点的准确性 ## 性能优化 ### 计算效率 - **分块处理**:支持大影像的分块处理,避免内存不足 - **并行计算**:利用多核CPU加速采样点统计计算 - **缓存优化**:优化数据读取和缓存策略 ### 内存管理 - **动态内存分配**:根据影像大小自动调整内存使用 - **垃圾回收**:及时释放不再需要的内存资源 - **进度监控**:实时显示处理进度和内存使用情况 ## 质量控制 ### 采样点有效性 - **水域验证**:确保所有采样点都在水域范围内 - **数据完整性**:检查采样区域内是否有足够有效像素 - **统计合理性**:验证光谱统计值的合理性 ### 错误处理 - **文件格式验证**:检查输入文件的格式和完整性 - **坐标系统验证**:验证地理坐标系统的一致性 - **内存溢出处理**:自动调整参数避免内存溢出 ## 与其他步骤的关系 ### 输入依赖 - **主要输入**:依赖于步骤3的去耀斑处理结果 - **可选输入**:可以使用步骤1的水域掩膜提高精度 - **数据连续性**:确保与前后步骤的数据格式一致 ### 输出用途 - **核心输出**:为步骤8、8.5、8.75提供预测采样点 - **空间分析**:支持后续的空间分布分析和制图 - **数据验证**:可用于模型验证和精度评估 这个步骤是连接影像处理和预测分析的关键环节,生成的采样点将作为后续预测步骤的基础。合理的采样参数设置对于获得准确的水质空间分布结果至关重要。 ### 4.11 步骤8:参数预测 [1 tool called] 基于代码分析,我来详细说明步骤8(机器学习预测)的软件说明: # 步骤8:机器学习预测 ## 功能概述 步骤8使用步骤6训练的机器学习模型对步骤7生成的采样点进行水质参数预测。这是整个水质反演流程中的核心预测步骤,将训练好的机器学习模型应用于实际的水域采样点,生成水质参数的空间预测结果。 ## 支持的输入格式 ### 必需输入: - **采样光谱CSV文件** - 步骤7生成的采样点光谱数据CSV文件 - **模型目录** - 步骤6训练保存的机器学习模型文件目录 ## 核心功能 ### 1. 模型加载与选择 - **自动模型发现**:自动扫描模型目录中的所有模型文件 - **最优模型选择**:根据指定的性能指标选择最佳模型 - **模型验证**:验证模型与输入数据的兼容性 ### 2. 预测参数配置 - **模型选择指标**:支持3种模型性能评估指标: - **test_r2** - 测试集决定系数(R²),衡量模型解释方差的比例 - **test_rmse** - 测试集均方根误差,衡量预测误差的大小 - **test_mae** - 测试集平均绝对误差,衡量预测误差的平均值 - **预测列命名**:自定义预测结果列的命名(默认"prediction") ### 3. 批量预测处理 - **并行预测**:支持多模型并行预测以提高效率 - **内存优化**:优化大数据量的预测处理 - **进度监控**:实时显示预测进度和状态 ## 技术特点 ### 智能模型管理 - **模型匹配**:自动匹配模型与对应的水质参数 - **版本控制**:支持同一参数多个版本模型的管理 - **性能比较**:比较不同模型的预测性能 ### 预测质量控制 - **数据验证**:验证输入数据与模型训练数据的一致性 - **异常检测**:检测预测过程中的异常值和异常情况 - **置信度评估**:提供预测结果的置信度信息 ## 技术实现 ```python def machine_learning_prediction(sampling_csv_path, models_dir, metric='test_r2', prediction_column='prediction', output_path=None): # 加载采样点数据 # 扫描模型目录,发现所有可用模型 # 根据指标选择最佳模型 # 对每个采样点进行预测 # 保存预测结果 ``` ## 输出结果 - **预测结果CSV文件** - 包含原始采样点信息和预测值: - 所有原始采样点信息(坐标、光谱统计等) - 预测的水质参数值 - 预测置信度(如果模型支持) - 使用的模型信息 ## 界面功能 ### 文件输入区域 - **采样光谱CSV**:必需输入,选择步骤7生成的采样点文件 - **模型目录**:必需输入,选择步骤6保存的模型文件目录 ### 参数设置区域 - **模型选择指标**:下拉选择框,选择模型评估指标 - **预测列名**:文本输入框,自定义预测结果列的名称 ### 输出配置 - **输出文件**:指定预测结果CSV文件的保存路径 ## 使用建议 1. **模型选择指标**: - **test_r2**:优先选择解释方差比例最高的模型 - **test_rmse**:优先选择预测误差最小的模型 - **test_mae**:优先选择平均绝对误差最小的模型 2. **预测列命名**: - **描述性命名**:使用有意义的列名,如"chl_a_prediction" - **参数标识**:包含水质参数名称便于识别 - **避免冲突**:确保列名不与原始数据列冲突 3. **模型目录管理**: - **按参数组织**:建议按水质参数分类存储模型 - **版本控制**:为不同版本的模型添加时间戳或版本号 - **性能记录**:保存模型的性能评估报告 4. **数据验证**: - **光谱范围**:确保预测数据的光谱范围与训练数据一致 - **数据质量**:检查预测数据的质量和完整性 - **模型兼容性**:验证模型与预测数据的兼容性 ## 性能优化 ### 计算效率 - **模型缓存**:缓存已加载的模型避免重复加载 - **批量预测**:优化批量数据的预测处理 - **并行处理**:支持多核CPU并行预测 ### 内存管理 - **分块预测**:支持大数据量的分块预测处理 - **内存回收**:及时释放不再需要的模型和数据 - **进度指示**:实时显示内存使用情况和预测进度 ## 质量控制 ### 预测准确性 - **模型验证**:验证选择模型的性能和适用性 - **数据一致性**:确保预测数据与训练数据特征一致 - **异常值处理**:检测和处理预测中的异常值 ### 错误处理 - **模型加载错误**:处理模型文件损坏或格式错误 - **数据格式错误**:处理输入数据格式不一致问题 - **内存溢出处理**:自动调整处理策略避免内存溢出 ## 与其他步骤的关系 ### 输入依赖 - **主要输入**:依赖于步骤7的采样点数据和步骤6的训练模型 - **数据连续性**:确保光谱数据格式与模型训练数据一致 ### 输出用途 - **核心输出**:为步骤9的空间分布制图提供预测数据 - **结果验证**:可用于模型性能的实地验证 - **进一步分析**:支持后续的统计分析和可视化 这个步骤是整个机器学习水质反演流程的关键环节,将训练好的模型应用于实际水域,生成水质参数的空间预测结果。正确的模型选择和参数设置对于获得准确的预测结果至关重要。 [1 tool called] 基于代码分析,我来详细说明步骤8.5(非经验模型预测)的软件说明: # 步骤8.5:非经验模型预测 ## 功能概述 步骤8.5使用步骤6.5训练的非经验统计回归模型对步骤7生成的采样点进行水质参数预测。这个步骤专门用于基于物理原理和统计关系的非经验模型预测,与步骤8的机器学习预测形成互补,为用户提供基于不同建模理念的预测结果。 ## 支持的输入格式 ### 必需输入: - **采样光谱CSV文件** - 步骤7生成的采样点光谱数据CSV文件 - **模型目录** - 步骤6.5训练保存的非经验模型文件目录 ## 核心功能 ### 1. 非经验模型加载与选择 - **物理模型识别**:自动识别和加载基于物理原理的非经验模型 - **统计模型选择**:根据指定的精度指标选择最佳统计模型 - **模型兼容性验证**:验证模型与输入光谱数据的兼容性 ### 2. 预测参数配置 - **模型选择指标**:支持3种模型精度评估指标: - **Average Accuracy(%)** - 平均精度百分比,衡量模型整体预测精度 - **Min Accuracy(%)** - 最小精度百分比,衡量模型最差情况下的精度 - **Max Accuracy(%)** - 最大精度百分比,衡量模型最佳情况下的精度 - **预测列命名**:自定义预测结果列的命名(默认"prediction") ### 3. 物理原理预测 - **光谱响应建模**:基于水体光学特性的物理模型预测 - **统计关系应用**:应用经验统计关系进行预测 - **不确定性评估**:提供预测结果的不确定性信息 ## 技术特点 ### 物理模型优势 - **机理明确**:基于水体光学传输的物理原理 - **泛化性强**:不依赖于特定训练数据,具有更好的泛化能力 - **物理意义**:预测结果具有明确的物理意义 ### 精度评估体系 - **多维度评估**:从平均、最小、最大三个维度评估模型精度 - **稳定性考量**:考虑模型在不同条件下的表现稳定性 - **可靠性指标**:提供模型预测的可靠性评估 ## 技术实现 ```python def non_empirical_prediction(sampling_csv_path, models_dir, metric='Average Accuracy(%)', prediction_column='prediction', output_path=None): # 加载采样点光谱数据 # 扫描非经验模型目录 # 根据精度指标选择最佳模型 # 应用物理模型或统计关系进行预测 # 保存预测结果和精度信息 ``` ## 输出结果 - **预测结果CSV文件** - 包含非经验模型预测结果: - 所有原始采样点信息 - 非经验模型预测的水质参数值 - 使用的非经验模型信息 - 模型精度评估指标 - 预测不确定性信息(如果可用) ## 界面功能 ### 文件输入区域 - **采样光谱CSV**:必需输入,选择步骤7生成的采样点文件 - **模型目录**:必需输入,选择步骤6.5保存的非经验模型目录 ### 参数设置区域 - **模型选择指标**:下拉选择框,选择非经验模型精度评估指标 - **预测列名**:文本输入框,自定义预测结果列的名称 ### 输出配置 - **输出文件夹**:指定预测结果的输出目录(与步骤8不同,这里是目录选择) ## 使用建议 1. **模型选择指标**: - **Average Accuracy(%)**:优先选择平均精度最高的模型 - **Min Accuracy(%)**:优先选择最差情况下精度最高的模型(更稳健) - **Max Accuracy(%)**:优先选择最佳情况下精度最高的模型 2. **非经验模型特点**: - **物理基础**:基于水体光学特性,不依赖大量训练数据 - **适用范围**:适用于数据稀缺或新研究区域 - **补充作用**:与机器学习模型结果相互验证 3. **输出管理**: - **目录输出**:输出到文件夹便于管理多个预测结果 - **结果对比**:可与步骤8的机器学习预测结果进行对比 - **不确定性分析**:关注模型预测的不确定性信息 4. **模型验证**: - **物理合理性**:验证预测结果的物理合理性 - **范围检查**:检查预测值是否在合理物理范围内 - **一致性验证**:与机器学习预测结果进行一致性检查 ## 性能特点 ### 计算效率 - **快速预测**:非经验模型通常计算量较小,预测速度快 - **内存友好**:对内存需求较低,适合大范围应用 - **稳定运行**:计算过程稳定,不易出现数值问题 ### 质量控制 - **物理约束**:应用物理约束确保预测结果的合理性 - **范围验证**:自动验证预测值在物理可行范围内 - **异常检测**:检测物理上不可能的预测结果 ## 与其他步骤的关系 ### 输入依赖 - **主要输入**:依赖于步骤7的采样点数据和步骤6.5的非经验模型 - **数据要求**:需要完整的光谱信息用于物理模型计算 ### 输出用途 - **替代预测**:作为机器学习预测的替代或补充方案 - **结果验证**:用于验证机器学习预测结果的物理合理性 - **不确定性分析**:提供基于物理原理的不确定性评估 ### 与步骤8的关系 - **互补性**:提供基于不同建模理念的预测结果 - **验证作用**:两种方法结果相互验证,提高可靠性 - **选择依据**:根据具体需求选择使用哪种预测方法 这个步骤专门用于基于物理原理和统计关系的非经验模型预测,为水质反演提供了不依赖于大量训练数据的替代方案。特别适合数据稀缺区域、新研究区域或需要物理机理解释的应用场景。 [1 tool called] 基于代码分析,我来详细说明步骤8.75(自定义回归预测)的软件说明: # 步骤8.75:自定义回归预测 ## 功能概述 步骤8.75使用步骤6.75训练的自定义回归模型对步骤7生成的采样点进行水质参数预测。这个步骤专门用于基于用户自定义回归关系的预测,提供了最大的灵活性和控制力,允许用户应用自己探索和验证的最佳回归关系进行水质参数预测。 ## 支持的输入格式 ### 必需输入: - **采样光谱CSV文件** - 步骤7生成的采样点光谱数据CSV文件 - **公式CSV文件** - 步骤6.75生成的自定义回归公式文件 - **模型目录** - 步骤6.75训练保存的自定义回归模型目录 ## 核心功能 ### 1. 自定义回归模型应用 - **灵活公式应用**:支持多种回归形式的公式应用 - **变量自动匹配**:自动匹配公式中的变量与采样数据列 - **参数优化选择**:选择最优的回归参数组合 ### 2. 预测参数配置 - **预测列命名**:自定义预测结果列的命名(默认"prediction") - **公式验证**:验证回归公式与输入数据的兼容性 - **参数应用**:应用训练得到的最佳回归参数 ### 3. 多样化回归形式支持 支持步骤6.75探索的所有回归形式: - 线性回归、指数回归、幂函数回归 - 对数回归、多项式回归、双曲线回归 - S型曲线回归等各种自定义回归关系 ## 技术特点 ### 完全自定义 - **用户主导**:用户完全控制使用的回归关系和参数 - **灵活性高**:支持任意自定义的回归模型形式 - **探索性应用**:将探索发现的最佳关系应用于实际预测 ### 精确匹配 - **变量映射**:精确匹配公式变量与数据列 - **参数优化**:应用经过验证的最优回归参数 - **范围控制**:控制预测值的合理范围 ## 技术实现 ```python def custom_regression_prediction(sampling_csv_path, formula_csv_file, custom_regression_dir, prediction_column='prediction', output_path=None): # 加载采样点光谱数据 # 读取自定义回归公式和参数 # 匹配公式变量与数据列 # 应用自定义回归公式进行预测 # 保存预测结果 ``` ## 输出结果 - **预测结果CSV文件** - 包含自定义回归预测结果: - 所有原始采样点信息 - 自定义回归模型预测的水质参数值 - 使用的回归公式信息 - 回归参数详细信息 - 拟合优度指标(如果可用) ## 界面功能 ### 文件输入区域 - **采样光谱CSV**:必需输入,选择步骤7生成的采样点文件 - **公式CSV文件**:必需输入,选择步骤6.75生成的自定义回归公式文件 - **模型目录**:必需输入,选择步骤6.75保存的自定义回归模型目录 ### 参数设置区域 - **预测列名**:文本输入框,自定义预测结果列的名称 ## 使用建议 1. **公式选择策略**: - **最佳拟合**:选择在步骤6.75中表现最好的回归公式 - **物理合理性**:优先选择物理意义明确的回归关系 - **稳定性考虑**:选择在不同条件下表现稳定的回归形式 2. **数据验证**: - **变量完整性**:确保采样数据包含公式所需的所有变量 - **数据范围**:验证预测数据在回归模型的适用范围内 - **异常值处理**:检查和处理可能影响预测的异常值 3. **预测结果分析**: - **合理性检查**:验证预测结果的物理合理性 - **范围验证**:检查预测值是否在预期范围内 - **一致性比较**:与其他预测方法的结果进行比较 4. **模型管理**: - **版本控制**:为不同的回归模型添加描述信息 - **性能记录**:保存模型的性能评估信息 - **备份管理**:定期备份重要的自定义模型 ## 性能特点 ### 计算效率 - **高效预测**:回归模型计算简单,预测速度快 - **内存优化**:对内存需求低,适合大规模预测 - **并行处理**:支持多个采样点的并行预测 ### 质量控制 - **公式验证**:严格验证回归公式的正确性 - **参数范围**:确保回归参数在合理范围内 - **结果校验**:自动校验预测结果的合理性 ## 与其他步骤的关系 ### 输入依赖 - **主要输入**:依赖于步骤7的采样点数据、步骤6.75的公式和模型 - **数据连续性**:确保数据格式与探索分析时一致 ### 输出用途 - **定制化预测**:提供基于用户自定义关系的预测结果 - **方法验证**:验证自定义回归关系的实际应用效果 - **对比分析**:与其他预测方法进行对比分析 ### 与步骤6.75的关系 - **直接应用**:将步骤6.75的探索结果直接应用于预测 - **反馈优化**:根据预测效果反馈优化回归模型选择 - **持续改进**:形成探索-应用-优化的良性循环 这个步骤为用户提供了最大的灵活性和控制力,允许将自定义探索的最佳回归关系应用于实际水质预测。特别适合那些对特定水质参数有深入研究,希望应用自定义回归关系的专业用户。 ### 4.12 步骤9:分布图生成 [1 tool called] 基于代码分析,我来详细说明步骤9(分布图生成)的软件说明: # 步骤9:水质参数分布图生成 ## 功能概述 步骤9是整个水质反演流程的最终输出步骤,将步骤8、8.5或8.75的预测结果转换为空间分布图。这个步骤负责将离散的采样点预测值通过空间插值和可视化技术,生成连续的水质参数空间分布图,为水质监测和管理提供直观的空间分析结果。 ## 支持的输入格式 ### 必需输入: - **边界文件** - 研究区域的边界Shapefile文件(.shp格式) - **预测结果** - 自动识别步骤8、8.5或8.75生成的预测结果文件 ## 核心功能 ### 1. 空间插值与栅格化 - **距离扩散插值**:基于距离权重的空间插值方法 - **分辨率控制**:精确控制输出栅格图的分辨率 - **边界约束**:确保插值结果严格限制在研究区域内 ### 2. 坐标系管理 - **输入坐标系**:指定预测数据的原始坐标系(默认EPSG:32651 - UTM 51N) - **输出坐标系**:指定分布图的输出坐标系(默认EPSG:4326 - WGS84) - **坐标转换**:自动进行坐标系转换和重投影 ### 3. 可视化配置 - **采样点显示**:可选是否在分布图上显示原始采样点位置 - **距离扩散**:启用距离扩散算法生成更平滑的分布图 - **色彩渲染**:自动应用合适的色彩方案渲染水质参数 ## 技术特点 ### 空间插值算法 - **距离加权**:基于采样点距离的空间插值 - **边界约束**:严格限制插值范围在水域边界内 - **平滑处理**:生成自然平滑的水质分布图 ### 地理信息处理 - **坐标系统一**:处理不同坐标系统的数据 - **投影转换**:支持多种地图投影的转换 - **空间参考**:保持正确的空间参考信息 ## 技术实现 ```python def generate_distribution_maps(boundary_shp_path, resolution=30, input_crs='EPSG:32651', output_crs='EPSG:4326', show_sample_points=True, use_distance_diffusion=True, output_dir='distribution_maps'): # 加载边界文件和预测结果 # 坐标系统转换和重投影 # 空间插值生成栅格数据 # 可视化渲染生成分布图 # 保存多种格式的输出文件 ``` ## 输出结果 - **栅格分布图** - 多种格式的空间分布图: - **GeoTIFF文件** (.tif) - 包含地理参考的栅格数据 - **PNG图像** (.png) - 高质量的可视化图像 - **JPEG图像** (.jpg) - 压缩格式的可视化图像 - **PDF文档** (.pdf) - 矢量格式的分布图文档 ## 界面功能 ### 文件输入区域 - **边界文件**:必需输入,选择研究区域的Shapefile边界文件 ### 参数设置区域 - **分辨率**:数值输入,控制输出栅格图的分辨率(米) - **输入坐标系**:文本输入,预测数据的原始坐标系 - **输出坐标系**:文本输入,分布图的输出坐标系 - **显示采样点**:复选框,控制是否显示原始采样点 - **启用距离扩散**:复选框,控制是否使用距离扩散算法 ### 输出配置 - **输出目录**:指定分布图文件的输出目录 ## 使用建议 1. **分辨率设置**: - **高分辨率**:1-10米,适用于小范围精细分析 - **中等分辨率**:10-50米,平衡细节和文件大小 - **低分辨率**:50-1000米,适用于大范围快速制图 2. **坐标系选择**: - **UTM坐标系**:适合局部区域分析,保持距离精度 - **地理坐标系**:适合大范围展示,便于与其他数据集成 - **自定义坐标系**:支持任何有效的EPSG代码 3. **可视化选项**: - **显示采样点**:有助于验证插值结果的可靠性 - **距离扩散**:生成更自然平滑的分布图 - **色彩方案**:自动选择适合水质参数的颜色映射 4. **边界文件要求**: - **完整边界**:确保边界文件包含完整的研究区域 - **坐标一致**:边界文件坐标系与预测数据一致 - **质量检查**:验证边界文件的几何质量 ## 性能优化 ### 计算效率 - **内存优化**:支持大范围数据的分布图生成 - **并行处理**:优化空间插值计算效率 - **增量输出**:支持分布图的增量生成和保存 ### 输出质量 - **多格式输出**:提供多种格式满足不同需求 - **质量控制**:确保输出图像的地理参考准确性 - **元数据完整**:保存完整的空间参考和元数据信息 ## 质量控制 ### 空间准确性 - **坐标验证**:验证所有输入数据的坐标一致性 - **边界匹配**:确保预测数据与边界范围匹配 - **投影正确**:验证坐标投影转换的正确性 ### 可视化质量 - **色彩合理性**:使用科学合理的色彩映射方案 - **图面整饰**:自动添加比例尺、指北针等地图元素 - **输出格式**:确保不同格式的输出质量一致性 ## 与其他步骤的关系 ### 输入依赖 - **主要输入**:自动识别步骤8、8.5或8.75的预测结果 - **边界数据**:依赖于用户提供的区域边界文件 - **坐标信息**:继承前序步骤的坐标参考信息 ### 输出用途 - **最终成果**:生成水质反演分析的最终可视化产品 - **决策支持**:为水质管理提供空间决策支持 - **报告制作**:用于科研报告和专题图制作 - **数据共享**:提供标准格式的空间数据共享 这个步骤是整个水质反演流程的成果输出环节,将数值预测结果转换为直观的空间分布图,为水质监测、环境评估和决策管理提供重要的空间信息支持。 [1 tool called] 基于代码分析,我来详细说明可视化分析功能的软件说明: # 可视化分析功能 ## 功能概述 可视化分析功能是整个水质反演系统的综合可视化模块,提供多种图表生成和查看功能,用于深入分析水质参数的反演结果、模型性能、光谱特征和统计分布。这个模块将数值结果转换为直观的图形化展示,支持科学研究和决策分析。 ## 核心功能 ### 1. 图表类型支持 #### 模型评估散点图 - **功能描述**:展示模型预测值与实测值的散点关系 - **增强版本**:可选带置信区间的增强版散点图 - **用途**:评估模型预测精度和可靠性 #### 水质参数箱型图 - **功能描述**:展示水质参数的统计分布特征 - **统计信息**:显示中位数、四分位数、异常值等 - **用途**:分析水质参数的空间变异性和分布特征 #### 光谱曲线对比图 - **功能描述**:对比不同水质条件下的光谱曲线 - **特征分析**:识别光谱特征与水质参数的关系 - **用途**:分析光谱响应特征和波段敏感性 #### 统计图表 - **功能描述**:生成各种统计分析和相关性图表 - **内容包含**:相关性矩阵、分布直方图、趋势分析等 - **用途**:全面分析水质参数的统计特性 #### 空间分布图查看 - **功能描述**:查看步骤9生成的空间分布图 - **格式支持**:支持多种图像格式的查看 - **用途**:直观展示水质参数的空间分布格局 ### 2. 可视化配置选项 #### 散点图配置 - **基础散点图**:简单的预测-实测散点图 - **增强散点图**:包含置信区间和回归线的详细散点图 - **性能指标**:自动计算和显示R²、RMSE等性能指标 #### 图表生成控制 - **选择性生成**:可以单独选择生成特定类型的图表 - **批量处理**:支持一次性生成所有选中的图表类型 - **自定义输出**:指定输出目录和文件格式 ## 技术特点 ### 自动化图表生成 - **智能识别**:自动识别工作目录中的相关数据文件 - **参数提取**:自动提取水质参数和模型性能信息 - **格式适配**:根据数据特点自动选择最佳图表类型 ### 交互式查看功能 - **图表查看器**:内置专业的图表查看对话框 - **浏览功能**:支持浏览目录中的所有图表文件 - **保存导出**:支持将图表保存为多种格式 ## 界面功能 ### 工作目录管理 - **目录选择**:选择包含分析数据的工作目录 - **自动识别**:自动识别目录中的CSV文件和图像文件 - **路径显示**:实时显示当前工作目录路径 ### 图表生成区域 - **散点图生成**:专门按钮生成模型评估散点图 - **光谱图生成**:生成光谱曲线对比图 - **统计图生成**:生成各种统计图表 - **分布图查看**:查看空间分布图结果 ### 图表查看区域 - **分类查看**:按图表类型分类查看功能 - **批量浏览**:浏览目录中的所有图表文件 - **详细查看**:支持放大、缩小、保存等操作 ## 使用流程 ### 1. 设置工作目录 选择包含以下文件的工作目录: - 训练数据CSV文件(extracted_with_*.csv) - 模型评估结果文件 - 光谱数据文件 - 分布图图像文件 ### 2. 配置可视化选项 根据分析需求选择要生成的图表类型: - 模型评估:选择散点图相关选项 - 统计分析:选择箱型图和统计图表 - 光谱分析:选择光谱曲线图 - 空间分析:查看分布图 ### 3. 生成图表 点击相应的生成按钮,系统将: - 自动查找相关数据文件 - 应用合适的可视化算法 - 生成高质量的图表文件 - 保存到指定的输出目录 ### 4. 查看和分析 使用查看功能浏览生成的图表: - 单独查看特定类型的图表 - 浏览所有可用的图表文件 - 分析图表反映的水质特征 ## 输出成果 ### 图表文件格式 - **PNG图像**:高质量的位图格式,适合报告使用 - **PDF文档**:矢量格式,适合出版和打印 - **JPEG图像**:压缩格式,适合网页展示 ### 图表内容 - **散点图系列**:模型预测精度评估图表 - **箱型图系列**:水质参数统计分布图表 - **光谱图系列**:光谱特征分析图表 - **统计图系列**:相关性分析和分布图表 - **分布图系列**:空间分布可视化图表 ## 技术实现 ```python class WaterQualityVisualization: """水质可视化分析核心类""" def generate_scatter_plots(self, csv_file, enhanced=True): """生成模型评估散点图""" # 读取训练数据 # 计算模型性能指标 # 生成散点图(基础或增强版) # 保存图表文件 def generate_boxplots(self, data_files): """生成水质参数箱型图""" # 提取水质参数数据 # 计算统计特征 # 生成箱型图 # 保存图表文件 def generate_spectrum_plots(self, spectrum_data): """生成光谱曲线对比图""" # 读取光谱数据 # 分析光谱特征 # 生成对比曲线图 # 保存图表文件 def generate_statistical_charts(self, statistical_data): """生成统计图表""" # 进行统计分析 # 生成各种统计图表 # 保存图表文件 ``` ## 应用价值 ### 科研分析 - **模型验证**:通过散点图验证模型预测精度 - **特征分析**:通过光谱图分析波段敏感性 - **统计推断**:通过统计图表进行科学推断 ### 决策支持 - **空间分析**:通过分布图了解空间分布格局 - **趋势识别**:通过图表识别水质变化趋势 - **异常检测**:通过统计图表检测异常情况 ### 成果展示 - **报告制作**:生成高质量的图表用于科研报告 - **成果展示**:制作精美的可视化成果进行展示 - **数据共享**:提供标准格式的图表文件共享 可视化分析功能是整个水质反演系统的重要补充,将数值分析结果转换为直观的图形化展示,大大增强了结果的可解释性和应用价值。 ## 5. 使用指南 ### 5.1 快速开始 1. 准备输入高光谱影像(BIL格式) 2. 配置工作目录 3. 按步骤顺序执行处理流程 4. 查看结果和可视化输出 ### 5.2 配置文件管理 - 支持JSON格式配置文件 - 可保存和加载配置模板 - 参数批量修改 ### 5.3 批处理模式 支持命令行批处理执行,适合大规模数据处理: ```bash python water_quality_inversion_pipeline.py --config config.json ``` ## 6. 文件格式说明 ### 6.1 输入文件格式 - **高光谱影像**:BIL格式 + HDR头文件 - **训练数据**:CSV格式,包含坐标和光谱数据 - **矢量文件**:Shapefile格式 ### 6.2 输出文件格式 - **处理结果**:GeoTIFF格式 - **预测结果**:CSV格式 - **可视化图表**:PNG/PDF格式 - **模型文件**:Pickle格式 ## 7. 故障排除 ### 7.1 常见问题 1. **内存不足**:减小分块大小或增加系统内存 2. **文件路径错误**:检查文件路径和权限 3. **依赖库冲突**:使用虚拟环境隔离 ### 7.2 错误代码说明 - ERROR_001:文件不存在或路径错误 - ERROR_002:内存分配失败 - ERROR_003:算法执行超时 ## 8. 技术支持 ### 8.1 文档资源 - 用户手册 - API参考文档 - 示例数据集 ### 8.2 联系支持 - 技术支持邮箱:support@waterquality.com - 问题反馈系统 - 社区论坛 ## 附录 ### A. 算法参考文献 1. Kutser, T., et al. "太阳耀斑校正方法" 2. Goodman, J.A., et al. "经验模型校正" 3. Hedley, J.D., et al. "深水像素校正法" ### B. 版本历史 - v1.0.0 (2025-11-28):初始版本发布 - 新增多算法耀斑去除 - 增强机器学习模块 - 优化用户界面 ### C. 开源许可 本软件基于MIT开源许可证发布,欢迎贡献代码和改进建议。