This is a quick project I’ve had in my mind for a while now. I’ve drawing and painting on and off for about a decade now. My style and preferences have changed quite a bit over the years. I’ve often wondered if I have a “style” per se? I definitely love to try a bunch of different mediums and will never have a color coordinated Instagram grid. So, I was curious if I could take a look at the illustrations I’ve done over the last year and see what the colors look like and if I can use any machine learning techniques to find my “average palette.”

There are a few ways to go about this, but the general idea is that we first want to find a way to feed our method an image and it tells out of all colors in a picture which are the most prominent. For this particular example, we’ll be using an algorithm called K-Means. The general idea of this model is that it tries to group data points based on how similar they are to each other. We tell the model to arbitrarily pick K number of clusters, it’ll then find centroid for each cluster and try to assign data points to each one.

I’ll be using the OpenCV to read the images and scikit-learn for the K-Means method. I won’t be going over how to pick the correct number of K, you can search up the elbow method on your own time.

```
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
import PIL
from sklearn.cluster import KMeans
import matplotlib as mpl
mpl.rcParams['figure.dpi']= 300

dim = (400, 600)
img = cv.cvtColor(img, cv.COLOR_BGR2RGB)
# resize image
img = cv.resize(img, dim, interpolation = cv.INTER_AREA)
return img

```

Note that I am resizing all my images as they all must be the same size. Now, we can call our K-Means method and fit our model.

```
kmeans = KMeans(n_clusters=6)
img_fit = kmeans.fit(img_1.reshape(-1,3)) #reshape to 3 columns, RGB values
colors_img = img_fit.cluster_centers_

```

Note that we need to reshape the data to 3 columns for us to get the proper format for RGB values. The .cluster_centers_ method will then give us the cluster center (average value of color group) post model fitting.

See below a couple examples of the illustration and the average color groups corresponding to it. Swipe left and right to see color comparisons.

﻿

I repeated this exercise for about 30 different illustrations and then found the cluster of clusters. And this is the palette it came up with!

I mean, based on the examples above and looking into the colors I gravitate to… there are a lot of pinks and greens and bright colors, so I dig it?

###### Posted by:Aisha Pectyo

Astrophysicist turned data rockstar who speaks code and has enough yarn and mod podge to survive a zombie apocalypse.