Kleurkwantisatie: Van Miljoenen naar Tientallen Kleuren
De kernuitdaging
Een 24‑bit RGB‑afbeelding kan tot 16.777.216 unieke kleuren bevatten. Maar in veel artistieke en technische contexten is veel minder nodig: 256 voor GIF, 16 voor klassieke pixel art, soms slechts 2 voor monochrome prints. Color quantization is de wetenschap — én kunst — van het kiezen welke handvol kleuren al die 16,7 miljoen mogelijkheden het best vertegenwoordigt.
De naïeve aanpak om de RGB‑kubus gelijkmatig in vakjes te verdelen levert rampzalige resultaten op. De meeste afbeeldingen gebruiken maar een klein deel van de volledige kleurruimte, waardoor een uniforme verdeling paletslots verspilt aan kleuren die in de afbeelding helemaal niet voorkomen.
Median Cut: delen en heersen
Paul Heckberts Median Cut‑algoritme (1982) kiest een ruimtelijke benadering. Het behandelt elke pixel als een punt in 3D‑RGB‑ruimte en splitst vervolgens herhaaldelijk de puntenwolk langs zijn langste as op de mediaan. Nansplitsingen heb je 2ⁿclusters. De gemiddelde kleur van elk cluster wordt een paletkleur.
Median Cut is elegant omdat het zich vanzelf aanpast aan de afbeelding. Een zonsondergangsfoto, gedomineerd door rood- en oranjetinten, zal de meeste paletkleuren toewijzen aan warme tinten — precies waar het detail belangrijk is. De blauwe lucht krijgt minder entries omdat die veel gelijkmatiger is.
Vergelijk median-cut en populariteit terwijl je de paletgrootte verandert. De voorbeelden tonen de gekozen kleuren en hun aandeel.
Probeer het zelf
- Vergelijk populariteit en median cut met hetzelfde kleurenbudget.
- Vergroot de oranje bloem en bekijk haar pixelaandeel en gekozen vertegenwoordiger.
Let op: Frequentie en representatie zijn verschillende doelen. Vergelijkbare achtergrondkleuren kunnen een klein accent verdringen, terwijl groepsgemiddelden een nieuwe kleur kunnen maken.
K‑means clustering
K-Means pakt het probleem iteratief aan. Begin met k willekeurige "centroids" in RGB-ruimte. Wijs elke pixel toe aan het dichtstbijzijnde centroid (met Euclidische afstand). Herbereken elk centroid als het gemiddelde van de eraan toegewezen pixels. Herhaal dit tot er convergentie optreedt.
K-Means vindt vaak betere paletten dan Median Cut omdat het globaal optimaliseert, maar het is trager en gevoelig voor de initiële startwaarden. In de praktijk geeft een combinatie van Median Cut-initialisatie met K-Means-verfijning de beste resultaten — de snelheid van divide-and-conquer met de finesse van iteratieve optimalisatie.
Wissel het toewijzen van punten en het verplaatsen van middelpunten af en bekijk de kwadratische fout. Dit is de Lloyd-iteratie achter K-means.
Probeer het zelf
- Verplaats vertegenwoordigers naar hun groepsgemiddelden en wijs de monsters daarna opnieuw toe.
- Kies een vertegenwoordiger en verplaats zijn R- of G-coördinaat voor een ander beginpunt.
Let op: Elke Lloyd-stap behoudt of verlaagt de gekwadrateerde fout. Na een gemiddelde-update kunnen bewaarde lijnen tijdelijk afwijken van de nieuwe dichtstbijzijnde-centrumregio’s.
Het afstandsprobleem
Elk kwantisatie-algoritme is afhankelijk van het meten van afstand tussen kleuren. De naïeve Euclidische afstand in RGB-ruimte behandelt rood, groen en blauw als even belangrijk, maar zo werkt menselijk zicht niet. We zijn veel gevoeliger voor veranderingen in groen (luminantie) dan in blauw.
Betere kwantisatie gebruikt perceptuele afstands-maten — werken in CIELAB-ruimte waar Euclidische afstand de perceptuele verschillen benadert, of luminantie-wegingsfactoren toepassen op RGB-afstanden. Deze ene aanpassing kan de kwaliteit van een palet drastisch verbeteren zonder het algoritme zelf te veranderen.
Octree-kwantisatie
Voor real-time toepassingen bouwt de octree methode een boomstructuur die de RGB-kubus recursief opdeelt in acht octanten. Bladknopen verzamelen pixel-aantallen, en de boom wordt van onder naar boven gesnoeid — waarbij de minst gevulde knopen als eerste worden samengevoegd — totdat de gewenste paletgrootte is bereikt.
Octrees zijn geheugenefficiënt en kunnen in één enkele pass over de afbeelding worden opgebouwd. Het is het voorkeursalgoritme voor veel praktische implementaties, waaronder de GIF-weergave in vroege webbrowsers.
Kwantisatie in de praktijk
In het Lab vergelijkt Geïndexeerd palet median-cut, populariteits- en uniforme kwantisatie. Genereer of importeer een afbeelding, kies 4, 8, 16 of 32 kleuren en bekijk welke gebieden detail verliezen. De studie over vectorkwantisatie demonstreert afzonderlijk de toewijzings- en zwaartepuntstappen van K-means; K-means en octree zijn geen selecteerbare Lab-kwantisatiemethoden.
Gecombineerd met dithering kan zelfs een 16-kleurenpalet fotografische details reproduceren. Het kwantisatie-algoritme kiest welke 16 kleuren; het dithering-algoritme bepaalt hoe ze worden gerangschikt. Samen veranderen ze strikte beperkingen in creatieve mogelijkheden.
Gerelateerde concepten
Gerelateerde artikelen
Dithering: illusies creëren met wiskunde
Als je maar een handvol kleuren hebt, kan slimme pixelplaatsing het oog laten denken dat het er duizenden zijn. Een deep dive in error-diffusion dithering en de algoritmes achter deze illusie.
10 feb 2026
De schoonheid van beperkte paletten
Waarom het beperken van kleuren tot 8, 16 of 32 vaak tot boeiendere kunst leidt dan miljoenen kleuren ooit kunnen.
16 feb 2026
Verken gerelateerde secties
Meer over het werk:
