我有2张图片。 Image_1的分辨率为250米,image_2的分辨率为500米。这些图像具有完全相同的空间内容和投影。
如何叠加这两个图像,以便对于image_1中的每个像素,我可以从图像2中提取像素值?我尝试了gdal reprojectimage(重新投影图像2),但它确实重新采样插值。这对我不起作用,因为重新采样会改变image_2中的像素值。有没有有效的方法来做到这一点? Scipy,numpy或任何类似的工具都会很棒。
答案 0 :(得分:3)
您可以将重采样方法设置为最近邻居,这当然仍然是一种插值方式,但我认为结果正是您所追求的。如果使用gdalwarp,则可以输出到VRT,然后可以在Python中打开。
或者你也可以直接在Python中扩展数组,但只有在所有空间属性都相同的情况下才会有效。
可以像Numpy一样完成:
image2_250m = np.kron(image2_500m, np.ones((2,2)))
在两个维度上都将它扩展到2倍。如果你还有一个第三维包含你想要使用的带np.ones((1,2,2))
,它会将带/光谱尺寸缩放为1(例如什么也不做)。它仍然是最近邻插值的一种形式
例如:
In [1]: import numpy as np
In [2]: a = np.random.randint(0,100, (2,2))
In [3]: a
Out[3]:
array([[38, 85],
[99, 19]])
In [4]: a_hires = np.kron(a, np.ones((2,2)))
In [5]: a_hires
Out[5]:
array([[ 38., 38., 85., 85.],
[ 38., 38., 85., 85.],
[ 99., 99., 19., 19.],
[ 99., 99., 19., 19.]])