之前的基于对象分类提到了图像分割,但当时没太搞懂
放代码:
var inputsSNIC={image:image,size:20,compactness:1,neighborhoodSize:null}
var seg1=ee.Algorithms.Image.Segmentation.SNIC(inputsSNIC);
var seg2=ee.Algorithms.Image.Segmentation.SNIC(inputsSNIC).reproject(image.select(0).projection(),null,10);
print(seg1)
Map.addLayer(seg1.select(0),{},'without reproject')
Map.addLayer(seg2.select(0),{},'with reproject')
print(Map.getScale())
这是论坛大神贴的代码,图像分割后的斑块大小会随着地图放缩而改变,因此需要reproject操作来固定我们想要的大小。
SNIC算法介绍:
只找到一个介绍SLIC的,但我觉得两个应该差不多——https://blog.csdn.net/ns708865818/article/details/49004035,和K-means聚类算法比较像,其中各参数的意义是compactness值越大,分成的块越接近正方形。size越大,种子点(聚类中心)分布越分散,分成的块越大。neighborhoodSize表示聚类中心周围的搜索空间。reproject函数表示重投影,里面的参数是投影,投影需要的参数,输出分辨率。
分割大致效果: