当前位置: 首页 > news >正文

从历史航拍图像中去除阴影

在光学遥感中,阴影是影响土地覆盖制图精度和分辨率的一个因素,无论是历史影像(黑白影像)还是近期影像(全彩影像)。阴影的产生取决于太阳光照(太阳方位角和天顶角)、相机视点(海拔)以及地形(坡度和坡向)。为了最大限度地减少阴影对土地覆盖制图的影响,需要探索处理阴影区域的方法,以提高植被覆盖制图的精度,并进一步进行变化检测。

在遥感领域,人们通常将此过程称为“地形校正”,但本文中的阴影去除与地形校正略有不同。地形校正旨在减少甚至消除地形对成像的影响。而阴影去除仅考虑阴影区域,并重新计算那些更接近“无”阴影状态的区域像素,因此一些带有较暗像素的丘陵地带仍然会“保留”。

基于计算机视觉方法的阴影去除迭代处理

阴影的来源

正如简介中提到的,阴影的来源如下:

  • 太阳光照(太阳方位角和天顶角)

测量几何:太阳天顶角(SZA)、观测天顶角(VZA)和相对方位角(RAA)

  • 相机视点(海拔)
  • 地形(坡度和坡向剖面)

地形和太阳角度造成的山体阴影

典型的遥感阴影去除方法

遥感影像中的典型方法是利用数字地形模型模拟坡度和坡向,从而确定阴影区域,然后对坡度和坡向进行归一化处理,进行明纳尔特校正。明纳尔特校正后,最后一步是估算与周围像素的系数,从而去除航空影像中的阴影。

使用 ArcGIS Pro 完成的示例

然而,模拟的太阳角度(方位角和天顶角)以及米纳尔特校正等参数可能无法有效地推导出并消除丘陵地形的阴影(如图所示)。因此,另一种方法是使用多源数据组合或熵估计(由谷歌开发)来消除阴影。

谷歌开发的熵估计方法

成像中的光照变化会增加观察到的纹理强度的熵,而成像中的纹理又会增加光照函数的熵。如果我们想要分离图像及其纹理和光照,可以通过最小化每个分量的熵来实现。最小化一个分量可以简单地将整个能量转移到其他分量。对光照熵的约束起到了正则化的作用,并赋予其平滑性。

采用基于非参数核的二次熵公式来估计纹理和光照密度。它可以有效地执行多尺度迭代优化算法,以最小化最终的能量函数。该方法特别适用于包含独特纹理图案(例如建筑物立面)或具有较大漫射区域的软阴影(例如云阴影)的航空图像。

图像分量分离的方法
将观测图像I(x,y)分离为其纹理分量R(x,y)和光照分量L(x,y)。

假设图像 I 可以表示为这两个分量的总和:

I(x,y)= L(x,y)+ R(x,y)。

纹理成分表示图像中的底层纹理图案,而照明成分表示整体照明条件。

熵公式:
熵是衡量随机变量不确定性或随机性的指标。作者观察到,任何光照变化都会增加观察到的纹理强度的多样性(熵),而纹理的存在又会增加光照函数的熵。因此,他们利用熵的概念来公式化图像成分的分离。

随机变量X的熵表示为H(X)。

在这种情况下,作者考虑了观察到的图像 I、纹理分量 R 和照明分量 L 的熵。他们指出,观察到的图像 I 的熵大于或等于其分量的熵:

H(I)≥H(R),H(L)

这个不等式表明,通过最小化纹理和照明成分的熵,可以降低观察到的图像的整体熵。

<此图来自 Kwatra, Vivek & Han, Mei & Dai, Shengyang. (2012)> 从左到右:原始图像、无阴影蒙版、去除阴影后的图像、计算出的阴影图、局部裁剪前后的放大图(红色)和放大图(橙色)。上行使用用户自定义蒙版,下行使用自动蒙版

多源数据融合

通过整合来自多个来源的数据,例如卫星图像和航拍照片,可以获得更多信息来去除阴影。不同的数据源可能捕捉场景的不同方面,而这些数据源的组合可以提供对阴影模式和特征的更全面的理解。多源数据融合可以整合互补信息,从而提高阴影去除的准确性。

