Billeder og billedbehandling
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:
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:
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:
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 |
|---|---|
|
|
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.