Initial commit of WQ_GUI

This commit is contained in:
2026-04-08 15:25:08 +08:00
commit 91e36407ae
302 changed files with 40872 additions and 0 deletions

228
软件说明2.md Normal file
View File

@ -0,0 +1,228 @@
我来帮您重构软件说明文档的标题层级。首先让我分析当前的标题结构,然后进行合理的层级调整。
[1 tool called]
让我先分析当前软件说明文档的标题层级结构,然后进行重构。
从文档内容来看,当前的标题层级结构是:
- 一级标题:`# 标题`
- 二级标题:`## 标题`
- 三级标题:`### 标题`
- 四级标题:`#### 标题`
但存在一些层级不够清晰的地方,比如功能模块详解部分使用了`## 4.1 步骤1水域掩膜生成`这样的格式,但实际内容层级应该更清晰。
我将重构标题层级,使其更加清晰和规范:
[1 tool called]
我将帮您重构软件说明文档的标题层级。让我先分析当前文档的结构,然后进行合理的层级调整。
从您提供的文档内容来看,当前标题层级存在一些不一致的地方。让我为您重构标题层级:
```startLine:1:软件说明.md
# 水质参数反演分析系统 - 软件说明书
## 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. 功能模块详解
### 4.1 步骤1水域掩膜生成
#### 4.1.1 功能概述
步骤1负责生成水域掩膜文件用于后续步骤中限定水域范围。支持两种生成方式
1. **使用现有掩膜文件** - 直接使用已有的Shapefile或栅格文件
2. **使用NDWI自动生成** - 基于NDWI归一化水体指数阈值分割自动提取水域
#### 4.1.2 支持的输入格式
##### 掩膜文件格式:
- **Shapefile (.shp)** - 矢量格式,需要提供参考影像进行栅格化
- **栅格文件 (.dat, .tif)** - 直接使用,无需栅格化
##### 参考影像格式:
- **ENVI格式 (.bsq, .dat)** - 支持多波段高光谱数据
- **GeoTIFF (.tif)** - 标准栅格格式
#### 4.1.3 参数配置
##### 使用现有掩膜文件模式:
- **掩膜文件路径** - 选择.shp或.dat格式的水域掩膜文件
- **参考影像路径** - 当使用.shp文件时必须提供用于栅格化
##### NDWI自动生成模式
- **参考影像路径** - 用于计算NDWI指数的多波段影像
- **NDWI阈值** - 默认0.4范围0.0-1.0,控制水域提取的灵敏度
- 较低阈值:提取更多水域(可能包含非水域区域)
- 较高阈值:提取更少水域(可能遗漏部分水域区域)
#### 4.1.4 技术实现
##### 栅格化处理(针对.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.1.5 输出结果
- **输出掩膜文件** - 统一为ENVI格式的.dat文件
- **文件命名** - 默认"water_mask.dat",可自定义输出路径
#### 4.1.6 使用建议
1. **优先使用现有掩膜文件** - 如果已有精确的水域边界.shp文件
2. **NDWI适用于简单场景** - 当没有精确水域边界时使用
3. **调整NDWI阈值** - 根据具体水域特性调整阈值:
- 清澈水域0.3-0.4
- 浑浊水域0.4-0.6
- 特殊情况可能需要实验确定最佳阈值
#### 4.1.7 错误处理
- 文件不存在时会提示错误
- .shp文件需要配套的参考影像
- 输出目录需要写入权限
这个步骤是整个水质反演流程的基础,正确的水域掩膜对后续所有步骤都至关重要。
### 4.2 步骤2耀斑区域检测
#### 4.2.1 功能概述
步骤2负责检测影像中的耀斑区域生成耀斑掩膜文件。耀斑是水面反射太阳光造成的过亮区域会影响水质参数反演的准确性。该步骤提供多种检测算法可根据不同场景选择合适的方法。
#### 4.2.2 支持的输入格式
##### 必需输入:
- **影像文件** - 多波段高光谱影像(.bsq, .dat, .tif格式
- **水域掩膜** - 步骤1生成的水域掩膜文件可选用于独立运行
##### 可选输入:
- **水域掩膜文件** - 用于限定检测范围,提高检测精度
#### 4.2.3 检测方法
##### 1. Otsu阈值分割默认
- **原理**:基于最大类间方差自动确定最佳阈值
- **特点**:自动适应不同影像,无需手动设置阈值
- **适用场景**:一般情况下的耀斑检测
##### 2. Z-score统计方法
- **极原理**:基于标准差识别异常高亮像素
- **参数**Z-score阈值默认2.5
- **特点**:对数据分布不敏感,适合正态分布数据
- **适用场景**:数据分布相对均匀的情况
##### 3. 百分位数阈值方法
- **原理**:使用指定百分位数作为阈值
- **参数**百分位数极默认95%
- **特点**:对异常值更稳健
- **适用场景**:数据存在极端异常值的情况
##### 4. IQR异常值检测
- **原理**:基于四分位距识别异常值
- **参数**IQR倍数默认1.5
- **特点**:对偏态分布数据效果好
- **适用场景**极:数据分布不均匀的情况
##### 5. 自适应阈值方法
- **原理**:局部自适应阈值分割
- **参数**窗口大小默认15
- **特点**:适应局部亮度变化
- **适用场景**:光照不均匀的影像
##### 6. 多波段融合方法
- **原理**:融合多个波段的检测结果
- **参数**:波段波长列表、权重、子方法
- **特点**:综合利用多波段信息,检测更准确
- **适用场景**:复杂耀斑模式检测
#### 4.2.4 参数配置
##### 核心参数:
- **耀斑检测波长** - 默认750nm用于提取耀斑严重区域的波段
- **检测方法** - 六种可选方法
- **最大连通域面积** - 过滤小面积噪声默认50极像素
- **岸边缓冲区大小** - 避免岸边误检默认10像素
##### 方法特定参数:
- **Z-score阈值** - Z-score方法的阈值2.0-3.0
- **百分位数** - 百分位数方法的阈值90-99
- **IQR倍数** - IQR方法的倍数1.0-3.0
- **窗口大小** - 自适应方法的窗口大小5-30
#### 4.2.5 技术实现
```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):
# 读取影像和水域掩膜
# 根据选择的方法进行耀斑检测
# 后处理:面积过滤、岸边缓冲
# 输出耀斑掩膜文件
```
#### 4.2.6 输出结果
- **耀斑