我正在尝试制作一个遍历所有数组并使用25x25像素的搜索窗口的新栅格。我想知道您是否知道更好的方法,因为使用我的方法会花费太多时间。
import sys
import os
import numpy as np
import math
from osgeo import gdal, osr, gdal_array, gdalnumeric
from osgeo.gdalnumeric import *
numpy.warnings.filterwarnings('ignore')
def mean_neighbors(M,x,y,w=1):
l = []
for i in range(max(0,x-w), x+(w+1)):
for j in range(max(0,y-w), y+(w+1)):
try:
t = M[i][j]
l.append(t)
except IndexError:
pass
return np.mean(l)
raster_file = gdal.Open('image.tif', gdal.GA_ReadOnly)
rst = gdalnumeric.BandReadAsArray(raster_file.GetRasterBand(1))
cob = np.zeros(rst.shape)
for i in range(rst.shape[0]):
for j in range(rst.shape[1]):
cob[i][j] = mean_neighbors(rst, i, j, 25) # want to optimize this function
答案 0 :(得分:-1)
移动窗口均值是非常常见的功能,您无需自己编写。您可以使用以下两种快速实现: