Google地球引擎:如何逐像素地使用随机值执行图像计算?

时间:2017-04-08 22:21:22

标签: javascript random pixel raster google-earth-engine

我想逐个像素地对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);

1 个答案:

答案 0 :(得分:1)

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

尽管如此,地球引擎的其余部分并不像您尝试使用它那样工作。所有图像功能都是“矢量化”的;你永远不会“逐像素”地工作。