PROJECT DOSSIER // [IMAGE COMPRESSOR]VIEW SOURCEBACK TO PROJECTS →

01 // PROJECT AT A GLANCE

IMAGE COMPRESSOR

Haskell

Reducing an image to a few dominant colours, through unsupervised learning.

How do you choose the sixteen colours that best represent a photograph containing thousands? The project applies the k-means algorithm, a classic machine learning technique: you start from randomly chosen colours, group each pixel around the nearest one, recompute each group's centre, and start again until things stabilise.

A Haskell implementation of the k-means algorithm applied to an image's colours, with configurable convergence criterion and number of clusters.

PRIMARYHaskell
DELIVERYTEAM RECORD
VERIFICATIONstack (via make)
SOURCEINSPECTOR READY
MEDIA ATTACHMENTS (Images, Photos, Videos)

03 // KEY OUTCOMES

  • An unsupervised learning algorithm implemented with no mutation at all
  • Convergence made explicit through recursive state passing
  • The k initial centres drawn without duplicates from the image's pixels

04 // SOURCE TREE

READING SOURCE…