Karl Ove Hufthammer

Kantutjamning

Teikningar og tekst på datamaskiner vert lett «kantete» og stygge, grunna låg oppløysing. Løysinga er kantutjamning. Her er ei kort forklaring på korleis dette fungerer.

Bilde på datamaskiner er ikkje bygd opp som bilde på for eksempel papir; dei er mykje meir grovkorna. Eit skjermbilde består nemlig av eit stort rutenett med ørsmå ruter eller bildepunkt, som me kallar pikslar:

[Del av eit skjermbilde: Eit rutenett med kvit bakgrunn og størrelse på fire gongar fire pikslar, forstørra opp.]

Dette medfører eit problem når me skal teikna noko som ikkje passar akkurat inn i rutene, for eksempel ein strek som går på skrå:

[Same rutenett som før, men no med ein svart strek som dekker nokre ruter (pikslar) berre delvis.]

Her finst fleire løysingar. Me kan for eksempel velja å berre teikna dei pikslane som vert dekka 100 % av streken:

[Same rutenett og strek som før, men berre dei rutene som streken fylte heilt er no fargelagt.]

Men denne løysinga er ikkje serlig god. Sjølv om streken dekka 98 % av ei ruta (rute tre frå venstre i øvste linja), vert denne ruta no vist heilt kvit. Teknikken vil føra til ein veldig hakkete og stygg strek. Ei betre løysing kan derfor vera å fargelegga ruta/pikselen svart i dei tilfella streken dekker minst 50 %:

[Same rutenett og strek som før, og dei rutene som streken fylte minst 50 % er no fargelagt.]

Men me kan faktisk vera endå smartare. Skjermen kan nemlig visa andre fargar enn berre svart og kvitt. Sjå no på piksel to frå toppen og frå venstre. Omtrent 40 % av han er fylt med den svarte streken, og ei løysing kan derfor vera å teikna han med ein piksel som består av 40 % svart og 60 % kvitt, altso lysegrå. Tilsvarande for dei andre pikslane:

[Same rutenett og strek som før, men rutene som streken ikkje dekka heilt er fylt med gråtonar.]

Dette kallast kantutjamning (på engelsk «antialiasing», som eigentlig er eit litt vidare omgrep), og det viser seg å gjeva eit svært godt resultat. Me klarar å etterlikna ei høgare oppløysing – eit meir finmaska rutenett – ved å ta i bruk gråtonar. I praksis vert dette gjerne gjort ved å rekna ut korleis streken ville sett ut viss me hadde for eksempel fire gongar so høg skjermoppløysing (dobbelt so mange pikslar i breidda og i høgda). Kvar skjermpiksel består då av fire tenkte «delpikslar», og 0, 1, 2, 3 eller 4 av desse vil vera fylte. Me får altso ei kantutjamning med fire forskjellige mulige gråtonar (heilt kvitt, 25 % svart, 50 % svart, 75 % svart og heilt svart). Slik ser ein strek med og utan kantutjamning ut (strekane til høgre er dei same, forstørra opp 16 gongar):

[Fire skrå strekar, der to er med, og to er utan, kantutjamning.]

Tilsvarande vil sjølvsagt gjelda for meir kompliserte figurar, der me har fleire fargar enn berre svart og kvitt:

[Bildet viser to teikningar av Pacman, der eitt er teikna med, og eitt er teikna utan, kantutjamning.]

Det finst òg meir avanserte former for kantutjamning, der ein for eksempel tar omsyn til den fysiske utforming av kvar skjermpiksel (hovudsaklig for flatskjermar).

Behovet for kantutjamning har for øvrig minka opp gjennom åra, iallfall i teorien, ved at skjermoppløysingane har blitt høgare (maskegraden finare). Skjermoppløysingar i våre dagar har gjerne 20 gongar so mange pikslar som vanlige skjermoppløysingar på begynnelsen av 90-talet. (Samtidig har skjermane blitt større, men alt i alt er det ein gevinst på pikslar per kvadratcentimeter skjermflata.) På den tida var det veldig lett å kjenna igjen «datagrafikk», då det var einstydande med blokkete, kantete bilde, mens i våre dagar blir slike bilde mest brukt til å anonymisera mistenkte og vitner i straffesaker på bilde og fjernsynsopptak.

Likevel treng me framleis kantutjamning. Skjermoppløysingane brukt er langt frå so høge at me ikkje lett ser forskjell på skjerm og for eksempel profesjonell papirutskrift. Kantutjamning vil derfor framleis spela ei stor rolla, òg i framtida, ikkje minst for bilde på nettsider, og for vising av tekst på skjerm.

2 kommentarar

  1. Marius, det var ein veldig interessant artikkel, ja. Takk for tipset. Artikkelen min om skrifthinting kan kanskje tena som eit apropos, men er mykje mindre grundig (men med fine illustrasjonar).

    Fann forresten ein feil i artikkelen til Witherden. Han skriv at bytecode-hinting er slått av i FreeType som standard, på grunn av patentproblem. Det stemmer ikkje lenger. Patenten det er snakk om har no gått ut, og bytecode-hinting er slått på som standard, sidan juli i år.

Legg til kommentar

E-postadressa vert ikkje synleg for andre. Obligatoriske felt er merkte med *.