我是Python编程的新手,我需要你的帮助。在发布之前,我总是首先研究我的问题。
我有tiff格式的SAR双偏振图像(2 ^ 16灰度值)。在这个tiff图像中有两个波段。第一频带(HH_band)是水平偏振信道,第二频带(HV_band)是垂直偏振信道。我想创建一个RGB合成图像。为此,我需要按如下方式对两个通道进行分层堆叠:
我知道有很多人发布了类似于此的内容(自然色的RGB合成图像)。我尝试使用openCV库中的cv2.merge
或cv2.split
但是没有用。我认为在Python中创建一个SAR RGB图像相对容易(因为我已经看过一些关于创建LANDSAT RGB图像的文章),但我遇到了困难。
我非常感谢任何帮助。
答案 0 :(得分:3)
以下是以编程方式完成波段合成的可能方法:
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
。where
选项来避免零分割警告。np.uint16
)。答案 1 :(得分:1)
没有样本图像很难测试,但您应该只需在命令行中使用 ImageMagick 执行此操作,该命令行包含在大多数Linux发行版中,可用于OSX和Windows
命令如下:
convert HH.tif HV.tif \( -clone 0 -clone 1 -compose divide -composite \) \
-combine -auto-level result.png