基于无人机遥感的植被覆盖度测量实践与经验分享

基于无人机遥感的植被覆盖度测量实践与经验分享

分享基于无人机遥感的植被覆盖度测量实验经验,主要任务是利用大疆Mavic 3无人机进行植被覆盖度地面测量,包含样方设计、航线规划、现场拍摄以及借助AI算法计算覆盖度。

一、实验概况与目的

实验测量的植被覆盖度(Fractional Vegetation Cover, FVC)定义为植被地上部分垂直投影面积占统计区总面积的百分比,是反映生态环境状态的重要参量,传统地面测量耗时耗力,而无人机遥感凭借其高机动性和高分辨率成为主流手段。本次实验的主要目的是:

  • 掌握无人机遥感监测的标准化操作流程
  • 学习植被覆盖度地面测量的技术方法
  • 熟悉使用AI(DeepSeek算法)完成植被覆盖度计算
  • 总结无人机监测中的常见问题及解决方案二、技术方法与工作流程

二、技术方法与工作流程

2.1 植被覆盖度地面测量技术简介

植被覆盖度指单位面积内植被冠层(叶、茎、枝)垂直投影面积所占的比例。目前最常用的地面测量方法是照相法——利用数码相机或无人机拍摄样方照片,然后通过图像识别计算植被像素占比。本次实验采用无人机垂直向下拍摄小样方(1m×1m),再通过算法批量计算覆盖度。

2.2 工作流程全记录

整个流程分为三个阶段:前期准备、现场作业、数据处理。下面逐一展开。

2.2.1 前期准备

① 样方设计
基于最新的高分影像(如Google Earth、91卫图),在测区内选择具有代表性的样方,确保覆盖不同植被类型(草地、灌木等)和覆盖度梯度。每个样方大小为10m×10m,并在其中均匀布设9个1m×1m的小样方用于地面验证。

② 设备检查
使用的设备是大疆Mavic 3,每次出发前必须完成以下检查:

检查项目标准要求检查方法
电池电量≥80%短按电池开关查看指示灯
螺旋桨无损坏,安装正确目视检查,确认标记对应
存储卡剩余空间≥32GB在DJI Fly App中查看
云台无遮挡,可自由活动开机观察云台自检
固件版本最新版本连接DJI Fly检查更新

③ 飞行计划
在DJI Fly App中规划自动航线:

  • 飞行高度:根据样方大小设置,一般15~20m可保证地面分辨率优于1cm
  • 重叠率:航向80%,旁向70%(确保后期拼接或覆盖度计算无遗漏)
  • 飞行速度:平稳模式5m/s
2.2.2 现场作业

① 样方定位
使用RTK或高精度GPS测量样方四个角点坐标,并在现场用标尺或喷漆标记。对于1m×1m小样方,采用预先制作好的1m×1m样方框放置在地面。

② 无人机飞行

  • 自动航线飞行:起飞后执行预设航线,获取整个样方的正射影像。
  • 手动拍摄小样方:切换至手动模式,将无人机悬停在小样方正上方2m高度,云台角度调至-90°(垂直向下),拍摄照片。注意保持画面清晰,避免阴影遮挡。

③ 地面测量
同时使用数码相机垂直拍摄小样方照片,并记录样方内植被类型、高度等信息,用于后续验证。

2.2.3 数据处理

① 照片整理
按样方编号建立文件夹,将无人机拍摄的小样方照片和地面验证照片分类存放。照片命名格式统一为:样方编号_小样方编号.jpg(如P01_01.jpg)。

② 植被覆盖度计算
采用基于Lab色彩空间的植被识别算法(我称之为SHAR-LAB FVC),该算法能够有效抵抗阴影和过曝的影响,准确提取绿色植被。

以下是完整的Python脚本,只需修改图片路径即可运行:

