我想修改一个tif图像的前100帧,它是通过spark和thunder加载的。
我想将percentile_image分配给前100帧。
data = td.images.fromtif(path,'tif',None,None,False,1,10,None,sc,None).cache()
downSampledImage = data.subsample(2)
percentile_image = np.int16(np.percentile(downSampledImage[0:99, :, :], 40, 0))
我无法弄清楚如何只使用一小部分地图功能。
答案 0 :(得分:0)
好的,我对RDD中的图像并不是很熟悉。但是,我将解释一些有关RDD的概念性内容,这些内容可能有助于您了解如何解决问题。
RDD除非已排序,否则没有固有排序。将某些东西放入并行化的分布式数据结构后,就没有“第一个”100个图像或“最后”图像。是的,你可以调用data.first()
,但实际上它只是转到它拥有的第一个分区,找到它找到的第一行,并将其发送给驱动程序。 first
有点误导。它更像random
。
在RDD上执行操作时,使用map
。 map
将应用于每一行。现在,您可以使用if-else
语句来确保您想要涉及百分位数的转换仅适用于某组100行。所以你可以做到
如果(行)符合(条件): np.int16(np.percentile(downSampledImage [0:99,:,:],40,0))
但是,这要求前100行符合某些条件,以便您可以将它们标记为相关。