2

我想逐个像素地对 ee.Image 执行一些计算,但是,计算的结果必须服从概率高斯分布,因此某些像素将被修改,而其他像素则不会。我已经编写了一个概率函数,但我不知道如何将它应用于 GEE 中的每个像素。有没有办法做到这一点?

我已经尝试过类似下面的方法,但是每个像素都使用相同的随机数,这不是我想要的。

试验 1)

var result = img.where(img.lte(32 + Math.floor((Math.random() * 10) + 1)),1);

试验 2)

var result = img.expression(
    '(B1 > 32 + P) ? 1', {
    'P': Math.floor((Math.random() * 10) + 1),
    'B1': img.select('B1')});

试验 3)

var result = img.expression(
    'P > 10 ? 1', {
    'P': MyProbabilisticFunction(),
    'B1': img.select('B1')});

我还尝试使用以下内容生成“概率”图像来执行我的计算,但由于我在同一个栅格中有多个类,“事件”的概率不太正确。

试验 4)

var rd = ee.FeatureCollection.randomPoints(geometry,1000,Math.floor((Math.random() * 10) + 1));
var prob = rd.draw('000000',5,0).select('vis-red');
var result = img.where(prob.eq(0),1);
4

1 回答 1

2

您可以使用 ee.Image.random() 为每个像素生成一个随机值。

也就是说,Earth Engine 的其余部分无法按照您尝试使用它的方式工作。所有图像函数都是“矢量化的”;你永远不会“逐个像素”地工作。

于 2017-12-05T15:07:22.017 回答