Wanneer een computer moet bepalen of twee kleurenvoldoende op elkaar lijken om samengevoegd te worden, of welke paletkleur debeste match is voor een bepaalde pixel, heeft hij een numerieke definitie van “nabijheid” nodig. Euclidische RGB-afstand biedt precies dat: de rechte-lijn-afstand tussen twee punten in een driedimensionale kleurkubus waarvan de assen Rood, Groen en Blauw zijn.
De formule
Gegeven twee kleurenA = (R₁, G₁, B₁) enB = (R₂, G₂, B₂), is de Euclidische afstand:
In de praktijk wordt vaak de kwadratische afstand gebruikt om de dure worteltrekking te vermijden, omdat de relatieve volgorde behouden blijft: alsd²(A,B) < d²(A,C) dan d(A,B) < d(A,C).
Implementatie
/** Euclidean distance between two RGB colours (0–441.67). */
function rgbDistance(r1: number, g1: number, b1: number,
r2: number, g2: number, b2: number): number {
const dr = r2 - r1
const dg = g2 - g1
const db = b2 - b1
return Math.sqrt(dr * dr + dg * dg + db * db)
}Deze site gebruikt Euclidische RGB-afstand in zijn pipeline voor kleurextractie uit kunstwerken. Wanneer een kunstwerk meer dan 256 unieke kleuren heeft (een RGB-type palet), groepeert de extractie vergelijkbare kleuren door te controleren of elke nieuwe kleur binnen een drempelafstand van een al bewaarde kleur valt. Kleuren die dichter bij elkaar liggen dan de drempel worden samengevoegd; kleuren die verder weg liggen worden nieuwe paletitems.
De kleurkubus visualiseren
Stel je een kubus voor waarbij de X-as Rood (0–255) is, de Y-as Groen en de Z-as Blauw. Zwart (0, 0, 0) staat in de oorsprong, Wit (255, 255, 255) in de verste hoek, en elke mogelijke 24-bit kleur bezet een uniek punt binnen de kubus. De rechte lijn tussen twee punten is de Euclidische afstand — de metriek die we gebruiken.
Beperkingen & alternatieven
RGB-afstand houdt geen rekening met hoe het menselijk oog kleur waarneemt. Onze ogen zijn gevoeliger voor groen dan voor blauw, wat betekent dat twee kleuren met dezelfde Euclidische afstand er voor ons heel verschillend uit kunnen zien, afhankelijk van welke kanalen afwijken. Meer perceptueel uniforme alternatieven zijn onder andere:
- Gewogen RGB — schaalt de kanalen op basis van de geschatte gevoeligheid van het oog (bijv. de Compuphase-formule gebruikt gewichten 2, 4, 3 voor R, G, B).
- CIE76 (ΔE*ab) — Euclidische afstand in de Lab-kleurruimte, die is ontworpen om perceptueel uniform te zijn.
- CIEDE2000 (ΔE00) — de huidige gouden standaard voor perceptueel kleurverschil, die de niet-uniformiteiten van Lab corrigeert.
Toepassingen in digitale kunst
Kleurafstand is fundamenteel voor veel technieken in algorithmic art:
- Colour quantization — een foto terugbrengen tot een beperkt palet door voor elke pixel de dichtstbijzijnde paletkleur te vinden.
- Dithering — de fout die wordt verspreid naar naburige pixels in Floyd-Steinberg-dithering is de RGB-afstand tussen de oorspronkelijke en de gequantizeerde kleur.
- Palette-extractie — het groeperen van ruwe pixelkleuren in een representatieve set door kleuren binnen een afstandsdrempel samen te voegen.
- Chroma keying — het verwijderen van een achtergrondkleur door alle pixels binnen een afstandsdrempel van de key-kleur als transparant te behandelen.
