生菜温室轨道多光谱分析 Demo

1. 项目简介

这是一个用于温室轨道多光谱农业表型分析的示例工程,当前对象是生菜。
工程包含 4 个采集日期的多光谱图像、RGB 图像、分析脚本、诊断图和本地网页报告。

当前采集日期:

  • 2025-04-10
  • 2025-04-16
  • 2025-04-19
  • 2025-04-21

每个日期包含:

  • 多光谱波段图像:550 / 660 / 720 / 840 nm
  • 对应 RGB 图像
  • 已生成的分析结果与诊断图

2. 目录结构

  • 0410/、0416/、0419/、0421/ 按采集日期整理的原始图像数据
  • scripts/generate_greenhouse_report.py 多光谱表型提取与网页报告生成脚本
  • greenhouse_report/ 已生成的 HTML 报告、CSV 指标表、时序摘要和诊断图

3. 当前主要输出

当前流程会输出以下结果:

  • 多光谱 EXIF 汇总表
  • 表型指标总表
  • 各位置时序变化摘要
  • 每个位置的植被指数时序图
  • 诊断图
  • 本地交互式网页报告

报告入口:

  • greenhouse_report/index.html
  • greenhouse_report/summary.html

主要数据表:

  • greenhouse_report/phenotype_metrics_all_dates.csv
  • greenhouse_report/phenotype_core_traits.csv
  • greenhouse_report/ms_exif_summary_all_dates.csv
  • greenhouse_report/position_time_series_summary.csv

4. 处理方法说明

脚本会读取多光谱 TIFF 图像中的 EXIF 信息,提取曝光时间和 ISO 增益,并进行曝光增益归一化,之后再计算植被指数和表型指标。

当前使用的相对辐射归一化公式:

I_norm = DN / (ExposureTime_s * (ISO / 100))

说明:

  • 这是相对辐射校正,不是绝对反射率
  • 适合做不同时间点、不同位置之间的相对比较
  • 如果后续加入白板、暗场等标定数据,可以进一步扩展为绝对反射率流程

当前已输出的核心植被指数包括:

  • NDVI
  • GNDVI
  • NDRE
  • OSAVI
  • SAVI
  • SR
  • MSR
  • CIgreen
  • CIrededge
  • DVI
  • RDVI
  • GRVI
  • NPCI
  • MCARI
  • MTCI
  • MSAVI
  • NLI

当前已提取的核心表型指标包括:

  • 多光谱植被覆盖率 ms_cover_ratio
  • RGB 覆盖率 rgb_cover_ratio
  • 主连通域面积 ms_largest_area_px
  • 主轴长度 ms_major_axis_px
  • 次轴长度 ms_minor_axis_px
  • 紧实度 ms_solidity

5. 运行环境

推荐使用以下 Python 环境:

  • Conda 环境:clear_conda_main

建议运行方式:

C:\Users\clear\.conda\envs\clear_conda_main\python.exe .\scripts\generate_greenhouse_report.py

6. 本次对话已完成的工作总结

本次已经完成的关键工作如下:

  1. 审阅了 4 个日期的数据结构,确认每个日期包含 8 个位置点以及 550/660/720/840/RGB 五类图像。
  2. 验证了多光谱 TIFF 中 EXIF 字段可读取,确认 ExposureTime 与 ISOSpeedRatings 可用于曝光增益归一化。
  3. 编写并完善了统一分析脚本 scripts/generate_greenhouse_report.py。
  4. 将 4 个日期、共 32 个样本纳入统一处理流程。
  5. 修正了 RGB 与多光谱文件在位置命名上的小数偏差问题,采用“按最近位置容差匹配”来保证样本完整配对。
  6. 生成了主报告 greenhouse_report/index.html 和摘要页 greenhouse_report/summary.html。
  7. 增加了每个位置的时序增减幅度汇总,以及“最值得关注的位置”排序。
  8. 按用户要求,把表型总表对应的核心指标改成“横轴为时间、纵轴为数值、8 个位置各自多条彩色线”的时序图。
  9. 初始化了 git 仓库,创建并推送到了 Gitea。
  10. 远程仓库名调整为包含 demo 和 multispectral 的形式,并把 README 改成中文。
  11. 项目目录已从桌面复制到新的工作路径:
