3
我使用numpy的屏蔽數組執行一些圖像處理。掩模就位處理其包圍圖像(必要邊界,因爲這些都是與在無數據的像素原點地圖投影圖像)無數據像素。numpy.interp&掩蔽陣列
使用下面的代碼塊,我能夠對圖像執行高斯拉伸。
def gaussian_stretch(input_array, array_mean, array_standard_deviation, number_of_bins, n):
shape = input_array.shape
input_array = input_array.flatten()
#define a gaussian distribution, get binned GDF histogram
array_standard_deviation *= n
gdf = numpy.random.normal(array_mean, array_standard_deviation, 10000)
hist, bins = numpy.histogram(gdf, number_of_bins, normed=True)
cdf = hist.cumsum()
cdf = 256 * cdf/cdf[-1]
#interpolate and reshape
input_array = numpy.interp(input_array,bins[:-1],cdf)
input_array = input_array.reshape(shape)
return input_array
如果圖像不包含NoData邊框,則伸展按預期工作。在具有蒙版的圖像上,蒙版被忽略。這是預期的行爲?關於如何處理未屏蔽數據的任何想法?
我已經使用input_array.compressed()嘗試,但是這僅返回未掩蔽的值的一維數組。正如所料,使用numpy.interp會失敗,因爲數組之間的大小不一致。
最後,據我所知,使用numpy.random.normal不會總是返回一個完美的高斯分佈,一旦算法的其餘部分是否正常工作,我將添加錯誤約束上的一些餘量。