Google Earth Engine:如何使用随机值逐个像素地执行图像计算?
Google Earth Engine: How can I perform image calculations with random values pixel by pixel?
我想对 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')});
我还尝试使用以下生成 "probabilistic" 图像来执行我的计算但是,由于我在同一个栅格中有多个 类,"event" 的概率不太对。
试用 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);
您可以使用 ee.Image.random() 为每个像素生成一个随机值。
也就是说,Earth Engine 的其余部分并不像您尝试使用的那样工作。所有图像函数都是"vectorized";你永远不会去上班 "pixel by pixel".
我想对 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')});
我还尝试使用以下生成 "probabilistic" 图像来执行我的计算但是,由于我在同一个栅格中有多个 类,"event" 的概率不太对。
试用 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);
您可以使用 ee.Image.random() 为每个像素生成一个随机值。
也就是说,Earth Engine 的其余部分并不像您尝试使用的那样工作。所有图像函数都是"vectorized";你永远不会去上班 "pixel by pixel".