D:\ClearCore\开发工作\ClearPro2026\2025_Lettuce

7. 当前仓库与版本控制信息

当前工程路径:

D:\ClearCore\开发工作\ClearPro2026\2025_Lettuce

远程仓库地址:

http://107.173.157.41:3000/clear/lettuce_multispectral_demo

说明:

  • 本地仓库已初始化
  • 当前分支为 main
  • 已成功推送到远程 Gitea
  • 后续如果对图表、算法、报告版式等进行了较满意的修改,可以继续提交并推送

8. 给后续 AI / 开发者的接手说明

后续如果由其他 AI 工具或开发者继续处理,建议先理解以下几点,避免重复走弯路:

8.1 数据配对规则

  • 多光谱文件名里的位置通常是整数形式,如 400.0 / 1600.0 / 6400.0
  • RGB 文件名里有时会出现轻微偏差,如 400.02 / 1600.1 / 6400.62 / 7600.64
  • 因此不能简单做“文件名位置完全相等匹配”,而应使用“最近位置容差匹配”
  • 当前脚本已经处理了这个问题,不要轻易改回严格相等匹配

8.2 采集时序风险

  • 每个日期中 0 mm 位置通常比其他位置晚约 125 分钟采集
  • 因此 0 mm 点与其他位置做横向比较时,要额外考虑温室光照时变带来的影响
  • 这不是脚本错误,而是数据采集顺序本身带来的风险

8.3 图表设计要求

用户已经明确表达过以下偏好:

  • 表型总表是最重要的内容,应放在报告最前面
  • 时序图应使用:
    • 横轴:时间
    • 纵轴:指标值
    • 同一张图中:多个位置用多条不同颜色线表示
  • 不要把多个量纲差异很大的指标硬塞到同一张 faceting 图里,否则视觉上容易“像只有一根线”

8.4 报告重点

当前报告中优先关注的内容是:

  • 表型总表时序曲线
  • 各位置时序增减幅度
  • 最值得关注的位置排序
  • 每个点的植被指数时序图

8.5 后续适合继续优化的方向

后续值得继续推进的方向包括:

  • 增加白板/暗场标定,升级为绝对反射率流程
  • 优化植株分割策略,提高不同日期间的稳定性
  • 增加更多农业表型指标,如圆度、形状复杂度、纹理统计等
  • 对关注位置做异常检测或自动预警
  • 将报告样式进一步整理成更适合汇报的版本

9. 推荐的后续协作方式

如果后续继续让 AI 工具协助,推荐直接说明以下信息:

  • 当前工程路径:D:\ClearCore\开发工作\ClearPro2026\2025_Lettuce
  • 主脚本:scripts/generate_greenhouse_report.py
  • 主报告:greenhouse_report/index.html
  • 摘要页:greenhouse_report/summary.html
  • Python 环境:clear_conda_main
  • 当前远程仓库:clear/lettuce_multispectral_demo

推荐直接给 AI 的任务描述方式:

  • “请基于现有脚本继续修改,不要重做整个流程”
  • “保留当前位置匹配逻辑,不要改回严格文件名匹配”
  • “表型总表时序曲线放在最上面,横轴是时间,多个位置用多条颜色线”
  • “修改完成后更新 README,并按需提交 git”

10. 版本管理说明

这个仓库用于持续记录:

  • 原始数据
  • 分析脚本
  • 报告输出
  • 后续逐步优化的版本

如果后续有新的分析改进、图表调整、流程优化或报告版式升级,建议继续基于当前仓库提交和追踪版本。

S
Description
Greenhouse multispectral lettuce analysis data, scripts, and reports
Readme
461 MiB
0 Stars 1 Watchers 0 Forks
Languages
Python 100%