Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Szűrés és konvolúció Vámossy Zoltán 2004

Hasonló előadás


Az előadások a következő témára: "Szűrés és konvolúció Vámossy Zoltán 2004"— Előadás másolata:

1 Szűrés és konvolúció Vámossy Zoltán 2004
(Gonzales, Woods, Forsyth, Rehg, Hanson, Trucco, Verri, Thrun, Bradski anyagai alapján)

2 CV rendszer általános modellje

3 Maszk, vagy ablak alapú műveletek
g(x, y) = T[f(x, y)], T a szomszédos pixeleken operál (lokális művelet)

4 Mit jelent a képszűrés (filtering)?
Maszk, vagy ablak alapú transzformációk A kép adott pixelét a környezetében lévő pixelek függvényében módosítjuk Az input és az output kép azonos méretű Pixelről pixelre haladunk A pont operációknál számítástechnikailag időigényesebbek, de hatékonyságuk jelentősebb 10 5 3 4 1 7 7 Valamilyen fgv.

5 Maszkok A maszk egy mátrix, elemei a súlyok
Minden maszknak van origója A szimmetrikus maszkok origója rendszerint a középső elem, a nem szimmetrikusoké választható Lineáris eset a legegyszerűbb és leghasznosabb Minden pixelt a környezetének lineáris kombinációjával helyettesítjük A lineáris kombinációval történő leírást konvolúciós magnak, vagy maszknak is nevezik (convolution kernel) 10 5 3 4 1 7 0.5 1.0 7 = Maszk - kernel

6 Megj.: Nem lineáris szűrés
Ha az output nem a lineáris kombinációja az inputoknak, nem lineáris szűrésről beszélünk Példa: erozió, dilatáció, médián, max, min, extrénum Nem maszkkal valósítjuk meg

7 Képtérben történő szűrések
Lineáris szűrők Simítás: Átlagoló (alul-áteresztő) szűrők Élesítés: Felül áteresztő szűrők Felül erősítő szűrők Sávszűrők Derivált szűrők Nem lineáris szűrők Simítás Médián

8 Maszkok használata Az input minden pixelére egy maszkot helyezünk úgy, hogy annak origója az adott pixelre essék Az input kép maszk alatti pixeleit megszorozzuk a maszkban szereplő súlyokkal Az eredmény: az input helyzetének megfelelő pixel értéke a súlyozott értékek összege – esetleg skálázva

9 Maszk használata

10 Maszk használata A diszkrét két dimenziós konvolúció definíciója (páratlan méretű maszkra): Figyeljük meg az indexek sorrendjét!

11 Az 1D konvolúcióról Két függvény között értelmezett lineáris művelet
Az egyik függvényből vett minta súlyozott mozgó átlagának számítása egy adott súlyfüggvény alapján f(t) függvényből vett minta f1, f2, .... f10 Súlyfüggvény értékei w+2, w+1, w0, w-1, w-2 f(t): f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 w(t): w2 w1 w0 w-1 w-2 a mozgó átlag: a6 Az a6 mennyiséget a következőképpen számítjuk ki: a6 = w2f4 + w1f5 + w0f6 + w-1f7 + w-2f8 Általában w0-t fn-nel szorozzuk:

12 Az 1D konvolúcióról Előző súlyfüggvény 0 a (-2, 2) intervallumon kívül
Az an sorozatot nevezzük diszkrét konvolúciónak: az összegzést kiterjeszthetjük a (-∞, ∞) intervallumba: Ha a függvényből és súlyból vett minták fi-k és wi-k közötti részt végtelen kicsinek vesszük, akkor folytonos fgv-ek konvolúciós integrálját kapjuk: a = w  f = f  w

13 1D konvolúció példa 1. A következő két fgv. konvolúciója
1. lépés g(-a) tükrözés! 2. lépés g(x-a)

