INF 2310 Digital bildebehandling Forelesning 3 Geometriske operasjoner Fritz Albregtsen 03.02.2014 INF2310 1
Temaer i dag Geometriske operasjoner Lineære / affine transformer Resampling og interpolasjon Samregistrering i av bilder Pensum: Kap. 244 2.4.4 og 2.6.5 265iDIP 03.02.2014 INF2310 2
Geometriske operasjoner Endrer på pikslenes posisjoner Første steg i denne prosessen: Transformer pikselkoordinatene (,) til (, ): = T (,) = T (,) T og T er ofte gitt som polnomer. Siden pikselkoordinatene må være heltall, må vi deretter bruke interpolasjon til å finne pikselverdien (gråtonen) id den ne posisjonen. 03.02.2014 INF2310 3
Anvendelser Forstørre deler av bilder for visuell inspeksjon («zoome») Rette opp geometriske feil som oppstår under avbildningen Rotasjon i bildeplanet Fiskeøelinse Radaravbildning av terreng Medisinsk ultrald Samregistrere bilder Samregistrere bilder fra ulike sensorer (CT, MR, US) Samregistrere bilder tatt tt på ulike tidspunkt. Samregistrere bilder med kart i en bestemt kartprojeksjon. Eksempel: Ansiktsgjenkjenning: Finne alle ansiktene i et bilde, klipp ut ansiktene, transformer del-bildene slik at ansiktene i bildet blir på samme sted, har samme orientering og samme størrelse som i referansebildene. Generere bilder fra andre kameravinkler Spesialeffekter 03.02.2014 INF2310 4
Affine transformer Transformerer pikselkoordinatene (,) til( (, ): = T (,) = T (,) Affine transformer beskrives ved: På matriseform: = a 0 + a 1 + a 2 =b+b+b 0 b 1 + b 2 eller 03.02.2014 INF2310 5
Egenskaper ved affine transformer Rette linjer bevares (se ukeoppgave) Parallelle linjer forblir parallelle Utrkkes ved enkel matrisemultiplikasjon lik Eksempler på affine transformasjoner: Translasjon Rotasjon Shearing Skalering Kombinasjoner av disse (!) 03.02.2014 INF2310 6
Litt om rotasjon Hørehånds koordinatsstem, rotasjon positiv med urviseren: = cosθ - sinθ; = sinθ + cosθ Venstrehånds koordinatsstem, rotasjon positiv med urviseren: = cosθ + sinθ; = -sinθ + cosθ θ P 03.02.2014 INF2310 7 θ P
Eksempler på enkle transformer - I Transformasjon a 0 a 1 a 2 b 0 b 1 b 2 Uttrkk Identitet 1 0 0 0 1 0 = = Skalering s 1 0 0 0 s 2 0 = s 1 = s 2 Rotasjon cosθ -sinθ 0 sinθ cosθ 0 =cosθ-sinθ =sinθ+cosθ F F 03.02.2014 INF2310 8
Eksempler på enkle transformer - II Transformasjon a 0 a 1 a 2 b 0 b 1 b 2 Uttrkk Translasjon 1 0 0 1 = + = + = Horisontal shear 1 s 0 0 1 0 +s 1 med faktor s 1 1 = Vertikal shear med dfaktor s 2 1 0 0 s2 1 0 = = s 2 + F 03.02.2014 INF2310 9
Sammenslåing av affine transformer (etc.) 03.02.2014 INF2310 10
Alternativ måte å finne transformkoeffisientene ffi i t En affin transform kan bestemmes ved å spesifisere tre punkter før og etter avbildningen inn-bildet resultat-bildet Med disse tre punktparene p kan vi finne de 6 koeffisientene; a 0, a 1, a 2, b 0, b 1, b 2 Med flere enn 3 punktpar velger man den transformasjonen som minimerer (kvadrat-)feilen summert over alle punktene (mer om dette senere) 03.02.2014 INF2310 11
Transformer med høere ordens polnomer Bilineære transformer beskrives ved: = a 0 + a 1 + a 2 + a 3 = b 0 + b 1 + b 2 + b 3 Kvadratiske transformer: = a 0 + a 1 + a 2 + a 3 + a 4 2 + a 5 2 = b +b+b +b +b 0 1 + b 2 3 + b 4 2 5 2 Polnomer av høere orden gir muligheter for å korrigere for mer «komplekse» k avbildningsfeil. i 03.02.2014 INF2310 12
Resampling I illustrasjonen: Har kun sample/piksel- l Vil gjerne ha bildet samplet verdier på et rektangulært grid der linjene krsser -> resample Ikke glem at sammenhengen mellom romlig oppløsning og samplingsrate (samplingsteoremet) fortsatt gjelder! 03.02.2014 INF2310 13
Forlengs-mapping for all ',' do g(',') = 0 a 0 = cos θ a 1 = -sin θ b 0 = sin θ b 1 =cosθ θ for all, do = round(a 0 +a 1 ) = round(b 0 +b 1 ) if (, ) inside g g(, ) = f(,) end Eksempel: Enkel rotasjon ved transformen: Fltter de posisjonstransformerte pikselposisjonene til nærmeste pikselposisjon i utbildet. Skriver innbildets f(,) inn i g(, ) 03.02.2014 INF2310 14
Forlengs-mapping, forts. Problemer: Ikke alle utpiksler får verdi (hullene i bildet) Unødig beregning av pikselkoordinater som allikevel ikke blir snlige (ender utenfor utbildet) Samme utbilde-piksel kan bli satt flere ganger 03.02.2014 INF2310 15
Baklengs-mapping a 0 = cos (-θ) a 1 = -sin (-θ) b 0 = sin (-θ) b 1 = cos (-θ) for alle, do = round(a 0 +a 1 ) = round(b 0 +b 1 ) if (,) inside f g(, ) = f(,) else g(, )=0 end Samme eksempel som ved forlengs-mappingen. NB: (,) rotert t med θ ga (, ) ) (, ) rotert med -θ gir (,) Resample bildet. Her; for hvert utbilde-piksel, invers-transformér, og velg verdien til nærmeste piksel fra innbildet. For hver pikselposisjon i ut-bildet: Hent pikselverdi fra innbildet. 03.02.2014 INF2310 16
Baklengs-mapping, forts. GARANTI: Alle utpiksler får verdi (ingen hull i ut-bildet). Ingen unødig beregning av pikselkoordinater som allikevel ikke blir snlige (ender utenfor utbildet). Ingen utbilde-piksel vil bli satt flere ganger. 03.02.2014 INF2310 17
Og så : INTERPOLASJON Vi har utført den geometriske operasjonen baklengs mapping, som er en re-sampling. For hvert piksel i utbildet har vi valgt pikselverdien fra nærmeste piksel i innbildet, gitt transformen. Er dette det beste vi kan få til? Eller finnes det metoder som gir et bedre resultat? 03.02.2014 INF2310 18
Interpolasjon : Hvilken intensitetsverdi it t skal pikselen få? Baklengs-mapping Nullte-ordens interpolasjon eller nærmeste nabo-interpolasjon g(, ) = f( round(), round() ) => Intensiteten til g(, ) g(,) blir en av verdiene fra f 03.02.2014 INF2310 19
Bilineær interpolasjon - I p j Anta at vi kjenner gråtoneverdien i fire nabo-punkter Ønsker å estimere gråtonen i et mellomliggende punkt. Gjør to lineære interpolasjoner i én retning først, f.eks i -retning: ), ( ), ( ), ( 1 2 1 2 1 1 1 1 2 2 1 og f f f 2 Så é i t l j i t l t i ), ( ), ( ), ( 2 2 1 2 1 2 1 1 2 2 2 f f f Så én interpolasjon i ortogonal retning: ), ( ), ( ), ( 2 1 2 1 1 1 2 2 f f f 2 1 1 Resultatet er uavhengig av rekkefølgen. Den interpolerte flaten er kvadratisk (krum) 1 2 1 2 03.02.2014 INF2310 Den interpolerte flaten er kvadratisk (krum), men lineær langs linjer parallelle med aksene. 20
Bilineær interpolasjon - II Bilineær interpolasjon når f er kjent i (0,0), (0,1), (1,0) og (1,1): 1 f (,0) f (,1) f (, ) der f (,0) og (1 ) f (0,0) f (1,0) f (,1) (1 ) f (0,1) f (1,1) f (, ) (1 ) (1 ) f (0,0) 0) (1 ) f (1,0) (1 ) f (0,1) f (1,1) 1) Eller i matrisenotasjon: f (, ) f (0,0) f (0,1) f (1,0) f (1,1) (1 ) (1 ) 03.02.2014 INF2310 21
Første-ordens interpolasjon/ bilineær interpolasjon Intensiteten blir en kombinasjon av pikselverdiene i de fire pikslene som omgir punktet Bidragene fra hver av disse vektes med avstanden Interpolere i - og -intervallene mellom 0 og 1: Praktisk algoritme: 0 = floor(), 0 = floor() 1 = ceil(), 1 = ceil() Δ = - 0 Δ = - 0 p = f( 0, 0 )+[f( 1, 0 )-f( 0, 0 )] Δ q = f( 0, 1 )+[f( 1, 1 )-f( 0, 1 )] Δ f( f(, ) )=p+(q-p)δ p)δ 03.02.2014 INF2310 22
Bilineær interpolasjon, eksempel 03.02.2014 INF2310 23
Trilineær interpolasjon Utvidelsen fra 2D til 3D kalles trilineær interpolasjon, og er en lineær interpolasjon mellom resultatene av to bilineære interpolasjoner. Resultatet er igjen uavhengig av rekkefølgen. 03.02.2014 INF2310 24
Høere-ordens interpolasjon Bi-kubisk interpolasjon bentter et naboskap på 44 piksler Interpolasjon kan sees på som (kontinuerlig) konvolusjon med bestemte filtre. (1D-varianter av nærmeste nabo, lineær og kubisk interpolasjonskjerne) 03.02.2014 INF2310 25
Interpolasjonsfunksjoner i praksis Nærmeste nabo: Taggete kanter og større totalfeil. Hver ut-piksel har en verdi fra inn-bildet: Ingen rekvantisering er nødvendig: d en fordel hvis man vil bevare visse statistiske egenskaper i bildet (eller hvis bildet er segmentert i ulike klasser) Bilineær interpolasjon og høere-ordens interpolasjon: er mer regnekrevende Bi-kubisk interpolasjon: gir skarpere bilder og har kontinuerlige deriverte Men er (me) mer regnekrevende enn bilineær interpolasjon, og kan gi opphav til kant-glorie-effekter 03.02.2014 INF2310 26
The image cannot be displaed. Your computer ma not have enough memor to open the image, or the image ma have been corrupted. Restart our computer, and then open the file again. If the red still appears, ou ma have to delete the image and then insert it again. Kant-glorie-effekter effekter / ringing ved kubisk interpolasjon Negative lobe-verdier 03.02.2014 INF2310 27
Interpolasjon en sammenligning Nærmeste nabo gir 2D trappefunksjon, med diskontinuitet midt mellom punktene. Bi-lineær interpolasjon bruker 22=4 2 piksler. Derivert er ikke kontinuerlig over flaten. Bi-kubisk interpolasjon gir glattere flater enn bilineær, men er mer regnekrevende; bruker 44=16 piksler. 03.02.2014 INF2310 28
Bruk av geometriske transformer: Samregistrering av bld bilder Original Transformert Ønsket bilde å samregistrere med 03.02.2014 INF2310 29
Samregistrering II Hvis bildenes kartkoordinater er kjent, benttes de til å finne transformkoeffisientene. Hvis ikke, brukes gjerne kontrollpunkter: Kontrollpunkter kan plukkes ut manuelt lett identifiserbare punkter (landemerker) i begge bildene. Affine transformer er unikt spesifisert med 3 punktpar (bestemmer a 0, a 1, a 2, b 0, b 1, b 2 ) Bi-lineære med 4 punktpar Bi-kvadratiske med 6 punktpar Bi-kubiske med 16 punktpar, I praksis velges ofte mange flere punkter for å få en god transformasjon (se neste side) 03.02.2014 INF2310 30
Samregistrering III Ved flere kontrollpunkter enn nødvendig for å bestemme transformkoeffisientene, benttes ofte kvadratfeilen som minimeringskriterium. Gitt M kontrollpunkter ( i, i ),( ir, ir ) («r» indikerer referansebildet) og anta mappingen ( i, i ) --> ( i, i ) Polnomkoeffisientene settes til de som minimerer kvadratfeilen mellom kontrollpunktets sanne koordinater ( ir, ir ) og de transformerte koordinatene ( i, i ): Enkel lineæralgebra benttes til å finne eksakt løsning. 03.02.2014 INF2310 31
Kursorisk pensum Samregistrering IV (Minimere kvadratfeilen) G og a er her basert på en affin transform d G a Vi er på jakt etter koeffisientene i denne a- vektoren 03.02.2014 INF2310 Én enkelt matrise 32
Stkkevise transformer Resampling:Forskjellige transformer for ulike deler av bildet Ofte bestemmes et kontrollgrid som strer hvordan de ulike delene skal endres Bilineær transformasjon benttes ofte: =a 0 + a 1 +a 2 +a 3 = b 0 + b 1 + b 2 + b 3 Hver firkants fire hjørnepunkter bestemmer entdig den bilineære transformen 03.02.2014 INF2310 33
Oppsummering Transform/endring av pikslenes posisjoner (-,-koordinater) Affine transformer Resampling: Forlengs- og baklengsmapping Interpolasjonsmetoder for å bestemme gråtonene til de geometrisk transformerte pikslene: Nærmeste nabo-interpolasjon Bilineær interpolasjon Høere-ordens interpolasjoner Bruk av geometriske operasjoner til å samregistrere bilder Kontrollpunkter Løs ligningssett i som minimerer i kvadratfeil 03.02.2014 INF2310 34