You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1.1 MiB
1.1 MiB
<html>
<head>
</head>
</html>
K Means Color Quantization¶
Imports¶
In [3]:
import numpy as np
import matplotlib.image as mpimg
import matplotlib.pyplot as plt
The Image¶
In [6]:
image_as_array = mpimg.imread('../DATA/palm_trees.jpg')
In [8]:
image_as_array # RGB CODES FOR EACH PIXEL
Out[8]:
In [12]:
plt.figure(figsize=(6,6),dpi=200)
plt.imshow(image_as_array)
Out[12]:
Using Kmeans to Quantize Colors¶
Quantizing colors means we'll reduce the number of unique colors here to K unique colors. Let's try just 6 colors!
In [42]:
image_as_array.shape
# (w,h,3 color channels)
Out[42]:
Convert from 3d to 2d¶
Kmeans is designed to train on 2D data (data rows and feature columns), so we can reshape the above strip by using (w,h,c) ---> (w * h,c)
In [43]:
(w,h,c) = image_as_array.shape
In [44]:
image_as_array2d = image_as_array.reshape(w*h,c)
In [45]:
from sklearn.cluster import KMeans
In [46]:
model = KMeans(n_clusters=6)
In [47]:
model
Out[47]:
In [62]:
labels = model.fit_predict(image_as_array2d)
In [63]:
labels
Out[63]:
In [73]:
# THESE ARE THE 6 RGB COLOR CODES!
model.cluster_centers_
Out[73]:
In [74]:
rgb_codes = model.cluster_centers_.round(0).astype(int)
In [75]:
rgb_codes
Out[75]:
In [76]:
quantized_image = np.reshape(rgb_codes[labels], (w, h, c))
In [77]:
quantized_image
Out[77]:
In [79]:
plt.figure(figsize=(6,6),dpi=200)
plt.imshow(quantized_image)
Out[79]:
In [ ]: