k-means


Alabama Hills, CA original
Before
Alabama Hills, CA clustered with k=2
After (k=2)

This project explores the k-means clustering algorithm by compressing an image’s colours into k representative clusters. Each pixel is assigned to its nearest cluster centre and the image is reconstructed using only those k colours, producing painterly posterisation effects.

How k-means works

The algorithm first picks k random centroids from the data (here, pixel colours), and then iterates over two simple steps until convergence:

  • Assignment: assign each point to the nearest centroid.
  • Update: recompute each centroid as the mean of its assigned points.
Example 2D data for k-means
Example 2D dataset.
Initial random centroids
Initial random centroids for k=2.

Results

Yellowstone

Yellowstone original
Before
Yellowstone clustered with k=2
After (k=2)
Yellowstone clustered with k=4
After (k=4)
Yellowstone clustered with k=16
After (k=16)

Blue Mountains #1

Blue Mountains original
Before
Blue Mountains clustered with k=2
After (k=3)
Blue Mountains clustered with k=4
After (k=5)
Blue Mountains clustered with k=16
After (k=8)

Blue Mountains #2

Blue Mountains 2 original
Before
Blue Mountains 2 clustered with k=2
After (k=2)
Blue Mountains 2 clustered with k=3
After (k=3)
Blue Mountains 2 clustered with k=7
After (k=7)

Blue Mountains #3

Blue Mountains 3 original
Before
Blue Mountains 3 clustered with k=2
After (k=2)
Blue Mountains 3 clustered with k=6
After (k=6)
Blue Mountains 3 clustered with k=8
After (k=8)

Fjadrargljufur

Fjadrargljufur original
Before
Fjadrargljufur clustered with k=2
After (k=2)
Fjadrargljufur clustered with k=3
After (k=3)
Fjadrargljufur clustered with k=12
After (k=12)

Papercourt

Papercourt original
Before
Papercourt clustered with k=2
After (k=2)
Papercourt clustered with k=5
After (k=5)
Papercourt clustered with k=8
After (k=8)