Função para criar uma paleta de cores no R a partir de uma imagem.

Fonte: http://curso-r.com/blog/2017/04/22/2017-04-21-paleta-de-cores/

library(jpeg)
library(magrittr)
library(tibble)
library(dplyr)
criar_paleta <- function(img, num_cores){
  # transforma a imagem em uma matriz
  img_matrix <- apply(img, 3, as.numeric)
  # treina o algoritmo de k médias
  km <- kmeans(img_matrix, centers = num_cores)
  img_df <- tibble(
    r = img_matrix[,1], 
    g = img_matrix[,2], 
    b = img_matrix[,3],
    cluster = km$cluster
  )
  # calcula os centroides dos grupos
  centroides <- img_df %>%
    group_by(cluster) %>%
    summarise_all(mean)
  # transforma a cor em hexadecimal
  centroides <- centroides %>%
    mutate(cor = rgb(r, g, b))
  # vetor de cores
  sort(centroides$cor)
}
img <- readJPEG("leoni.jpg")
plot(as.raster(img))

paleta <- criar_paleta(img, 8)
exibir(paleta)

img <- readJPEG("aman.jpg")
plot(as.raster(img))

paleta <- criar_paleta(img, 8)
exibir(paleta)

img <- readJPEG("espadim.jpg")
plot(as.raster(img))

paleta <- criar_paleta(img, 8)
exibir(paleta)

img <- readJPEG("brasão.jpg")
plot(as.raster(img))

paleta <- criar_paleta(img, 8)
exibir(paleta)

img <- readJPEG("AMANp.jpg")
plot(as.raster(img))

paleta <- criar_paleta(img, 8)
exibir(paleta)

img <- readJPEG("aedb.jpg")
plot(as.raster(img))

paleta <- criar_paleta(img, 8)
exibir(paleta)

img <- readJPEG("unesp.jpg")
plot(as.raster(img))

paleta <- criar_paleta(img, 8)
exibir(paleta)

img <- readJPEG("dilma.jpg")
plot(as.raster(img))

paleta <- criar_paleta(img, 8)
exibir(paleta)

LS0tDQp0aXRsZTogIlBhbGV0YSBkZSBDb3JlcyBubyBSIg0KYXV0aG9yOiAiUHJvZiBEciBSb2JlcnRvIENhbXBvcyBMZW9uaSINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCiMgRnVuw6fDo28gcGFyYSBjcmlhciB1bWEgcGFsZXRhIGRlIGNvcmVzIG5vIFIgYSBwYXJ0aXIgZGUgdW1hIGltYWdlbS4NCj4gRm9udGU6IGh0dHA6Ly9jdXJzby1yLmNvbS9ibG9nLzIwMTcvMDQvMjIvMjAxNy0wNC0yMS1wYWxldGEtZGUtY29yZXMvDQoNCmBgYHtyfQ0KbGlicmFyeShqcGVnKQ0KbGlicmFyeShtYWdyaXR0cikNCmxpYnJhcnkodGliYmxlKQ0KbGlicmFyeShkcGx5cikNCg0KY3JpYXJfcGFsZXRhIDwtIGZ1bmN0aW9uKGltZywgbnVtX2NvcmVzKXsNCiAgIyB0cmFuc2Zvcm1hIGEgaW1hZ2VtIGVtIHVtYSBtYXRyaXoNCiAgaW1nX21hdHJpeCA8LSBhcHBseShpbWcsIDMsIGFzLm51bWVyaWMpDQogICMgdHJlaW5hIG8gYWxnb3JpdG1vIGRlIGsgbcOpZGlhcw0KICBrbSA8LSBrbWVhbnMoaW1nX21hdHJpeCwgY2VudGVycyA9IG51bV9jb3JlcykNCiAgaW1nX2RmIDwtIHRpYmJsZSgNCiAgICByID0gaW1nX21hdHJpeFssMV0sIA0KICAgIGcgPSBpbWdfbWF0cml4WywyXSwgDQogICAgYiA9IGltZ19tYXRyaXhbLDNdLA0KICAgIGNsdXN0ZXIgPSBrbSRjbHVzdGVyDQogICkNCiAgIyBjYWxjdWxhIG9zIGNlbnRyb2lkZXMgZG9zIGdydXBvcw0KICBjZW50cm9pZGVzIDwtIGltZ19kZiAlPiUNCiAgICBncm91cF9ieShjbHVzdGVyKSAlPiUNCiAgICBzdW1tYXJpc2VfYWxsKG1lYW4pDQogICMgdHJhbnNmb3JtYSBhIGNvciBlbSBoZXhhZGVjaW1hbA0KICBjZW50cm9pZGVzIDwtIGNlbnRyb2lkZXMgJT4lDQogICAgbXV0YXRlKGNvciA9IHJnYihyLCBnLCBiKSkNCiAgIyB2ZXRvciBkZSBjb3Jlcw0KICBzb3J0KGNlbnRyb2lkZXMkY29yKQ0KfQ0KDQppbWcgPC0gcmVhZEpQRUcoImxlb25pLmpwZyIpDQpwbG90KGFzLnJhc3RlcihpbWcpKQ0KcGFsZXRhIDwtIGNyaWFyX3BhbGV0YShpbWcsIDgpDQpleGliaXIocGFsZXRhKQ0KDQppbWcgPC0gcmVhZEpQRUcoImFtYW4uanBnIikNCnBsb3QoYXMucmFzdGVyKGltZykpDQpwYWxldGEgPC0gY3JpYXJfcGFsZXRhKGltZywgOCkNCmV4aWJpcihwYWxldGEpDQoNCmltZyA8LSByZWFkSlBFRygiZXNwYWRpbS5qcGciKQ0KcGxvdChhcy5yYXN0ZXIoaW1nKSkNCnBhbGV0YSA8LSBjcmlhcl9wYWxldGEoaW1nLCA4KQ0KZXhpYmlyKHBhbGV0YSkNCg0KaW1nIDwtIHJlYWRKUEVHKCJicmFzw6NvLmpwZyIpDQpwbG90KGFzLnJhc3RlcihpbWcpKQ0KcGFsZXRhIDwtIGNyaWFyX3BhbGV0YShpbWcsIDgpDQpleGliaXIocGFsZXRhKQ0KDQppbWcgPC0gcmVhZEpQRUcoIkFNQU5wLmpwZyIpDQpwbG90KGFzLnJhc3RlcihpbWcpKQ0KcGFsZXRhIDwtIGNyaWFyX3BhbGV0YShpbWcsIDgpDQpleGliaXIocGFsZXRhKQ0KDQoNCmltZyA8LSByZWFkSlBFRygiYWVkYi5qcGciKQ0KcGxvdChhcy5yYXN0ZXIoaW1nKSkNCnBhbGV0YSA8LSBjcmlhcl9wYWxldGEoaW1nLCA4KQ0KZXhpYmlyKHBhbGV0YSkNCg0KDQppbWcgPC0gcmVhZEpQRUcoInVuZXNwLmpwZyIpDQpwbG90KGFzLnJhc3RlcihpbWcpKQ0KcGFsZXRhIDwtIGNyaWFyX3BhbGV0YShpbWcsIDgpDQpleGliaXIocGFsZXRhKQ0KDQppbWcgPC0gcmVhZEpQRUcoImRpbG1hLmpwZyIpDQpwbG90KGFzLnJhc3RlcihpbWcpKQ0KcGFsZXRhIDwtIGNyaWFyX3BhbGV0YShpbWcsIDgpDQpleGliaXIocGFsZXRhKQ0KDQoNCg0KYGBgDQoNCg==