【问题标题】:Creating an RGB composite SAR image创建 RGB 合成 SAR 图像
【发布时间】:2016-11-08 20:22:36
【问题描述】:

我是 Python 编程的新手,我需要您的帮助。在发布之前,我总是先对我的问题进行研究。

我有 tiff 格式的 SAR 双偏振图像(2^16 灰度值)。在这个 tiff 图像中有两个波段。第一个波段(HH_band)是水平极化通道,第二个波段(HV_band)是垂直极化通道。我想创建一个 RGB 合成图像。为此,我需要将两个通道分层堆叠,如下所示:

  1. 获取第一个波段 (HH_band)
  2. 获得第二个波段 (HV_band)
  3. 获取比率(HH_band/HV_band)

我知道有很多人在某个时候发布过类似的帖子(自然色的 RGB 合成图像)。我尝试使用 openCV 库中的 cv2.mergecv2.split 但没有用。我认为在 Python 中创建 SAR RGB 图像相对容易(因为我已经看过一些关于创建 LANDSAT 的 RGB 图像的帖子),但我陷入了困境。

我将不胜感激。

【问题讨论】:

    标签: python opencv numpy image-processing tiff


    【解决方案1】:

    这是一种以编程方式完成乐队组合的可能方法:

    import numpy as np
    
    tif = io.imread('dual_polarization_image.tif')
    
    band = {'HH': 0, 'HV': 1}
    
    r = tif[:, :, band['HH']]
    g = tif[:, :, band['HV']]
    
    hh = r.astype(np.float64)
    hv = g.astype(np.float64)
    
    b = np.divide(hh, hv, out=np.zeros_like(hh), where=hv!=0)
    
    rgb = np.dstack((r, g, b.astype(np.uint16)))
    

    备注:

    • 可以通过简单地重新定义字典 ​​band 的值来处理 TIFF 图像中波段的不同排列。
    • 需要在计算频带比之前将数据转换为np.float64
    • 我利用universal functionswhere 选项来避免零除警告。
    • 为了使合成成为可能,必须将波段比率(蓝色通道)转换回与原始波段(红色和绿色通道)相同的类型(即np.uint16)。

    【讨论】:

    • 太棒了。很好的答案。谢谢
    【解决方案2】:

    如果没有示例图像,很难进行测试,但您应该可以在命令行中使用 ImageMagick 进行测试,该工具包含在大多数 Linux 发行版中,可用于 OSX 和 Windows。

    命令将如下所示:

    convert HH.tif HV.tif \( -clone 0 -clone 1 -compose divide -composite \) \
       -combine -auto-level result.png
    

    【讨论】:

    • 感谢您的建议。我很感激
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    • 2020-01-03
    • 1970-01-01
    相关资源
    最近更新 更多