У меня есть временной ряд спутниковых изображений (5 полос), и я хочу классифицировать их по kmeans в R. Мой скрипт работает нормально (просматривайте мои изображения, конвертируйте изображения в data.frame, группируйте их и конвертируйте обратно в растр):
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)
}
Моя проблема в том, что я не могу сравнить результаты классификации друг с другом, потому что назначение кластера отличается от изображения к изображению. Например, «вода» находится в первом кластере изображений № 1, в следующих 2 и в третьем 10, что делает невозможным сравнение результатов по воде между датами.
Как я могу исправить назначение кластера?
Могу ли я указать фиксированную начальную точку для всего изображения (надеясь, что вода всегда обнаруживается первой и, таким образом, классифицируется как 1)?
И если да, то как?