14 1D konvolúció példa 2. 3. lépés tekintsük az összes lehetséges x értéket 1. eset: x < 0 2. eset: 0 <= x <= 1

15 1D konvolúció példa 3. 3. eset: 1 <= x <= 2 4. eset: 2 < x

16 1D konvolúció példa 4. Tehát Megjegyzés:
x értékre a bal oldali határ a számítás során max( f(x) bal határa, g(x-a) bal határa) x értékre a jobb oldali határ a számítás során min( f(x) jobb határa, g(x-a) jobb határa)

17 Megj: Keresztkorreláció
A korreláció tükrözés nélkül transzformálja az eredeti képet Gyakran használják olyan alkalmazásokban, ahol a hasonlóságot kell megmérni képek, vagy képrészek között Ha a maszk szimmetrikus (a tükrözött ugyanaz, mint az eredeti), akkor a konvolúció és a korreláció eredménye ugyanaz A diszkrét korreláció definíciója (páratlan méretű maszkra):

18 Konvolúció és keresztkorreláció

19 Maszksúlyok normalizálása
A maszk elemek összege meghatározza az output kép egészének intenzitását Sok konvolúciós maszk esetében az összeg 1 (az eredmény képnek ugyanaz marad az átlagos intenzitása) Néhány maszkban negatív súlyok is vannak és az összegük 0 Ha negatív értékek vannak a maszkban, akkor negatív pixeleredmény is lehet Negatív eredmény esetén lineáris normalizálást hajtunk végre az eredményképen

20 Gyakorlati problémák Kép szélének kezelése
A futási idő a maszk méretének exponenciális hatványával arányos

21 Szűrő példák

22 Szűrő példák

23 Szűrő példák

24 Példa: simítás (blurring)
Image Blurred Image - =

25 Összefoglalás: Lineáris szűrők
Módszer: Új képet készítünk, ahol a pixelek intenzitása az eredeti képen ugyanazon a helyen lévő pixel és szomszédjainak súlyozott intenzitás összegéből számoljuk ki Tulajdonságok Az output lineáris függvénye az inputnak Az output eltolás invariáns (shift-invariant) függvénye az inputnak (pl. az input kép két pixellel balra tolva és szűrve, az output pixelei is két pixellel balra tolva jelennek meg) A lineáris konvolúció asszociatív Példa: simítás átlagolással A szomszédok átlagából származik a célpixel Példa: simítás Gauss szűrővel A szomszédok súlyozott átlagából származik a célpixel Példa: derivált meghatározása

26 Simítás (aluláteresztő) szűrők
Zaj szűrésre és kép elmosásra használják A finom részleteket is eltűnteti

27 Átlagszűrő (averaging, mean filter)
A maszk elemei pozitívak A maszk mérete határozza meg a simítás mértékét Box filterek:

28 Átlagoló szűrő Szeparalható
Rekurzívan számolható, pixelenként 4 operációval L pixels + m,n m,n+1

29 Simító ablak méretének hatása
1 pixel 3 pixels 7 pixels

30 Példa: simítás átlagolással
Begyűrűzés (ringing) effektus Here is the point to introduce some visual “notation”. I’ve given the kernel as an image on the top. Usually, these images are white for the largest value, and black for the smallest (which is zero in this case). The point of this pair of images is that if you convolve the one on the left with the kernel shown above you get the one on the right, which is nothing like a smoothed version of the one on the left (there’s some fairly aggressive ringing). Explain the ringing qualitatively in terms of the boundaries of the kernel, and point out that the effect would disappear if there weren’t sharp edges in the kernel.

31 Simítás Gauss szűrővel
Az átlagoló simítás nem azonos a defókuszált lencsével készített képpel A leginkább tapasztalható differencia: egy pont képe a defókuszált lencse esetében egy életlen folt; az átlagolás ezzel szemben téglalapot készít I always walk through the argument on the left rather carefully; it gives some insight into the significance of impulse responses or point spread functions. A Gauss görbe jó modell a foltra

