Billeder og billedbehandling

Fuldført

Notat

Se fanen Tekst og billeder for flere detaljer!

For en computer er et billede en matrix af numeriske pixelværdier . Overvej f.eks. følgende matrix:

 0   0   0   0   0   0   0  
 0   0   0   0   0   0   0
 0   0  255 255 255  0   0
 0   0  255 255 255  0   0
 0   0  255 255 255  0   0
 0   0   0   0   0   0   0
 0   0   0   0   0   0   0

Matrixen består af syv rækker og syv kolonner, der repræsenterer pixelværdierne for et billede på 7x7 pixel (som er kendt som billedets opløsning). Hver pixel har en værdi mellem 0 (sort) og 255 (hvid); med værdier mellem disse grænser, der repræsenterer gråtoner. Det billede, der repræsenteres af denne matrix, ligner følgende (forstørrede) billede:

Diagram over et gråtonebillede.

Matrixen af pixelværdier for dette billede er todimensionel (repræsenterer rækker og kolonner eller x - og y-koordinater ) og definerer et enkelt rektangel af pixelværdier. Et enkelt lag med pixelværdier som dette repræsenterer et gråtonebillede. I virkeligheden er de fleste digitale billeder flerdimensionelle og består af tre lag (kendt som kanaler), der repræsenterer røde, grønne og blå (RGB) farvenuancer. For eksempel kan vi repræsentere et farvebillede ved at definere tre kanaler med pixelværdier, der skaber den samme firkantede form som det forrige gråtoneeksempel:

Red:
 150  150  150  150  150  150  150  
 150  150  150  150  150  150  150
 150  150  255  255  255  150  150
 150  150  255  255  255  150  150
 150  150  255  255  255  150  150
 150  150  150  150  150  150  150
 150  150  150  150  150  150  150

Green:
 0    0    0    0    0    0    0          
 0    0    0    0    0    0    0
 0    0   255  255  255   0    0
 0    0   255  255  255   0    0
 0    0   255  255  255   0    0
 0    0    0    0    0    0    0
 0    0    0    0    0    0    0

Blue:
 255  255  255  255  255  255  255  
 255  255  255  255  255  255  255
 255  255   0    0    0   255  255
 255  255   0    0    0   255  255
 255  255   0    0    0   255  255
 255  255  255  255  255  255  255
 255  255  255  255  255  255  255

Her er det resulterende billede:

Diagram over et farvebillede.

De lilla firkanter er repræsenteret af kombinationen:

Red: 150 
Green: 0 
Blue: 255 

De gule firkanter i midten er repræsenteret af kombinationen:

Red: 255
Green: 255
Blue: 0

Filtre

En almindelig måde at udføre billedbehandlingsopgaver på er at anvende filtre, der ændrer billedets pixelværdier for at oprette en visuel effekt. Et filter defineres af en eller flere matrixer med pixelværdier, der kaldes filter kerner. Du kan f.eks. definere filter med en 3x3-kerne som vist i dette eksempel:

-1 -1 -1
-1  8 -1
-1 -1 -1

Kernen er derefter convolved på tværs af billedet, beregning af en vægtet sum for hver 3x3 patch af pixel og tildeling af resultatet til et nyt billede. Det er nemmere at forstå, hvordan filtreringen fungerer, ved at udforske et trinvist eksempel.

Lad os starte med det gråtonebillede, vi tidligere har udforsket:

 0   0   0   0   0   0   0  
 0   0   0   0   0   0   0
 0   0  255 255 255  0   0
 0   0  255 255 255  0   0
 0   0  255 255 255  0   0
 0   0   0   0   0   0   0
 0   0   0   0   0   0   0

Først anvender vi filterkernen øverst til venstre på billedet, multiplicerer hver pixelværdi med den tilsvarende vægtværdi i kernen og tilføjer resultaterne:

(0 x -1) + (0 x -1) + (0 x -1) +
(0 x -1) + (0 x 8) + (0 x -1) +
(0 x -1) + (0 x -1) + (255 x -1) = -255

Resultatet (-255) bliver den første værdi i en ny matrix. Derefter flytter vi filterkernen langs en pixel til højre og gentager handlingen:

(0 x -1) + (0 x -1) + (0 x -1) +
(0 x -1) + (0 x 8) + (0 x -1) +
(0 x -1) + (255 x -1) + (255 x -1) = -510

Igen føjes resultatet til den nye matrix, som nu indeholder to værdier:

-255  -510

Processen gentages, indtil filteret er blevet samlet på tværs af hele billedet, som vist i denne animation:

diagram over et filter.

Filteret er integreret på tværs af billedet og beregner en ny matrix af værdier. Nogle af værdierne kan være uden for værdiområdet på 0 til 255 pixel, så værdierne justeres, så de passer til det pågældende område. På grund af filterets form beregnes den udvendige kant af pixel ikke, så der anvendes en indre margenværdi (normalt 0). Den resulterende matrix repræsenterer et nyt billede, hvor filteret har transformeret det oprindelige billede. I dette tilfælde har filteret haft den virkning, at de kanter af figurer på billedet fremhæves.

Hvis du vil se effekten af filteret mere tydeligt, er her et eksempel på det samme filter, der er anvendt på et rigtigt billede:

Oprindeligt billede Filtreret billede
Fotografi af en hund. Fotografi af en hund med et Laplace-filter påført.

Da filteret er forbundet på tværs af billedet, kaldes denne type billedmanipulation ofte convolutional filtrering. Det filter, der bruges i dette eksempel, er en bestemt type filter (kaldet et Laplace-filter ), der fremhæver kanterne på objekter i et billede. Der er mange andre typer filtre, som du kan bruge til at oprette sløring, skarphed, farveuversion og andre effekter.