Eu tenho uma série temporal de imagens de satélite (5 bandas) e quero classificá-las por kmeans em R. Meu script está funcionando bem (faça um loop pelas minhas imagens, converta as imagens em data.frame, agrupe-as e converta-as novamente em varredura):
for (n in files) {
image <- stack(n)
image <- clip(image,subset)
###classify raster
image.df <- as.data.frame(image)
cluster.image <- kmeans(na.omit(image.df), 10, iter.max = 10, nstart = 25) ### kmeans, with 10 clusters
#add back NAs using the NAs in band 1 (identic NA positions in all bands), see http://stackoverflow.com/questions/12006366/add-back-nas-after-removing-them/12006502#12006502
image.df.factor <- rep(NA, length(image.df[,1]))
image.df.factor[!is.na(image.df[,1])] <- cluster.image$cluster
#create raster output
clusters <- raster(image) ## create an empty raster with same extent than "image"
clusters <- setValues(clusters, image.df.factor) ## fill the empty raster with the class results
plot(clusters)
}
Meu problema é: não consigo comparar os resultados da classificação entre si, porque os responsáveis pelo cluster diferem de imagem para imagem. Por exemplo, "água" está no primeiro cluster de imagens número 1, nos próximos 2 e nos terceiros 10, tornando impossível comparar os resultados da água entre as datas.
Como posso corrigir a atribuição de cluster?
Posso especificar um ponto de partida fixo para toda a imagem (esperando que a água seja sempre detectada primeiro e, portanto, classificada como 1)?
E se sim, como?