You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python对卫星影像双矩阵着色可视化 识别早晚观测值差异

实现方案

核心逻辑

  • 不直接做矩阵差丢失原始信息,通过构造RGBA四通道彩色图像实现自定义配色,每个通道对应指定规则的数值映射
  • 提前设定差异阈值(可根据观测误差调整,严格相等设为0即可),区分「未变化」和「变化」两类像素分别赋值

代码实现

import numpy as np
import matplotlib.pyplot as plt

# 1. 自定义参数设置
diff_threshold = 0  # 差异大于该值判定为变化,可根据数据精度调整
orange_rgb = [1, 0.6, 0, 1]  # 自定义橙色调,RGBA格式最后一位为不透明度

# 2. 归一化原始矩阵到[0,1]范围(原始取值0-100,直接除以100即可)
viz_norm = viz / 100
viz1_norm = viz1 / 100

# 3. 生成变化掩码
diff_mask = np.abs(viz - viz1) > diff_threshold

# 4. 构造RGBA图像数组
h, w = viz.shape
rgba_img = np.zeros((h, w, 4))
rgba_img[..., 3] = 1  # 默认全不透明

# 未变化区域:红通道映射晚时段数值(对应原Reds色卡效果),蓝通道映射早时段数值(对应原Blues色卡效果)
rgba_img[~diff_mask, 0] = viz1_norm[~diff_mask]
rgba_img[~diff_mask, 2] = viz_norm[~diff_mask]

# 变化区域统一赋值为橙色
rgba_img[diff_mask] = orange_rgb

# 5. 可视化
plt.imshow(rgba_img, aspect='auto')
plt.axis('off')  # 可选:关闭坐标轴
plt.show()

可调整优化项

  • 如果需要橙色深浅匹配差异大小,可替换变化区域赋值逻辑:
# 差异值归一化到[0,1]
diff_norm = np.abs(viz - viz1) / 100
rgba_img[diff_mask, 0] = 1
rgba_img[diff_mask, 1] = 1 - diff_norm[diff_mask] * 0.4  # 差异越大橙色越深
rgba_img[diff_mask, 2] = 0
  • 未变化区域如果不需要同时展示两个时段的数值深浅,可直接固定为纯蓝/纯红,调整对应通道赋值即可

原代码问题说明

你之前连续调用两次imshow的写法,第二次渲染的红色图层会完全覆盖下层的蓝色图层,只有给上层添加透明度参数alpha才能透出下层,但混色效果不可控,也无法单独突出变化区域为橙色。

内容的提问来源于stack exchange,提问作者et11enne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 14:36:00