Mam szereg zdjęć satelitarnych (5 pasm) i chcę je sklasyfikować według kmeanów w R. Mój skrypt działa dobrze (przeglądaj moje obrazy, konwertuj obrazy na data.frame, grupuj je i konwertuj z powrotem na 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)
}
Mój problem brzmi: nie mogę porównać wyników klasyfikacji, ponieważ przypisania klastra różnią się między obrazami. Na przykład „woda” znajduje się w pierwszym klastrze obrazów nr 1, w kolejnych 2 i w trzeciej 10, co uniemożliwia porównanie wyników dotyczących wody między datami.
Jak mogę naprawić przypisanie klastra?
Czy mogę określić stały punkt początkowy dla wszystkich obrazów (mając nadzieję, że woda jest zawsze wykrywana jako pierwsza, a zatem klasyfikowana jako 1)?
A jeśli tak, to w jaki sposób?