<此图来自 Dare, Paul. (2005)> 左边是原始卫星图像,右边是处理后的图像

基于图像处理的阴影去除方法

目前已经有一些阴影去除算法可以用来追踪和去除这些阴影区域,例如“图像阴影去除器”。这个 Python 包使用了 Murali、Saritha 和 VK Govindan 的方法进行阴影检测和去除。

对于阴影检测,他们首先将 RGB 图像(波段)转换到 LAB 颜色空间,阴影像素在 L 和 B 通道中的值都很低。因此,如果 L < T1 且 B < T2(其中 T1 和 T2 为阈值),则将像素分类为阴影,并应用形态学运算来优化阴影蒙版。此后,他们仅保留尺寸 > T3 的阴影区域以消除错误分类。此外,对于阴影去除,每个识别出的阴影区域如下:

  • 计算阴影区域内的平均 R、G、B 值:Rin、Gin、Bin
  • 计算阴影区域外的平均 R、G、B 值:Rout、Gout、Bout
  • 计算每个通道的常数:

KR = Rout/Rin,KG = Gout/Gin,KB = Bout/Bin

  • 将阴影区域中的每个像素乘以相应的常数:

R' = KR * R
G' = KG * G
B' = KB * B

这会缩放阴影区域的颜色通道,使其与阴影外部的光照水平匹配。对于后期处理来说,阴影边缘附近的像素不如阴影内部像素暗。此外,将这些边缘像素乘以常数可能会导致它们过度照明,最终对边缘像素应用中值滤波以消除这种过度照明。

image_shadow_remover,阴影去除算法的实现,下载image_shadow_remover的源码_GitHub_帮酷

阴影去除算法的实现。通过创建…为 YalimD/image_shadow_remover 开发做出贡献。

github.com

上排为原图,下排为去除阴影后的图像(Ma On Shen 样本)

航拍图像(左为原始图像,右为后期处理图像),大帽山样本

航拍图像(左为原始图像,右为后期处理图像),马鞍山样本

总体而言,基于图像处理的方法效果显著,其结果优于基于遥感的方法,例如多源数据融合、C系数校正或Minnaert校正。然而,为了更好地解读历史航拍图像,以便更好地进行植被覆盖制图和长期变化检测,增强和改进阴影去除效果仍有很长的路要走。

http://www.xdnf.cn/news/1087399.html

相关文章:

  • 把文件夹下所有的excle写入word文件中
  • Grok 4,来了。
  • 算法设计与分析 知识总结
  • Android中MVI架构详解
  • MATLAB/Simulink电机控制仿真代做 同步异步永磁直驱磁阻双馈无刷
  • 基于PHP/MySQL的企业培训考试系统源码,高并发、稳定运行,源码开源可二开
  • Android补全计划 TextView添加删除线、下划线、更新字体等效果
  • RHA《Unity兼容AndroidStudio打Apk包》
  • 深度学习——神经网络1
  • 数据库迁移:alembic 这是什么工具?
  • Shader面试题100道之(21-40)
  • 【Python-GEE】如何利用Landsat时间序列影像通过调和回归方法提取农作物特征并进行分类
  • 从 0 构建一个 AI 模型测试小项目(含 pandas+sklearn 实战)
  • 4.权重衰减(weight decay)
  • EPLAN 电气制图(四):EPLAN 总电源电路设计知识详解
  • 【openGLES】安卓端EGL的使用
  • vue3 el-table 行数据沾满格 取消自动换行
  • 小米YU7预售现象深度解析:智能电动汽车的下一个范式革命
  • 【Linux】Redis 6.2.6 的二进制部署【适用于多版本】
  • 中州养老Day02
  • Zookeeper是如何解决脑裂问题的?
  • 深入了解linux系统—— System V之消息队列和信号量
  • 从0到1搭建ELK日志收集平台
  • 扣子Coze纯前端部署多Agents
  • 使用python的 FastApi框架开发图书管理系统-前后端分离项目分享
  • 暑假算法日记第四天
  • Django双下划线查询
  • 汽车功能安全系统阶段开发【技术安全方案TSC以及安全分析】5
  • 基于Vue 3的AI前端框架汇总及工具对比表
  • HTTP/3.x协议详解:基于QUIC的下一代Web传输协议