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