01 // PROJECT AT A GLANCE
IMAGE COMPRESSOR
HaskellReducing 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
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…