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==