基于无人机遥感的植被覆盖度测量实践与经验分享
分享基于无人机遥感的植被覆盖度测量实验经验,主要任务是利用大疆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 自动航线飞行
- 在DJI Fly App中进入“航线飞行”模式,规划矩形区域(覆盖整个样方)。
- 设置飞行高度、速度、重叠率(建议航向80%,旁向70%)。
- 执行自动飞行,实时关注飞行状态和电量,必要时手动干预。
3.2.2 手动拍摄小样方
- 降落无人机,将样方框放置在地面。
- 起飞无人机至小样方正上方2m高度,调整云台垂直向下。
- 切换至拍照模式,连续拍摄2~3张,确保清晰无模糊。
- 移动样方框,依次拍摄所有小样方。
3.3 数据处理流程
- 照片导出:从无人机存储卡中导出照片,可利用DJI软件获取每张照片的经纬度(用于位置验证)。
- 筛选:删除模糊、过曝或欠曝的照片。
- 重命名:按“样方编号_小样方编号”格式命名,便于批处理。
- 计算:运行Python脚本批量计算每个小样方的覆盖度,最后取平均得到样方覆盖度。
四、参考文献
- GB/T 41282-2022《植被覆盖度遥感产品真实性检验》
- DJI Mavic 3用户手册v2.3