""" SHAR-LAB FVC 植被覆盖度计算脚本 功能:读取指定无人机照片,基于Lab色彩空间进行抗阴影植被分类,计算植被像素占比。 用法:直接修改下方 IMAGE_PATH 变量为图片路径,然后运行。 """ import numpy as np from skimage import io, color import os import sys # ================== 用户配置区 ================== # 请将下面的路径改为您的图片文件路径 IMAGE_PATH = "D:/drone_photos/sample_plot.jpg" # 例如:"/home/user/photo.jpg" # ============================================= def shar_lab_fvc(image_path, a_thresh=2, b_thresh=2, L_min=5, L_max=98): """ 使用SHAR-LAB FVC算法计算植被覆盖度。 参数: image_path : str -- 图像文件路径 a_thresh : float -- a* 通道上限(小于此值视为偏绿) b_thresh : float -- b* 通道下限(大于此值视为偏黄/绿) L_min : float -- 亮度下限(排除阴影等过暗区域) L_max : float -- 亮度上限(排除过曝区域) 返回: fvc : float -- 植被覆盖度百分比,若处理失败返回None """ # ---------- 文件存在性检查 ---------- if not os.path.exists(image_path): print(f"错误:文件不存在 -> {image_path}") return None # ---------- 图像读取 ---------- try: img = io.imread(image_path) except Exception as e: print(f"读取图像失败:{e}") return None # ---------- 图像格式归一化 ---------- if img.ndim == 2: # 灰度图 -> 转为RGB img = color.gray2rgb(img) elif img.shape[2] == 4: # 含Alpha通道 -> 去除Alpha img = img[:, :, :3] elif img.shape[2] != 3: print(f"不支持的图像通道数:{img.shape[2]},需要3通道RGB图像。") return None # ---------- 转换到Lab色彩空间 ---------- # rgb2lab要求输入范围[0,1]或[0,255]均可,函数会自动处理 lab = color.rgb2lab(img) L = lab[:, :, 0] # 亮度 (0~100) a = lab[:, :, 1] # 绿-红分量 (负值偏绿) b = lab[:, :, 2] # 蓝-黄分量 (正值偏黄) # ---------- 植被像素判别(核心规则)---------- # 条件:a* 小于阈值(偏绿),b* 大于阈值(偏黄/绿),且亮度在合理范围(抗阴影) vegetation_mask = (a < a_thresh) & (b > b_thresh) & (L > L_min) & (L < L_max) # ---------- 计算覆盖度 ---------- veg_pixels = np.sum(vegetation_mask) total_pixels = vegetation_mask.size fvc = (veg_pixels / total_pixels) * 100.0 return fvc if __name__ == "__main__": # ---------- 确定图片路径(优先使用命令行参数)---------- if len(sys.argv) > 1: image_path = sys.argv[1] else: image_path = IMAGE_PATH if not image_path: print("错误:未指定图片路径。请在代码中设置 IMAGE_PATH 或在命令行提供路径。") sys.exit(1) # ---------- 计算并输出结果 ---------- fvc = shar_lab_fvc(image_path) if fvc is not None: print(f"\n植被覆盖度 FVC = {fvc:.2f}%") else: sys.exit(1)

运行环境:需要安装numpy和scikit-image,在终端执行:

pip install numpy scikit-image

样方尺度覆盖度计算:对于整个样方(10m×10m),其覆盖度等于9个小样方照片覆盖度的算术平均值。


三、大疆无人机遥感监测标准化操作手册

3.1 飞行前准备

  • 环境检查:风速<8m/s,无降水,能见度>5km;尽量避开正午强光(10:00-14:00),以免产生过多阴影;远离高压线、通讯基站等电磁干扰源。
  • 设备准备:按照前文检查清单逐项确认,准备备用电池。

3.2 飞行操作流程

3.2.1 自动航线飞行
  1. 在DJI Fly App中进入“航线飞行”模式,规划矩形区域(覆盖整个样方)。
  2. 设置飞行高度、速度、重叠率(建议航向80%,旁向70%)。
  3. 执行自动飞行,实时关注飞行状态和电量,必要时手动干预。
3.2.2 手动拍摄小样方
  1. 降落无人机,将样方框放置在地面。
  2. 起飞无人机至小样方正上方2m高度,调整云台垂直向下。
  3. 切换至拍照模式,连续拍摄2~3张,确保清晰无模糊。
  4. 移动样方框,依次拍摄所有小样方。

