Ho una serie temporale di immagini satellitari (5 bande) e desidero classificarle in base ai kmean in R. La mia sceneggiatura funziona bene (passa in rassegna le mie immagini, converte le immagini in data.frame, raggruppale e riconvertile in un raster):
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)
}
Il mio problema è: non riesco a confrontare i risultati della classificazione tra loro perché gli assegnatori di cluster differiscono da immagine a immagine. Ad esempio, "acqua" si trova nel primo cluster di immagini numero 1, nei successivi 2 e nei terzi 10, rendendo impossibile confrontare i risultati dell'acqua tra le date.
Come posso risolvere l'assegnazione del cluster?
Posso specificare un punto di partenza fisso per tutte le immagini (sperando che l'acqua venga sempre rilevata per prima e quindi classificata come 1)?
E se sì, come?