32 Izotróp Gauss szűrő A simító maszk, mely arányos:
A Gauss maszk a szélen közel 0 σ a simítás mértéket határozza meg (körkörösen szimmetrikus életlen folt képének modellje)

33 Simítás Gauss szűrővel
You want to point out the absence of ringing effects here.

34 Gauss szűrő A súlyok a Gauss függvényből származnak Maszk (kernel):
Gauss konvolúció magja σ = 0.5 Förklara hur convolution går till.

35 Képsimítás Gauss szűrővel
figure(3); sigma = 3; width = 3 * sigma; support = -width : width; gauss2D = exp( - (support / sigma).^2 / 2); gauss2D = gauss2D / sum(gauss2D); smooth = conv2(conv2(bw, gauss2D, 'same'), gauss2D', 'same'); image(smooth); colormap(gray(255)); gauss3D = gauss2D' * gauss2D; tic ; smooth = conv2(bw,gauss3D, 'same'); toc

36 Szétválasztás I. (Separable kernels)
g (i, j) = f  h = f  hy  hx

37 Szétválasztás II. (Separable kernels)
A Gauss szűrőt hatékonyan lehet implementálni, mert szeparálható:

38 Gauss szűrő algoritmusa
Az I kép Gauss szűrése n x n –es méretű, σ = σg paraméterű G maszkkal Készítsünk egy 1D Gauss n szélességű maszkot (g), σg = σG Hajtsunk végre konvolúciót az I kép oszlopain g-vel, az új kép Ic Hajtsunk végre konvolúciót az Ickép sorain g-vel

39 Gauss szűrő A σ (simítás mértékének) növelésével a maszk méretének is nőnie kell Magasság = szélesség = 5 σ (a terület 98.76%-át fedi le)

40 Gauss szűrő A σ=2 13x13-as maszk, 255-re felszorozva

41 Binomiális szűrő I. 3x3-as szimmetrikus Gauss szűrő
A binomialis sorozatok a Gauss függvény diszkrét közelítései: aluláteresztő szűrőként viselkednek Az 1/16-os osztás általános esetben 1/22p Az n=3 elemű első sor elemei [1, 2, 1] a p=n-1=2-od rendű binomiális együtthatók A binomiális együtthatók a Pascal háromszögből is származtathatók Konvolúció segítségével is megkaphatjuk azokat: [1, 1]  [1, 1] = [1, 2, 1] , [1, 1]  [1, 2, 1] = [1, 3, 3, 1]

42 Binomiális szűrő II. A méret növekedésével a szűrő egyre jobban közelíti a Gauss szűrőt

43 Binomiális szűrő III. Szeparálhatók a binomiális szűrők
A 2D konvolúció két 1D-s konvolúcióval számolható Példa n = 3 2D konvolúció: 9 szorzás, 8 összeadás 1D konvolúciókkal: 6 szorzás, 4 összeadás Példa általános eset n 2D konvolúció: n2 szorzás, n2-1 összeadás 1D konvolúciókkal: 2*n szorzás, 2*(n-1) összeadás és 2*(n-1) shiftelés jobbra Az 1D hn(x) maszk helyettesíthető n db [1 1] maszk konvolúciójával – ez 1 összeadás és egy shiftelés; 2D hn(x, y) ez 2*(n-1) összeadás, nincs szorzás és 2*(n-1) shiftelés

44 Binomiális szűrő IV. Eredeti Binomiális 5x5 Átlagoló 5x5

45 Élelmosás összehasonlítás
Élelmosás átlagolásnál és binomiális szűrőnél Lépcsős él L méretű átlagoló eredménye L L méretű binomiális eredménye

46 Medián szűrő (nem lineáris)
A pixelt a környező pixelek mediánjával helyettesíti Rank order szűrő Nem lineáris: median{ f1 + f2} ≠ median{ f1} + median{ f2}. De: median{ c f } = c median{ f }, median{ c + f } = c + median{ f }. Véletlenszerűen elhelyezkedő, impulzus szerű zaj kiszűrésére hatékony Az éleket megtartja Nagy zajnál nem hatékony Gauss-féle zaj esetén nem hatékony

47 Medián szűrő (nem lineáris)
Kép 5x5 médián 5x5 átlagoló

48 Medián szűrő megjegyzés
Eredeti kép szűrők eredmény

49 Medián szűrő megjegyzés
Pontokat, vonalakat és sarkokat törli a medián szűrő Teszt képek 33 médián

50 Medián szűrő megjegyzés
A részleteket hatékonyabban “védi” mi = median( Ri ), i =1,2,3,4. Result = median( m1,m2,m3,m4,m5 ) R1 R2 R3 R4 m5

51 Élesítés (felül-áteresztő) szűrők

52 Élesítés (sharpening)
A kép finom részleteinek kiemelésére szolgál A magas kontrasztú részeket a lokális környezetben számított intenzitás differenciák kaphatjuk meg A maszk súlyai pozitív és negatív értékek Közel konstans intenzitású rész felett a maszk eredményeként nulla közeli értéket kapunk Hirtelen változó intenzitásoknál a konvolúció eredménye nagyobb érték Ilyen pontok tipikusan az objektumok, vagy képrészek határain jelennek meg

53 Élesítés (sharpening) példa
1/9 ( ) = 210/9 > 0 1/9 ( ) = 0

54 Élesítés deriváltak használatával
Élesítést térbeli deriváltak használatával kapunk Gradiens meghatározása (nagyságát használjuk) Lineáris és eltolás invariáns művelet => konvolúció A gradienst véges differenciákkal közelítjük, amik maszkokkal is számíthatók

55 Differenciák pontossága
Első derivált pontosabb közelítése Második derivált közelítésének pontossága

56 Első és másodrendű differenciák

57 Élesítés Első és másodrendű differenciák összehasonlítása
Elsőrendű differenciák vastagabb éleket generálnak Másodrendű differenciáknak erőteljesebb a válasza olyan finom részletekre, mint vékony vonalak, vagy izolált pontok Másodrendű differenciák dupla választ adnak az intenzitás lépcsős változásánál Élesítéshez gyakrabban alkalmaznak másodrendű deriváltakat

58 Laplace szűrő Izotrópikus szűrő: nem irányfüggő
Legegyszerűbb másodrendű differenciákat tartalmazó szűrő a Laplace

59 Laplace szűrő Folytonossági hiányok kiemelésére szolgál Háttér eltűnik
A háttér visszakapható, ha az eredeti képet hozzáadjuk

60 Laplace szűrő Eredeti, szűrt kép, transzformált Laplace, élesített kép

61 Laplace szűrő Laplace élesítés

62 Unsharp masking és felül erősítés
Sharpened image = original – blurred Highpass = original - lowpass Felül erősítő szűrő, A>=1

63 Felül erősítés Laplace, A=1, A=1.7

64 Differencia szűrők Gradiens és nagysága (nem lineáris operátor, erősségről ad infót, izotrópikus operátor) Közelítések 1. I tend not to prove “Now this is linear and shift invariant, so must be the result of a convolution” but leave it for people to look up in the chapter.

65 Differencia szűrők Közelítések 2. Prewitt Közelítések 3. Sobel
I tend not to prove “Now this is linear and shift invariant, so must be the result of a convolution” but leave it for people to look up in the chapter.

66 Kombináció / konvolúció

67 Differenciák Now the figure on the right is signed; darker is negative, lighter is positive, and mid grey is zero. I always ask 1) which derivative (y or x) is this? 2) Have I got the sign of the kernel right? (i.e. is it d/dx or -d/dx).


Letölteni ppt "Szűrés és konvolúció Vámossy Zoltán 2004"

Hasonló előadás


Google Hirdetések