7 Olika faltningkärnor. Omsampling. D Sampling. Aktuella ekvationer: Se formelsamlingen. 7.. Faltningskärnors effekt på bilder. Bilden f(, y) ska faltas med olika faltningskärnor, A H, se nedan. f(,y) A = - /, B = /5, - C = /, D = /, E = /5, F = -4 /8, G = -, H = 4 /6 Resultatet blir 8 stycken olika bilder. Para ihop bild-bild8 nedan med korrekt faltningskärna A H! bild bild bild bild 4
bild 5 bild 6 bild 7 bild 8 7.. D interpolation. Vid interpolationsuppgifterna nedan ska vi använda oss av fyra olika interpolationsfunktioner, närmsta granne interpolation n(), linjär interpolation l(), samt två olika cubic spline interpolationsfunktioner, c() och c(), där, för, n() =, för övrigt,, för, l() =, för övrigt, +, för, c() =, för övrigt,.5.5 +, för, c() = +.5 4 +, för,, för övrigt. De olika funktionerna är också illustrerade nedan. närmsta granne interpolation, n() linjär interpolation, l() cubic spline, c() cubic spline, c()
Nedan syns en liten D figur med fyra kända sampelvärden och ett okänt, f(.75) =?, som ska interpoleras fram med de fyra olika interpolationsfunktionerna ovan..5 f()?.75 7.. D och D interpolation. Vid interpolationsuppgifterna nedan ska vi använda oss av två olika interpolationsmetoder, närmsta granne och linjär interpolation. Vid närmsta granne interpolation kan rektangel-funktionen Π() användas, och vid linjär interpolation kan triangelfunktionen Λ() användas,, för, Π() =, för övrigt,, för, Λ() =, för övrigt. a) Nedan till vänster syns två kända sampelvärden och ett okänt märkt med?. Interpolera fram detta värde dels med närmsta granne interpolation och dels med linjär interpolation. b) Nedan till höger syns fyra kända sampelvärden och ett okänt märkt med? och beläget på (, y) = (/, /). Interpolera fram detta värde dels med närmsta granne interpolation och dels med bilinjär interpolation.? 4/.5?.7 y (,y)=(/,/)
7.4. Uppsampling en faktor. Omsampling till högre samplingstäthet mha interpolation är en viktig operation inom bildbehandling. För en bild samplad med samplingsavståndet = är sinc() den ideala interpolationsfunktionen, se figur nedan. Spatial rymd sinc() Fourier rymd Π(u) u = /( )=/ a) Skissera den linjära interpolationsfunktionen, Λ() =, och dess fouriertransform ovanpå sinc() och Π(u) i figuren ovan. b) Vad gäller för funktionsvärdet i = och = ± för de båda funktionerna? c) På vilket sätt är fouriertransformen av Λ() sämre än Π(u)? d) Bilinjär interpolation är en D variant av linjär interpolation. Den bilinjära interpolationsfunktionen är Λ() Λ(y). Försök att skissa D-plottar av Dfunktionerna, Λ(), Λ(y) och Λ() Λ(y). Vilken basyta har Λ() Λ(y)? e) Nedan till vänster visas en liten -bild. Interpolera upp den till dubbelt så hög samplingstäthet, dvs. till 5 5-bilden som visas till höger. Omsamplingen ska ske med bilinjär interpolation, Λ() Λ(y). Det enklaste är dock att utföra omsamplingen i två endimensionella steg, dvs först med linjär interpolation med Λ() i -led följt av linjär interpolation med Λ(y) i y-led. y y y 4 4 Originalbild Efter uppsampling 4
7.5. Rotation och interpolation. Bilden f(, y ) ska roteras medurs. Uppgiften är att beräkna värdet på pieln markerad med?-tecken i utbilden g(, y). 4 5 6 4 5 6 8 4 9 9 6 Inbild f(,y ) 4 5 6 Utbild g(,y)? a) Pieln markerad med?-tecken är belägen på (, y) = (, ) i g(, y). Vilken position motsvarar detta i inbilden f(, y )? b) Beräkna värdet på pieln markerad med?-tecken med hjälp av närmaste granne interpolation. c) Använd nu bilinjär interpolation istället. Då är interpolationsfunktionen Λ() Λ(y) där, for, Λ() =, annars. d) LITE SVÅRARE. Använd nu interpolation med en liten -punkters cubic spline-funktion istället. Då är interpolationsfunktionen h() h(y) där +, for, h() =, annars. 7.6. D sampling med vikningsdistorsion, variant Funktionen f(, y) har en D fourier transform F (u, v) som visas i figuren nedan till vänster. F (u, v) i den skuggade arean och F (u, v) = utanför den skuggade arean. F(u,v) v G(u,v)? v u u. 5
Funktionen f(, y) samplas med ett D impuls-tåg till g(, y) = f(, y) δ( n) δ(y m), dvs samplingsavståndet är = i båda riktningarna. n a) Beräkna fouriertransformen av g(, y). Låt svaret innehålla ett faltningstecken! b) Skissa G(u, v) i (u, v)-planet ovan till höger! Fick du någon vikningsdistorsion? Markera i så fall ett sådant ställe med en pil! c) Vid vilket samplingsavstånd undviks vikningsdistorsion? d) Förenkla uttrycket för G(u, v) i a) så att det inte innehåller faltningstecken och dirac-pulser, men däremot summatecken och F ( ). 7.7. LITE SVÅRARE. Nedsampling en faktor. Antag att sampelpunkterna i en bild har sampelavståndet och att bilden ska samplas ned så att sampelavståndet blir. Nedsamplingen kan göras en-dimensionellt, först i -led, sedan i y-led, se figur nedan. m ) falta horizontellt med h[n] ) falta vertikalt med h[n] ) sampla ner, dvs kasta bort varannan 6
Den ideala faltningskärnan för nedsampling är (/)sinc(/( )). Nackdelen med den ideala faltningskärnan är att den är oändligt lång. Konstruera en approimativ faltningskärna enligt följande metod: Tag den ideala faltningskärnan. Sampla den med avkänning i punkterna k där k är ett heltal. Trunkera den vid, dvs k =,,,,,,. Detta ger den diskreta faltningskärnan h[n] = [a,, b, c, b,, a]. a) Vad blir h[n]? Dvs ange värdena a, b, c. b) För lågpassfilter är det önskvärt att det lokala medelvärdet bevaras i bilden. h[n] bör därför divideras med ett värde. Vilket? c) En enklare faltningskärna för nedsampling en faktor är baserad på triangelfunktionen vars bredd överenstämmer med huvudloben på (/)sinc(/( )). Liksom faltningskärnan i b) ska den bevara den lokala medelnivån i bilden. Bestäm denna faltningskärna. 7.8. Rotation och beräkningshastighet. Ett (grovt) mått på snabbheten hos en metod är att mäta vilket antal multiplikationer som krävs per piel. Betrakta rotation med bakåtmappning (backward mapping). Antag att positionerna för alla pilarna är förberäknade. Hur många multiplikationer per piel åtgår vid följande operationer? a) Bilinjär interpolation (D variant av linjär interpolation). Ledning: Hur stor basyta har Λ() Λ(y) enligt uppgift 7.4d? b) Bicubic6 interpolation (D variant av 4-punkters cubic spline). c) D variant av 8-punkters trunkerad sinc ( super resolution ). d) Närmaste granne. 7
Svar och lösningsförslag 7. A: bild, B: bild, C: bild7, D: bild, E: bild4, F: bild6, G: bild8, H: bild5 7. Se figur nedan. Den aktuella interpolationsfunktionen är c() i figuren, men principen är densamma för de andra tre interpolationsfunktionerna. Interpolationsfunktionen förflyttas till det okända värdets position, =.75. Där multipliceras samplen med interpolationsfunktionens höjd. Nedan är a) närmsta granne, b) linjär, c) cubic spline variant, och d) cubic spline variant. Närmsta granne interpolation kan också erhållas genom att notera att f() =.5 är den närmaste grannen och därefter bara ta dess värde.5. Linjär interpolation också erhållas grafiskt genom att dra en rät linje mellan f() = och f() =.5. Då ser man att f(.75) =.5..5 f().75 a)? = n(.75) +.5 n(.5) = +.5 =.5 b)? = l(.75) +.5 l(.5) =.5 +.5.75 =.5 c)? = c(.75) +.5 c(.5) = 65 +.5.8475 =.475 d)? = c(.75) + c(.75) +.5 c(.5) +.5 c(.5) = +.656 +.5.8679 +.5 (.7) =.86 7. a) Se figuren nedan. De aktuella interpolationsfunktionerna är inritade i rött och blått i figuren och har förflyttats till det okända värdets position, = 4/. Sedan multipliceras samplen med interpolationsfunktionens höjd.? 4/ / / 8
nearest neighbor :? = Π(/) + Π(/) = + = linear interpolation :? = Λ(/) + Λ(/) = / + / = 5/ Närmsta granne interpolation kan också erhållas genom att notera att f() = är den närmsta grannen. Linjär interpolation också erhållas grafiskt genom att dra en rät linje mellan f() = och f() =. Då ser man att f(4/) = 5/. Svar: För närmsta granne interpolation blir värdet och för linjär interpolation blir värdet 5/.67. b) Se figur nedan. Den närmsta grannen till (/, /) är (, ), där värdet är.7. (,) (,).5.7 (,) (,y )=(/,/) (,) Den tvådimensionella interpolationskärnan Λ() Λ(y) sträcker sig ut till den streckade kvadraten. Här väljer vi dock att utföra den bilinjära interpolationen först D i -led och sedan D i y-led. Interpolationsfunktionen placeras först horizontellt i punkten (/, ). Interpolationsresultatet blir Λ(/) +.7 Λ(/) = (/) +.7 (/) =.. Interpolationsfunktionen placeras sen horizontellt i punkten (/, ). Interpolationsresultatet blir.5 Λ(/) + Λ(/) =.5 (/) + (/) =.7. Interpolationsfunktionen placeras sen vertikalt i punkten (/, /). Interpolationsresultatet blir. Λ(/) +.7 Λ(/) =. (/) +.7 (/) =.4. Svar: För närmsta granne interpolation blir värdet.7 och för linjär interpolation blir värdet.4. 7.4 a) Skissen blir Spatial rymd Fourier rymd sinc() Λ() Π (u) sinc (u) u = /( )=/ 9
b) Funktionsvärdet i = är och funktionsvärdet i = ± är, precis som det ska vara för en interpolationsfunktion. c) Fouriertransformen av Λ(), sinc (u), ger som synes lågpassfiltrering, vilket kan göra den omsamplade bilden suddigare än originalet. Dessutom sträcker sig sinc (u) utanför bandgränsen, vilket kan ge distorsion. d) Se plottarna nedan. e) Basytan för Λ() Λ(y) är. y.5.5.5.5.5.75.5.5 4 Efter uppsampling 7.5 a) Kalla inbilden f(, y ) och den roterade bilden g(, y). Då gäller: ( ) ( ) ( ) ( ) ( cos α sin α cos α sin α = = y sin α cos α y y sin α cos α ) ( y ). Punkten (, y) = (, ) och vinkeln α = insatta i formeln ovan ger (, y ) (.879,.684). b) Närmaste granne interpolation ger g(, ) = f(, ) =.
c) Se figuren nedan. Den ger.879 y (.879,) (,y )=(.879,.684) (.879,) Λ(.879) =., Λ(.) =.879, Λ(.684) =.6, Λ(.6) =.684, f(.879, ) = f(, ) Λ(.879) + f(, ) Λ(.) =, f(.879, ) = f(, ) Λ(.879) + f(, ) Λ(.) = 4, f(.879,.684) = f(.879, ) Λ(.684) + f(.879, ) Λ(.6), f(.879,.684) = 4.6 +.684 =.6. d) Se figuren ovan. Den ger h(.879) =.4, h(.) =.96, h(.684) =.6, h(.6) =.764, f(.879, ) = f(, ) h(.879) + f(, ) h(.) =, f(.879, ) = f(, ) h(.879) + f(, ) h(.) = 4, f(.879,.684) = f(.879, ) h(.684) + f(.879, ) h(.6), f(.879,.684) = 4.6 +.764 =.6. 7.6 a) G(u, v) = F (u, v) n δ(u n) m δ(v m) b) G(u,v) v vikningsdistorsion u Ja, det blev vikningsdistorsion på flera ställen. Pilen pekar på ett ställe. c) < /.6
d) G(u, v) = F (u, v) δ(u n) δ(v m) n m = F (u, v).5 δ(u n, v m) n m =.5 F (u n, v m) n m 7.7 a) ( ) sinc samplas i = [,,,,,, ] h[n] = [ /(π),, /π, /, /π,, /(π)]. b) /(π) + /π + / + /π /(π) =.944 Filtet h[n] ska divideras med.944. c) [,, ]/4 eller /4. 7.8 Antag bildstorleken N N. Rotation kräver N N D-interpolationer, alltså en D-interpolation per piel. a) Bredden på en n = punkters linjär interpolationsfunktion är sampelavstånd. En bilinjär interpolationsfunktion har en basyta på n n =. Då denna placeras på den önskade interpolationspositionen täcker den n n = = 4 sampel, se figur. Dessa sampelvärden ska multipliceras med interpolationsfunktionen. Det krävs alltså 4 multiplikationer per piel. sampel avstånd sampel avstånd basyta önskad interpolationsposition b) Generalisera resonemanget i a) till att en n n punkters interpolationsfunktion kräver n n multiplikationer. Följdaktligen kräver bicubic6 interpolation 4 4 = 6 multiplikationer per piel. c) Generalisering av resonemanget i a) ger 8 8 = 64 multiplikationer per piel. d) Inga multiplikationer.