Ga naar hoofdinhoud
BVDART Logo

Euclidische RGB-afstand

Euclidische RGB-afstand behandelt een kleur als een driedimensionale kanaalvector en meet de rechte afstand tussen twee vectoren.

Bouw een driedimensionale afstand kanaal voor kanaal op.

RGB-kubus met rechte afstand en drie kanaalveranderingenABRGB
A
B
ΔR 125 · ΔG -8 · ΔB -38√(125² + -8² + -38²)130.89

De gestreepte diagonaal is de vectorlengte; de gekleurde route splitst deze in kanalen. Dit zijn gecodeerde 8-bitscoördinaten. Gelijke afstanden kunnen er anders uitzien.

Telkens beweegt één RGB-kanaal: de gekleurde zijden krimpen tot A en B samenvallen en groeien weer aan. Gebruik een regelaar om het over te nemen.

Wat je kunt proberen
  1. Kies Anker A en verplaats Punt B · R terwijl groen en blauw vast blijven.
  2. Verander de andere twee kanalen en vergelijk de gekleurde kanaalroute met de gestreepte diagonaal.
Open in het Lab ↗

Waar je op kunt letten: De diagonaal meet de wortel van de som van gekwadrateerde kanaalveranderingen. Dit is een coördinaatafstand in gecodeerd RGB, geen visueel percentage.

Zo werkt het

Trek overeenkomstige kanaalwaarden van elkaar af, kwadrateer de verschillen, tel ze op en neem de wortel. Bij achtbits kanalen is zwart naar wit √(3 × 255²), ongeveer 441,67. Gelijke triplets hebben afstand nul.

Dit werkt voor exacte coördinaatvergelijkingen en eenvoudige palettoewijzing. Elk gecodeerd kanaal weegt even zwaar. Het oog reageert niet even sterk op die kanaalverschillen en gecodeerd sRGB is niet evenredig met licht.

Gebruik het in het Lab

RGB-afstand is eenvoudig te begrijpen voor paletten en toleranties. Gebruik voor zichtbare gelijkenis ook een geschikte perceptuele maat en houd rekening met kijkomstandigheden.

Grenzen & verschillen

ΔRGB is geen percentage en geen vaste drempel voor een net waarneembaar kleurverschil.

Verdieping

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:

Euclidische RGB-afstand

d = √((R₂ − R₁)² + (G₂ − G₁)² + (B₂ − B₁)²) Het resultaat loopt van 0 (identieke kleuren) tot √(255² + 255² + 255²) ≈ 441,67 (zwart versus wit — de maximaal mogelijke 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.ts
/** 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)
}
typescript

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.

Waarom RGB-afstand hier genoeg is

Voor palette-extractie uit artwork is pixel-perfecte nauwkeurigheid belangrijker dan perceptuele uniformiteit. De kleuren in het bronbestand ZIJN het definitieve palet — RGB-afstand wordt alleen gebruikt om bijna-identieke tinten te groeperen in afbeeldingen met een hoog aantal kleuren, waar een eenvoudige drempel volstaat. Perceptuele metriek komt tot zijn recht bij het kiezen van de beste vervanger in een beperkt palet (zoals het terugbrengen van 16 miljoen kleuren naar 256), wat het domein is van colour quantization.

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.

Verwante Lab-categorieën

Bronnen & naslag

Gids bijgewerkt