INF 230 Digital bildebehandling Forelesning 3 Geometriske operasjoner Fritz Albregtsen 05.02.203 INF230
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 05.02.203 INF230 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. 05.02.203 INF230 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 05.02.203 INF230 4
Affine transformer Transformerer pikselkoordinatene (,) til( (, ): = T (,) = T (,) Affine transformer beskrives ved: På matriseform: = a 0 + a + a 2 =b+b+b 0 b + b 2 eller 05.02.203 INF230 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 (!) 05.02.203 INF230 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 05.02.203 INF230 7 θ P
Eksempler på enkle transformer - I Transformasjon a 0 a a 2 b 0 b b 2 Uttrkk Identitet 0 0 0 0 = = Skalering s 0 0 0 s 2 0 = s = s 2 Rotasjon cosθ -sinθ 0 sinθ cosθ 0 =cosθ-sinθ =sinθ+cosθ F F 05.02.203 INF230 8
Eksempler på enkle transformer - II Transformasjon a 0 a a 2 b 0 b b 2 Uttrkk Translasjon 0 0 = + = + = Horisontal shear s 0 0 0 +s med faktor s = Vertikal shear med dfaktor s 2 0 0 s2 0 = = s 2 + F 05.02.203 INF230 9
Sammenslåing av affine transformer (etc.) 05.02.203 INF230 0
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, a 2, b 0, b, b 2 Med flere enn 3 punktpar velger man den transformasjonen som minimerer (kvadrat-)feilen summert over alle punktene (mer om dette senere) 05.02.203 INF230
Transformer med høere ordens polnomer Bilineære transformer beskrives ved: = a 0 + a + a 2 + a 3 = b 0 + b + b 2 + b 3 Kvadratiske transformer: = a 0 + a + a 2 + a 3 + a 4 2 + a 5 2 = b +b+b +b +b 0 + b 2 3 + b 4 2 5 2 Polnomer av høere orden gir muligheter for å korrigere for mer «komplekse» k avbildningsfeil. i 05.02.203 INF230 2
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! 05.02.203 INF230 3
Forlengs-mapping for all ',' do g(',') = 0 a 0 = cos θ a = -sin θ b 0 = sin θ b =cosθ θ for all, do = round(a 0 +a ) = round(b 0 +b ) 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(, ) 05.02.203 INF230 4
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 05.02.203 INF230 5
Baklengs-mapping a 0 = cos (-θ) a = -sin (-θ) b 0 = sin (-θ) b = cos (-θ) for alle, do = round(a 0 +a ) = round(b 0 +b ) 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 nærmeste piksel fra innbildet. For hver pikselposisjon i ut-bildet: Hent pikselverdi fra innbildet. 05.02.203 INF230 6
Baklengs-mapping, forts. 05.02.203 INF230 7
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 05.02.203 INF230 8
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: ), ( ), ( ), ( 2 2 2 2 og f f f 2 Så é i t l j i t l t i ), ( ), ( ), ( 2 2 2 2 2 2 2 f f f Så én interpolasjon i ortogonal retning: ), ( ), ( ), ( 2 2 2 2 f f f 2 Resultatet er uavhengig av rekkefølgen. Den interpolerte flaten er kvadratisk (krum) 2 2 05.02.203 INF230 Den interpolerte flaten er kvadratisk (krum), men lineær langs linjer parallelle med aksene. 9
Bilineær interpolasjon - II Bilineær interpolasjon når f er kjent i (0,0), (0,), (,0) og (,): f (,0) f (,) f (, ) der f (,0) og ( ) f (0,0) f (,0) f (,) ( ) f (0,) f (,) f (, ) ( ) ( ) f (0,0) 0) ( ) f (,0) ( ) f (0,) f (,) ) Eller i matrisenotasjon: f (, ) f (0,0) f (0,) f (,0) f (,) ( ) ( ) 05.02.203 INF230 20
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 : Praktisk algoritme: 0 = floor(), 0 = floor() = ceil(), = ceil() Δ = - 0 Δ = - 0 p = f( 0, 0 )+[f(, 0 )-f( 0, 0 )] Δ q = f( 0, )+[f(, )-f( 0, )] Δ f( f(, ) )=p+(q-p)δ p)δ 05.02.203 INF230 2
Bilineær interpolasjon, eksempel 05.02.203 INF230 22
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. 05.02.203 INF230 23
Høere-ordens interpolasjon Bi-kubisk interpolasjon bentter et naboskap på 44 piksler Interpolasjon kan sees på som (kontinuerlig) konvolusjon med bestemte filtre. (D-varianter av nærmeste nabo, lineær og kubisk interpolasjonskjerne) 05.02.203 INF230 24
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 segmenert 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 05.02.203 INF230 25
Kant-glorie-effekter effekter / ringing ved kubisk interpolasjon Negative lobe-verdier 05.02.203 INF230 26
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=6 piksler. 05.02.203 INF230 27
Bruk av geometriske transformer: Samregistrering av bld bilder Original Transformert Ønsket bilde å samregistrere med 05.02.203 INF230 28
Samregistrering II Hvis bildenes kartkoordinater er kjent, benttes til å finne transformkoeffisientene. Hvis ikke, brukes gjerne kontrollpunkter: Kontrollpunkter plukkes ut manuelt lett identifiserbare punkter (landemerker) i begge bildene. Affine transformer er unikt spesifisert med 3 punktpar (bestemmer a 0, a, a 2, b 0, b, b 2 ) Bi-lineære med 4 punktpar Bi-kvadratiske med 6 punktpar Bi-kubiske med 6 punktpar, I praksis velges ofte mange flere punkter for å få en god transformasjon (se neste side) 05.02.203 INF230 29
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. 05.02.203 INF230 30
Kursorisk pensum Samregistrering IV (Minimere kvadratfeilen) G og a er her basert på en affin transform d G a Vi er på jakt etter koeffisienten e i denne a- vektoren 05.02.203 INF230 Én enkelt matrise 3
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 +a 2 +a 3 = b 0 + b + b 2 + b 3 Hver firkants fire hjørnepunkter bestemmer entdig den bilineære transformen 05.02.203 INF230 32
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 05.02.203 INF230 33