3.3 数据处理流程

  1. 照片导出:从无人机存储卡中导出照片,可利用DJI软件获取每张照片的经纬度(用于位置验证)。
  2. 筛选:删除模糊、过曝或欠曝的照片。
  3. 重命名:按“样方编号_小样方编号”格式命名,便于批处理。
  4. 计算:运行Python脚本批量计算每个小样方的覆盖度,最后取平均得到样方覆盖度。

四、参考文献

  1. GB/T 41282-2022《植被覆盖度遥感产品真实性检验》
  2. DJI Mavic 3用户手册v2.3

Read more

从零开始:Xilinx FPGA实现RISC-V五级流水线CPU手把手教程

从一块FPGA开始,亲手造一颗CPU:RISC-V五级流水线实战全记录 你还记得第一次点亮LED时的兴奋吗?那种“我真正控制了硬件”的感觉,让人上瘾。但如果你能 自己设计一颗处理器 ,让它跑起第一条指令——那才是数字世界的终极浪漫。 今天,我们就来做这件“疯狂”的事:在一块Xilinx FPGA上,用Verilog从零实现一个 完整的RISC-V五级流水线CPU 。不是调用IP核,不是简化版demo,而是包含取指、译码、执行、访存、写回五大阶段,并解决真实数据冒险与控制冒险的可运行核心。 这不仅是一次教学实验,更是一场对计算机本质的深度探索。 为什么是 RISC-V + FPGA? 别误会,我们不是为了赶潮流才选RISC-V。恰恰相反,它是目前最适合学习CPU设计的指令集。 * 开放免费 :没有授权费,文档齐全,连寄存器编码都写得明明白白。 * 简洁清晰 :RV32I只有40多条指令,没有x86那样层层嵌套的历史包袱。 * 模块化扩展 :基础整数指令够用,后续想加浮点、压缩指令、向量扩展,都可以一步步来。

LongCat-Image-Editn效果展示:博物馆文物图‘添加AR扫描框+说明文字’

LongCat-Image-Editn效果展示:博物馆文物图‘添加AR扫描框+说明文字’ 1. 为什么这个能力让人眼前一亮 你有没有见过这样的场景:站在博物馆展柜前,手机对准一件青铜器,屏幕立刻浮现出半透明的AR扫描框,框内还精准叠加着“西周晚期·兽面纹簋”这样清晰工整的中文说明文字?既不遮挡文物本体细节,又让信息触手可及——这不再是AR眼镜专属体验,而是一张图、一句话就能实现的智能编辑。 LongCat-Image-Editn(内置模型版)V2,正是把这种专业级图像增强能力,塞进了普通人也能轻松操作的网页界面里。它不靠复杂建模、不依赖3D引擎,只用一句自然语言描述,就能在原图上“无痕植入”AR交互元素:扫描框的虚线质感、文字的位置与字体大小、甚至中英文混排时的对齐方式,全都稳稳落在该在的地方。最关键的是——文物照片其余部分连一个像素都不动。 这不是修图,是“图上布展”。 2. 模型到底强在哪:三句话说清核心能力 2.1 中英双语一句话改图,中文不是“凑数”的 很多图像编辑模型对中文提示词反应迟钝,要么忽略文字内容,

若依(RuoYi)低代码框架全面分析

若依(RuoYi)低代码框架全面分析

文章目录 * 一、框架概述与技术背景 * 技术架构全景 * 二、核心特长分析 * 1. 完备的权限管理体系 * 2. 高度模块化的系统设计 * 3. 强大的代码生成器 * 4. 丰富的功能组件 * 三、显著短板与局限性 * 1. 技术栈相对保守 * 2. 代码生成器的局限性 * 3. 性能瓶颈与扩展性挑战 * 4. 学习曲线与定制成本 * 四、实际应用场景分析 * 适合场景 * 不适用场景 * 五、与其他框架对比 * 六、总结与展望 一、框架概述与技术背景 若依(RuoYi)是基于Spring Boot的权限管理系统,是中国Java低代码领域的代表性开源框架。其名称"若依"取自"若你"的谐音,体现了"