library(OpenImageR) # Exportar imagenes y manejo de estas
library(ClusterR)

Primera imagen

imagename <- "C:/Users/Personal/Desktop/Universidad y Estudios/Rstudio/RPUBS/PUBLICACIONES/Cluster/foto-descolorida.jpg"

img=readImage(imagename)
imageShow(img)

img.vector <- apply(img, 3, as.vector) #vector de 3 en 3

kmmb<-MiniBatchKmeans(img.vector, clusters = 64, # Número de cluster se puede ver como la cantidad de colores diferentes encontrados en una foto
                      batch_size = 200, # Número de lotes
                      num_init = 10, # Maximo de iteraciones de cluster
                      max_iters = 1000, # Numero de veces que el algoritmo correrá con diferentes centroides
                      init_fraction = 0.2, # Porcentaje de los datos que el algoritmo usará para el calculo inicial de los centroides
                      initializer = "kmeans++", # Metodo de inicialización
                      early_stop_iter = 10, # continúe con 10  iteraciones después del cálculo del menor resultado de la suma de cuadrados del error dentro del grupo.
                      verbose = F) # No se imprima el progreso durante el clsutering
prmb <- predict_MBatchKMeans(img.vector, kmmb$centroids)
# Añade a la imagen los centroides que el algoritmo ha predicho

get.cent.mb <- kmmb$centroids
new.img <- get.cent.mb[prmb,] # nueva imagen en función a los valores predichos
dim(new.img) <- c(nrow(img), ncol(img),3) # Redimensionar la nueva imagen con el numero de filas y columnas de la imagen original de 3 en 3
imageShow(new.img)

Segunda imagen

imagename2 <- "C:/Users/Personal/Desktop/Universidad y Estudios/Rstudio/RPUBS/PUBLICACIONES/Cluster/foto-descolorida2.jpg"
img2=readImage(imagename2)
imageShow(img2)

img.vector <- apply(img2, 3, as.vector) #vector de 3 en 3

kmmb<-MiniBatchKmeans(img.vector, clusters = 64, # Número de cluster se puede ver como la cantidad de colores diferentes encontrados en una foto
                      batch_size = 200, num_init = 10,
                      max_iters = 1000, init_fraction = 0.2,
                      initializer = "kmeans++",
                      early_stop_iter = 10, verbose = F)
prmb <- predict_MBatchKMeans(img.vector, kmmb$centroids)

get.cent.mb <- kmmb$centroids
new.img <- get.cent.mb[prmb,]
dim(new.img) <- c(nrow(img2), ncol(img2),3)
imageShow(new.img)