Digitala bilder och digital bildmanipulering

Nyckelord: Sampling, kvantisering, upplösning, geometriska operationer, fotometriska operationer, målning, filtrering
En fotografisk bild kan med viss rätt sägas ha mer eller mindre oändlig upplösning, i alla fall jämfört med digitala bilder. Det
finns ingen tydlig begränsning för detaljskärpan i en fotografisk bild, och inte heller någon tydlig gräns för hur små
skillnader i intensitet som kan återges. En digital bild däremot har begränsad upplösning både i rumsled och signalled. För
att överföra en analog bild till digital form utför man en så kallad sampling, där den kontinuerliga variationen i intensitet
över originalbildens yta läses av på diskreta punkter, och en kvantisering, så att intensiteten i varje uppmätt punkt representeras med ett binärt tal med ändlig precision, ofta med 8 binära bitar som kan representera 28=256 olika intensitetsnivåer.
Den rumsliga upplösningen kan kallas för geometrisk upplösning. Ofta säger man dock bara kort och gott ”upplösning” när
man i vardagslag talar om geometrisk upplösning. En ofta använd enhet för geometrisk upplösning är pixels per inch eller
dots per inch, förkortat ppi eller dpi. SI-enheten centimeter förekommer tyvärr ganska sällan i detta sammanhang. För bildskärmar används ofta termen dot pitch, som direkt anger storleken för en pixel, ofta i enheten millimeter.
Det antal nivåer man kan representera med den valda kvantiseringen kan kallas för fotometrisk upplösning. En vanlig enhet
för att beskriva fotometrisk upplösning är bits per pixel, förkortat bpp. Begreppet ”pixel” är en hopdragning av engelskans
”picture element” och är en vanlig benämning för den minsta enheten i en digital bild, en enda sampelpunkt. En svensk
benämning är bildpunkt, men den används tyvärr sällan. Kvantiseringen utförs lämpligen så att det tillgängliga talområdet
utnyttjas väl, till exempel så att det mörkaste tänkbara svarta i bildmaterialet representeras med det minsta representerbara
talet, och det ljusaste vita representeras med det största talet. Man skall alltså göra en väl avvägd kalibrering av signalområdet, så att inte de tillgängliga binära bitarna blir delvis outnyttjade, och så att bildsignalen inte heller blir överstyrd, det vill
säga att de mörkaste eller ljusaste delarna i bilden inte kan representeras korrekt.
Sampelpunkterna läggs vanligen i en kvadratiskt rutmönster i rader och kolumner parallella med bildens kanter, beroende på
att det är enklast så. Det finns inget som formellt hindrar att man väljer olika geometrisk upplösning i horisontell och vertikal
led i en bild, eller lägger sampelpunkterna i andra mönster än rektangulära rutnät, men detta är inte särskilt vanligt.
61 54 69 81 70 62 108 88 89 73 68 78 70
68 66 65 67 117 110 137 150 157 141 90 76 71
71 70 83
Originalbild
13x13 sampelpunkter
13x13 samplade pixels
...
Kvantiserade pixelvärden
Ur bildkvalitetssynpunkt är det viktigt att ha hög upplösning både geometriskt och fotometriskt. Den geometriska upplösningen i ovanstående exempel är till exempel grovt otillräcklig för att återge motivet väl. Brister i geometrisk upplösning kan
inte kompenseras med en hög fotometrisk upplösning. En bristande fotometrisk upplösning kan däremot åtminstone delvis
kompenseras med en mycket hög geometrisk upplösning genom så kallad rastrering (engelska halftoning, dithering), men
det är något man tar till endast om utenheten inte kan återge tillräckligt många intensitetsnivåer. Detta är fallet för till exempel de flesta skrivare och alla vanliga tryckmetoder. Teorin och praktiken kring rastrering tillhör området grafisk teknik. Vi
går inte in på detaljerna här, men i figuren nedan ser du ett enkelt exempel på en rastrerad bild i stark förstoring.
Gråskalebild, 8 bpp
Rastrerad bild, 1 bpp
I bilderna nedan ses effekten av varierande geometrisk och fotometrisk upplösning. Den exakta geometriska upplösningen
som anges gäller om du skriver ut detta dokument. Om du tittar på en skärm beror den aktuella upplösningen på vilken storlek du har på bildpunkterna på skärmen du läser detta från, och på vilken förstoringsgrad du har valt i läsprogrammet. En
typisk bildskärm har en geometrisk upplösning någonstans mellan 70 och 100 dpi, och du kommer därför inte att se någon
större skillnad mellan 135 och 67 dpi på skärmen om du inte zoomar in på bilderna.
135 dpi, 8 bpp (256 nivåer)
67 dpi, 8 bpp
34 dpi, 8 bpp
17 dpi, 8 bpp
135 dpi, 4 bpp (16 nivåer)
135 dpi, 3 bpp (8 nivåer)
135 dpi, 2 bpp (4 nivåer)
135 dpi, 1 bpp (2 nivåer)
Det finns många operationer som kan utföras på digitala bilder. Detta är i själva verket anledningen till att digitala bilder
blivit så populära. I stort sett all hantering av bilder sker i dag med digitala metoder, just på grund av att det är så flexibelt
och erbjuder så många möjligheter som inte fanns eller var mycket besvärliga att genomföra på traditionellt sätt med
fotografiska metoder. Det finns dock fallgropar. Digitala bilder har stora möjligheter, men också begränsningar som inte
alltid är så lätta att hålla reda på. En grundläggande teoretisk kunskap om mekanismerna bakom lagring och manipulation av
digitala bilder är till mycket god hjälp för att undvika att göra fel, och även för att analysera fel som uppstått i behandlingen
av bilder. Det är fortfarande en låg nivå på dessa kunskaper bland folk i allmänhet, även bland många som dagligen arbetar
med bilder. Tumregler och inkörda rutiner får tyvärr ofta ersätta en djupare förståelse.
Det antal operationer som kan utföras på en digital bild är oräkneliga, och nya sätt att behandla, förbättra, förändra, förvanska och förstöra bilder uppfinns hela tiden. Operationerna kan dock för överskådlighets skull delas in i några olika grundläggande typer.
Alla operationer som förändrar en bilds storlek eller form kan kallas för geometriska operationer. Till dessa hör dels en rad
enkla operationer som bara plockar existerande bilddata pixel för pixel och överför dessa data till en ny bild:
Kopiering (en ny bild skapas med samma innehåll som en förlaga)
Beskärning (en del av bilden används till att skapa en ny bild)
Collage (flera bilder eller delar av bilder kombineras till en ny bild)
Sedan finns det geometriska operationer som kräver att man räknar om data på olika sätt. Två av dessa är storleksförändring
och rotation.
För att förändra storleken på en bild kan man strängt taget ägna sig åt bokföringstekniska manipulationer och behålla exakt
samma bilddata, men anse att bilden har en annan geometrisk upplösning. Genom att öka den geometriska upplösningen
förminskar man bilden, och genom att minska den geometriska upplösningen kan man förstora bilden. Detta är dock inte särskilt vanligt. Ofta har man en utenhet med en bestämd geometrisk upplösning som bilden skall visas på, och då måste man
förändra bildens dimensioner i antalet pixels på bredden och höjden för att få den att verkligen fysiskt ändra storlek.
När man förstorar en bild måste man skapa nya pixels mellan de gamla. Detta kallas för interpolering eller uppsampling.
Det finns olika metoder för att göra detta. De vanligaste är närmaste granne (nearest neighbor), bilinjär interpolation
(bilinear interpolation) och bikubisk interpolation (bicubic interpolation). Bikubisk interpolation är den mest komplicerade
och tar längst tid att beräkna, men ger i allmänhet också det bästa resultatet. Närmaste granne är ingen egentlig interpolation,
utan man tar bara det närmaste sampelvärdet och duplicerar det. Detta ger en ”kantighet” i de förstorade bilderna som oftast
är oönskad. Bättre interpolationsmetoder ger inte samma tydliga bieffekter. Bilder som förstoras mer än marginellt blir dock
alltid suddiga på ett eller annat sätt. Det finns helt enkelt inte nog med information i en liten bild för att skapa en större, skarp
bild.
När en bild skall förminskas måste man kasta bort data och bestämma sig för vilka sampelvärden man skall behålla. Detta
kallas för nedsampling, och innebär också ett slags interpolering. Även här kan man använda sig av närmaste granne, linjär
eller bikubisk interpolering, med i stort sett samma skillnader i kvalitet som för uppsampling. Närmaste granne-metoden kan
göra även en förminskad bild kantig, och vissa små detaljer kan försvinna helt eller delvis. Bilder som förminskats innehåller
mindre information än originalet, eftersom man kastar bort data när man minskar antalet bildpunkter. Det går därför inte att
återskapa originalet exakt genom att förstora den förminskade bilden igen.
En annan bildoperation som kan kräva beräkningar är rotation. Rotation i steg om 90 grader innebär dock inga beräkningar.
Då är det bara att flytta om de befintliga bildpunkterna och stuva om rader till kolumner. Beräkningar krävs bara när man vill
rotera i en godtycklig vinkel. På samma sätt som med förminskning och förstoring kan man ta en enkel utväg och säga att
själva rutnätet för samplingen vrids med bilden, så att man bara lägger själva bildpunkterna på snedden. På samma sätt som
för storleksförändring är detta dock sällan någon bra lösning. Det är oftast en utenhet inblandad som har horisontella och
vertikala rader och kolumner för de bildpunkter som kan visas, och för att få en bild att visas roterad måste man i sådana fall
räkna om sampelvärdena. Det rör sig även här om en interpolering, där man skapar nya sampelpunkter utifrån existerande
sampelpunkter, och även härkan man använda sig av olika noggranna interpoleringsmetoder. Närmaste granne-metoden kan
ge ett acceptabelt resultat för rotation, men liksom annars är mer komplicerade metoder som bikubisk interpolering att föredra om man har datorkraft nog och programvara som klarar av att göra en noggrannare interpolering.
En annan populär metod för att förändra bilder är så kallad ”warping”, där bilden samplas om till ett oregelbundet rutnät för
att uppnå speciella effekter. I detta fall är det ännu viktigare att man interpolerar noggrant, eftersom bilden kommer att samplas om olika tätt i olika punkter. Om interpolationseffekter som kantighet eller suddighet syns mer på vissa ställen än andra
är det både avslöjande och störande.
Förminskning, förstoring, rotation och ”warping” faller allihop under det kollektiva begreppet omsampling, vilket bokstavligen innebär att man räknar fram en ny samplad digital bild med en tidigare samplad digital bild som utgångspunkt. Teorin
kring omsampling är omfattande och komplicerad, men om man bara känner till i stora drag vad det innebär har man vunnit
mycket för förståelsen av hur digitala bilder uppför sig.
Förminskad bild
(50x50 pixels)
Originalbild (105x105 pixels)
Förstorad bild (210x210 pixels)
bikubisk interpolering
Bild roterad 90 grader
Oregelbunden omsampling (”warping”)
Bild roterad 10 grader
Utbildens värde (0-1)
Förutom att förändra en bilds geometriska dimensioner kan man behöva ändra i själva pixelvärdena. Detta är mycket vanliga
operationer som i många fall har en direkt motsvarighet i traditionella fotografiska metoder. Att förändra en bild så att den
blir ljusare, mörkare, mer eller mindre kontrastrik eller får en bättre färgåtergivning faller under begreppet fotometriska
operationer. Gemensamt för dessa operationer är att de kan beskrivas som en enkel avbildning av inbildens värden till
utbildens värden, pixel för pixel. Avbildningen kan på ett enkelt och konkret sätt beskrivas med en överföringsfunktion eller
tonkurva (transfer function, tone curve), där man i ett diagram anger utbildens värde för varje tänkbart värde i inbilden.
Axlarna i diagrammet kan antingen graderas i intervallet [0,1] eller direkt i den valda kvantiseringens representation med
heltalsvärden, vilket för 8 bitars kvantisering innebär tal mellan 0 och 255.
Inbildens värde (0-1)
Ingen tonförändring
Ljusare bild
Mörkare bild
Mer kontrast
Mindre kontrast
Förutom att förändra en hel bild på samma sätt kan man naturligtvis vilja gå in och ändra vissa detaljer eller mindre områden
i bilder. Detta görs med interaktiva metoder, där en operatör med hjälp av en mus eller ett digitaliseringsbord för en pekare
med ett ”verktyg” över bilden. Verktyget kan efterlikna en målarpensel eller liknande, så att bilden får nya värden där verktyget används, men det kan också vara ett markeringsverktyg, så att man markerar eller maskar ut vissa delar av bilden, för
att sedan utföra någon fotometrisk operation eller filtrering (se nedan) på de markerade delarna av bilden.
Ett mycket vanligt och nyttigt begrepp på området digitala bilder är transparens (eng. ”transparency”, genomskinlighet),
eller motsatsen opacitet (eng. ”opacity”, ogenomskinlighet). Transparens beskrivs antingen som en egenskap hos en hel
bild, eller mer generellt som en egenskap hos varje pixel. Transparensen blir då en egen kanal i bilden, där man för varje
pixel förutom dess ljushetsvärde även anger hur genomskinlig den är. Transparenta bildpunkter i en bild som i ett collage
läggs ovanpå andra bilder med andra bildpunkter skall ge ett pixelvärde i utbilden som beror av både den nya och den gamla
underliggande bilden. Oftast beskrivs transparensen som en procentsats, där 100% transparens innebär att bilden är helt genomskinlig och inte syns, och 0% transparens innebär att bilden är helt ogenomskinlig och helt täcker underliggande bildpunkter. Opacitet är samma sak fast tvärt om: 100% opacitet innebär en helt ogenomskinlig, täckande bild, medan 0%
opacitet innebär en helt genomskinlig, osynlig bild.
Den sista klassen av operationer på digitala bilder kan faktiskt också sägas vara en fotometrisk operation, men i stället för att
beräkna varje ny bildpunkts värde som en funktion av värdet hos en enda punkt i originalbilden så tar man i en filtrering
hänsyn till flera pixels i originalbilden för att beräkna varje ny pixel. Begreppet syftar inte på någon tydlig likhet med traditionella optiska filter för fotografi, utan snarare till filter inom signalbehandling och elektronik, där man kan förändra en signal på ofta mycket komplicerade sätt genom att skicka den genom ett filter. Digitala bilder är också signaler, med skillnaden
att de är en funktion av två variabler (x,y) i stället för i en dimension som till exempel ljudsignaler eller elektriska signaler,
som kan beskrivas som en funktion av tiden. Samma verktyg som används för att analysera filter i en dimension fungerar
även för att analysera filter i två dimensioner, och även om vi inte går in på sådana detaljer här kan det vara värt att nämna att
just digitala filter för bildoperationer är ett mycket stort tillämpningsområde för digital signalbehandling. Detta tillhör
ämnesområdena bildanalys och bildbehandling, och vi går inte in på detaljer här. I stället visar vi några belysande exempel.
Filtrering av en bild kan enkelt beskrivas som en operation som inte bara tar hänsyn till en enda bildpunkts värde för att
skapa en punkt i utbilden, utan dessutom tittar på en större eller mindre omgivning av punkten och utför vissa beräkningar
för att komma fram till utbildens värde. Även en interpolering, som beskrevs ovan, är faktiskt ett slags filtrering.
Filter för förändring av digitala bilder finns av många olika slag för många olika tillämpningar, och många av dem innebär
mycket komplicerade beräkningar med många mellanled. En viktig klass av filter är emellertid ganska enkla att beskriva,
nämligen så kallade linjära filter. Dessa beskrivs med en uppsättning viktskoefficienter, och utbildens värde i varje punkt
beskrivs som ett viktat medelvärde av inbildens värden i motsvarande punkt samt i en liten omgivning runt denna punkt. Om
man definierar filtret i en omgivning av 3x3 pixels får man nio viktskoefficienter i filtret, och utbildens värde i varje punkt
beräknas som en summa av nio termer. Det är rätt så mycket arbete med att beräkna en filtrering, speciellt om man har
många filterkoefficienter, men de effekter som kan uppnås är väldigt avancerade. Man reducera brus i bilder, få dem att bli
suddiga eller faktiskt även se skarpare ut, eller man kan lägga på olika sorters specialeffekter. Variationsmöjligheterna är
oräkneliga. De flesta mer avancerade bildbehandlingsprogam innehåller stora möjligheter till filtrering av bilder.
Som ett konkret exempel kan vi ta en operation som gör en bild litet suddig, ett enkelt så kallat gaussiskt filter (Gaussian
blur). Viktskoefficienterna visas till vänster om bilderna. Varje pixel i utbilden beräknas som en summa av okringliggande
pixels multiplicerade med motsvarande viktskoefficienter.
1
2
1
2
4
2
1
2
1
inbild
utbild
Operationen får i princip samma effekt som om man hade gjort bilden suddig med optiska metoder (t ex dra en kamera ur
fokus). För att göra bilden ännu mer suddig kan man använda ett större filter med fler koefficienter, eller helt enkelt
applicera filtret flera gånger på bilden, vilket faktiskt är både enklare och snabbare.
Det finns inget som hindrar att man har negativa viktskoefficienter i ett filter. Nedanstående filter ger till exempel en reliefeffekt, där vertikala kanter förstärks.
1
0
-1
2
1
-2
1
0
-1
inbild
utbild
Filter med en eller flera negativa vikter är i allmänhet kantförstärkande, deriverande operationer, även kallade högpassfilter,
som gör att kanter och små detaljer förstärks, medan filter med enbart positiva vikter har utsuddande, integrerande karaktär,
även kallade lågpassfilter, som gör detaljer och kanter oskarpa. Exakt hur man bär sig åt för att designa filter som utför en
önskad operation behandlas inom ämnena signal- och bildbehandling, och det ligger långt utanför ramen för denna korta
introduktion.
Stefan Gustavson, ITN-LiTH, 2002-08-26