关键词:Metashape
Photoscan
多光谱影像
多光谱反射率正射影像
波段合成
日期:28/7/2021
正射影像的生成通常是遥感数据处理的重要步骤,按照Metashape/Photoscan的用户手册的流程即可,本没有太多必要去说。但是,单波段、RGB影像、多光谱影像数据生成正射影像的操作方式并不完全一样:
尤其是多光谱数据制作反射率正射影像时确实有一些需要特别去说的,本篇博客的目的就是探索如何生成
多光谱正射影像
。
1. 多光谱影像的特殊性
直观听起来,多光谱影像与单波段影像相比只是波段多了几个,与RGB影像相比似乎也差不多,但是多光谱影像有其自身的特殊性:
对于绝大多数多光谱相机来说,每个波段都有一个对应的传感器。由于传感器A与传感器B之间存在几何偏移,成像的地物范围并不严格一致,因此需要对不同波段影像之间进行几何配准; 民用RGB数码相机影像并不能算作多光谱影像,尽管它有3个波段的信息,但由于其波段信号交叉、存在后续信号处理等,因此并不能得到窄波段反射率信息。RGB相机采用拜耳阵列,因此不同波段的影像天然地被配准在一起。 可以发现,多光谱相机(例如:
micasense red-edge
、phantom 4 multispectral
、tetracam miniMCA
、hiphen airphen
)的不同波段影像之间需要进行几何配准。
2. 采用Agisoft软件生成多光谱反射率正射影像
我一直在用Agisoft的PhotoScan以及其改名后的更新版本Metashape,所以说一下用该软件制作多光谱正射影像的方法。
本篇博客中以DJI P4M 多光谱影像数据为例。
其实Agisoft的PhotoScan或Metashape是可以自动地识别DJI P4M的多波段影像,因为其能够识别影像的元数据XMP信息,所以如果采用原始影像生产正射影像的话,直接按照常规流程即可,就不多说了。
然而,在定量遥感中通常需要的是多光谱反射率正射影像,因此需要将原始影像处理为
双向反射率影像
(参考我之前的博客:辐射校正获取双向反射率)。但是如之前的博客所说,这个双向反射率tiff影像不再包含XMP元数据信息了,因此不能被Metashape自动识别为多光谱影像,那怎么办呢?
2.1. 试错
最开始我想直接将每个波段的反射率影像单独生成正射影像,然后波段合成就好了。 但我发现DJI P4M在任一航点处,不同波段影像的经纬度竟然并不完全一致(存在微小的差异),在波段合成后,我发现影像之间的几何偏移很大。此路不通。
然后我想那每个波段的反射率影像共用NIR波段影像的经纬度信息应该会好。 然而,由于不同波段影像中地物的亮度等特征并不一致,在执行SfM算法的特征点检测与匹配时,结果并不完全一致,造成每个波段的反射率正射影像仍存在一定的几何偏移。
2.2. 多光谱反射率正射影像生成
那看来必须保证各个波段影像的成像模型中的投影变换公式参数一致才行。那么我想有两种方式:
采用路径替换的方式:即基于P4M的原始多光谱影像执行三维重建,然后采用 change path
工具,将图像文件进行替换,替换为辐射校正后的多光谱影像。
这里有两个注意事项:
(1)对于辐射校正后的多光谱影像,不同波段之间已经进行了几何位置偏移校正,即波段间已经能够配准; (2)替换文件时,必须保证文件名一致,而且需要逐个波段的影像进行替换。假如待替换文件名为“DJI0081.TIFF”,那么替换文件的文件名必须也为“DJI0081.TIFF”。即便替换文件的原本文件名并非如此,也必须修改为此。 逐个波段的正射影像导出后,然后在
ENVI
中进行波段合成layer stacking
就可以了。
采用multi-page tiff影像的方式:即将一次拍摄的所有波段影像保存为 multi-page tiff
格式,即可翻页的TIFF影像文件。这样保证了PhotoScan能够识别出这是多光谱影像。
但是这样做有一个不太方便的地方:
由于在保存multi-page tiff时并不带有经纬度信息,所以需要额外导入一个航点坐标文件,不过其实这并不难嘛。
这里我不知道怎么将原始影像中的元数据信息保存到multi-page tiff影像中,如果有知道的看官,麻烦告诉我,谢谢。
这样做比较好的地方是:
这种方式能够直接导出波段合成后的正射影像,无需采用ENVI进行波段合成了。
其实当我们放大正射影像仔细看,通常会发现正射影像中存在
模糊
、扭曲
、小孔洞
、纹理不清晰
等问题,这是与blending mode
有关,以及与影像重叠度、重建算法等有关,但这并不在本博客的讨论范围之内。