Når livet er lineært

Titlen er fra bogen “When life is Linear – from computer graphics to bracketology.” af Tim Chartier. Det er en rigtig fin bog, som jeg fik anbefalet af Arne Jensen. Chartier har holdt foredtag på MOMath, Museum of Mathematics i New York og det er heldigvis på YouTube:

Lineær algebra er en fundamental del af enhver uddannelse i retning af ingeniørvidenskab, naturvidenskab, oecon,..  I gymnasierne er lineær algebra vektorer, skalarprodukter, krydsprodukter og naturligvis lineære funktioner f(x)=ax+b. Tim Chartier giver en lang række eksempler på, hvordan ideerne fra lineær algebra kan udnyttes – fra, som titlen siger, computergrafik til “bracketology” (parantesologi kunne det hedde), som drejer sig om at lave sportsturneringer, som matcher de rette hold. Bogen fokuserer på datamining og computergrafik. I denne blogpost får I kun en lille forsmag, men jeg vil give flere eksempler fra bogen senere.

De fundamentale objekter i lineær algebra er vektorer og matricer:

Her er en matrix \left(\begin{array}{cccc} 1&-2&\pi&\frac{2}{3}\\0&7&3&-14\\8&9&4&5\end{array}\right) og her en vektor \left(\begin{array}{c}2\\-4\\7\\ \frac{73}{23}\end{array}\right)

 

En matrix er et skema med tal – den ovenfor er en 3×4 matrix, 3 rækker, 4 søjler. En vektor er en matrix, som kun har én søjle (eller kun én række). Så det er jo nemt nok. Tal stillet op i sådan et skema kunne for eksempel repræsentere pixels i et billede. Hvert tal er så gråtonen for netop den pixel. Et farvebillede kan have tre tal for hver pixel – så får matricen tre gange så mange søjler (eller rækker, hvis man skriver dem på den led). Billedmanipulation er nu matematiske operationer på matricen. monalisaHer er Mona Lisa. Hun har rød, grøn, blå værdier for hver pixel. Værdierne ligger mellem 0 og 255.

Hun er altså en kæmpestor matrix. Eller man kunne sige, hun er tre matricer, en for hver af de tre farver. Hvis jeg vil have et “negativ”, kan jeg tage alle pixelværdier, gange dem med -1 og lægge 255 til.

Det har jeg gjort. nedenfor, (på dette websted, Tim Chartiers college, hvor man kan lege mere med billedet af Mona Lisa, eller selv uploade et billede) hvor man også kan se resultatet af kun at “invertere” en af farverne. Altså eksempelvis at få meget blå, hvor der før var meget lidt og omvendt.

 

monalisaomvendtblaa

Blå pixels omvendt

monalisaomvendt

Alle pixels omvendt

monalisaomvendtgroen

Grønne pixels omvendt

monalisaomvendtroed

Røde pixels omvendt.

Pointen er, at man ved at repræsentere billedet som matematik, åbner for en stribe muligheder. På siden ovenfor kan man mere generelt lave manipulationer af typen mx+b, hvor x er pixelværdien og man kan vælge m og b. Inversion, som jeg har lavet ovenfor, er -x+255, altså m=-1 og b=255.

Men der er meget mere matematik at hente i lineær algebra end at gange alle indgange i en matrix med et tal og derefter lægge et andet tal til, selvom det alene giver mange muligheder. I bogen kan man læse om (meget simpel) “edge detection”, hvor man erstatter (gråtone) pixelværdien p(i,j) i indgang (i,j) i’te række j’te søjle med p(i,j-1)+p(i,j+1)-2p(i,j), altså summen af pixels lige ovenfor og nedenfor  minus 2 gange den oprindelige pixelværdi (det er den diskrete anden afledte). Hvis de tre pixelværdier er ens, får man 0, altså sort. Det gør man også, hvis der er en lineær sammenhæng: p(i,x)=ax+b giver a(j-1)+b+a(j+1)+b-2(aj+b)=0. Alle områder med konstant farve bliver sorte – de får værdi 0. Lad os tage et simpelt eksempel, en oktagon, som er repræsenteret af matricen

\left(\begin{array}{cccccccccccccc}0&0&0&0&0&0&0&0&0&0&0&0&0&0\\0&0&0&0&0&1&1&1&1&0&0&0&0&0\\0&0&0&0&1&1&1&1&1&1&0&0&0&0\\0&0&0&1&1&1&1&1&1&1&1&0&0&0\\0&0&1&1&1&1&1&1&1&1&1&1&0&0\\0&1&1&1&1&1&1&1&1&1&1&1&1&0\\0&1&1&1&1&1&1&1&1&1&1&1&1&0\\0&1&1&1&1&1&1&1&1&1&1&1&1&0\\0&1&1&1&1&1&1&1&1&1&1&1&1&0\\0&1&1&1&1&1&1&1&1&1&1&1&1&0\\0&1&1&1&1&1&1&1&1&1&1&1&1&0\\0&0&1&1&1&1&1&1&1&1&1&1&0&0\\0&0&0&1&1&1&1&1&1&1&1&0&0&0\\0&0&0&0&1&1&1&1&1&1&0&0&0&0\\0&0&0&0&0&0&0&0&0&0&0&0&0&0\end{array}\right)

Bruger vi nu metoden ovenfor og lader kant-pixels være sorte, får vi \left(\begin{array}{cccccccccccccc}0&0&0&0&0&0&0&0&0&0&0&0&0&0\\0&0&0&0&1&-1&-1&-1&-1&1&0&0&0&0\\0&0&0&1&-1&0&0&0&0&-1&1&0&0&0\\0&0&1&-1&0&0&0&0&0&0&-1&1&0&0\\0&1&-1&0&0&0&0&0&0&0&0&-1&1&0\\0&-1&0&0&0&0&0&0&0&0&0&0&-1&0\\0&0&0&0&0&0&0&0&0&0&0&0&0&0\\0&0&0&0&0&0&0&0&0&0&0&0&0&0\\0&0&0&0&0&0&0&0&0&0&0&0&0&0\\0&0&0&0&0&0&0&0&0&0&0&0&0&0\\0&-1&0&0&0&0&0&0&0&0&0&0&-1&0\\0&1&-1&0&0&0&0&0&0&0&0&-1&1&0\\0&0&1&-1&0&0&0&0&0&0&-1&1&0&0\\0&0&0&1&-1&0&0&0&0&-1&1&0&0&0\\0&0&0&0&1&-1&-1&-1&-1&1&0&0&0&0\\0&0&0&0&0&0&0&0&0&0&0&0&0&0\end{array}\right)

Bemærk, hvordan den lodrette kant forsvinder – alt med konstant farve bliver 0 og den horisontale og delvis den skrå er fremhævet. Mere indviklede metoder laver andre kombinationer af nabopixels for at finde andre effekter. Det snyder, at jeg kun bruge 0 og 1, men ideen fremgår forhåbentlig.

I får ikke mere denne gang – men så har I noget at glæde jer til. Vi har slet, slet ikke brugt styrken i lineær algebra endnu.