AI 摘要

喵呜~小伙伴们快来和喵喵一起探索如何用Python魔法让遥感影像穿上“假彩色”的华丽外衣吧!(✧ω✧) 我们将学习如何把看不见的近红外光变成美丽的红色,让植被和水体在图像中焕发新生。准备好跟着喵喵一步步施展编程魔法了吗?让我们开启这段奇妙的视觉旅程吧!(=^・ω・^=) 喵呜~

遥感影像的假彩色显示

假彩色显示的概念

假彩色显示是一种将遥感影像的非可见光波段(如近红外波段)与可见光波段(如红、绿、蓝波段)组合,生成一种非自然色彩的图像的技术。这种技术常用于突出某些地物特征(如植被、水体等)。

假彩色显示的常见组合

  1. NIR-Red-Green 组合

    • 近红外波段(NIR)映射到红色通道。
    • 红色波段(Red)映射到绿色通道。
    • 绿色波段(Green)映射到蓝色通道。
    • 效果:植被呈现红色,水体呈现深蓝色,城市区域呈现灰色或白色。
  2. NIR-Green-Blue 组合

    • 近红外波段(NIR)映射到红色通道。
    • 绿色波段(Green)映射到绿色通道。
    • 蓝色波段(Blue)映射到蓝色通道。
    • 效果:植被呈现红色,水体呈现深蓝色,城市区域呈现灰色或白色。

假彩色显示的步骤

  1. 读取波段数据:使用 rasterio 读取遥感影像的各个波段(如 NIR、Red、Green)。
  2. 波段组合:将波段数据按假彩色组合方式堆叠成一个 RGB 图像。
  3. 显示图像:使用 matplotlib 显示假彩色图像。

示例代码分块说明

1. 导入库

import rasterio
import numpy as np
import matplotlib.pyplot as plt
  • 功能:导入所需的库。
    • rasterio:用于读取遥感影像。
    • numpy:用于数组操作。
    • matplotlib.pyplot:用于绘图。

2. 设置 matplotlib 的字体和符号显示

plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
  • 功能:设置 matplotlib 的中文字体和解决负号显示问题。
    • SimHei 是一种常用的中文字体。
    • axes.unicode_minus=False 确保负号正常显示。

3. 读取近红外波段(NIR)数据

nir_path = r'<红外波段数据路径>'  
with rasterio.open(nir_path) as src:
    nir_band = src.read(1)
  • 功能:读取近红外波段(NIR)数据。
    • nir_path:NIR 波段文件的路径。
    • rasterio.open():打开遥感影像文件。
    • src.read(1):读取第一个波段的数据。

4. 读取红色波段(Red)数据

red_path = r'<红光波段数据路径>'
with rasterio.open(red_path) as src:
    red_band = src.read(1)
  • 功能:读取红色波段(Red)数据。
    • red_path:Red 波段文件的路径。
    • src.read(1):读取第一个波段的数据。

5. 读取绿色波段(Green)数据

green_path = r'<绿光波段数据路径>'
with rasterio.open(green_path) as src:
    green_band = src.read(1)
  • 功能:读取绿色波段(Green)数据。
    • green_path:Green 波段文件的路径。
    • src.read(1):读取第一个波段的数据。

6. 将 NIR、Red、Green 波段组合成假彩色图像

rgb_image = np.stack((nir_band, red_band, green_band), axis=-1)
  • 功能:将 NIR、Red、Green 波段数据沿最后一个维度堆叠,生成假彩色图像。
    • np.stack():将多个数组沿指定维度堆叠。
    • axis=-1:沿最后一个维度堆叠。

7. 创建绘图窗口

plt.figure(figsize=(10, 10))
  • 功能:创建一个 10x10 大小的绘图窗口。

8. 显示假彩色图像

plt.imshow(rgb_image)
plt.title("遥感影像假彩色显示(NIR-Red-Green)")
plt.axis('off')
  • 功能:显示假彩色图像。
    • plt.imshow():显示 RGB 图像。
    • plt.title():设置图像标题。
    • plt.axis('off'):不显示坐标轴。

9. 显示绘图

plt.show()
  • 功能:显示绘图窗口。


我是谁?我在哪?我在干什么?
最后更新于 2025-03-02