大疆精灵四多光谱版,集辐射传感器和多光谱相机于一身,理论上只要不是大风天气就都可以良好的完成任务,在AE锁打开的情况下相机会自动根据辐射值调整曝光时间,使太阳辐射有变化的情况下整张影象趋于均一。但实际使用中遇到多云天气,还是会对拼接后的影象产生较大的影响,说明设备的精准度还有待提高。
比如图中3251和3261明显比其他部分亮
原因分析
首先我们提取整个影象的辐射值,提取方法见疆精灵4多光谱辐射信息分析
图中红框的区域是上面影象的区域,其中3271和3261是变化比较明显的两个点,3261过亮可能就是辐射传感器慢于相机,相机采集的照片已经是太阳直射了,而辐射传感器还是有云情况下的辐射,导致计算反射率时偏高。
解决办法
既然辐射传感器与相机之间有偏差,在执行任务过程中遇到辐射剧烈变化时,使用后一张的辐射代替前一张的辐射即可基本使相机于实际太阳辐射对应起来,再计算反射率
"""
author: Shuai-jie Shen 沈帅杰
CSDN: https://blog.csdn.net/weixin_45452300
公众号: AgBioIT
"""
import cv2
import numpy as np
from pyexiv2 import Image
def image_info(imagepath):
"""获取xmp、xeif信息"""
img = Image(imagepath)
exif = img.read_exif() # 读取 EXIF 元数据,这会返回一个字典
xmp = img.read_xmp()
img.close() # 操作完之后,记得关闭图片
return xmp, exif
def change_Irradiance(image_1, image_2):
"""
使用image_2的辐射替换image_1的辐射
"""
image_1 = image_1
image_2 = image_2
xmp1, exif1 = image_info(image_1)
xmp2, exif2 = image_info(image_2)
xmp1['Xmp.drone-dji.Irradiance'] = xmp2['Xmp.drone-dji.Irradiance']
Image(image_1).modify_xmp(xmp1)
# 五个波段全部替换
for i in range(1,6):
image_1 = r'G:\multispectral images\DJI_326%d.TIF'%i
image_2 = r'G:\multispectral images\DJI_327%d.TIF'%i
change_Irradiance(image_1, image_2)
以上代码是两张图片替换辐射
替换后基于新辐射计算反射率,用metashape拼接
结果还是不错的,看来基本就是这个原因