2014-05-06 59 views
2

我有2個圖像。 Image_1的分辨率爲250米,image_2的分辨率爲500米。這些圖像具有完全相同的空間內容和投影。從粗柵格提取圖像像素值

我該如何疊加這兩個圖像,以便對於image_1中的每個像素,我可以從圖像2中提取像素值?我嘗試了gdal reprojectimage(reproject image 2),但它使用插值重新採樣。這對我不起作用,因爲重採樣會改變image_2中的像素值。有沒有任何有效的方法來做到這一點? Scipy,numpy或者其他類似的工具會很棒。

+0

我真的不明白想要做的完全一樣。如果你只是想讓image_2中的其他像素出現,那麼image_2 [:: 2,:: 2]會爲你做。 (每個維度都可以用(start:stop:skip)給出一個片段,所以如果你做了「:: 2」,這意味着沒有特殊的值用於Start Start for Stop,但跳過2 - >跳過其他所有像素)I有一種感覺,但這不是你要求的,對吧? – Magellan88

回答

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.]])