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

Slides:



Advertisements
Hasonló előadás
Lineáris regressziós MODELLEK
Advertisements

Programozási feladatok
Függvények Egyenlőre csak valós-valós függvényekkel foglalkozunk.
Diszkrét idejű bemenet kimenet modellek
9. Diszkrét wavelet transzformáció, szűrők, sokskálás felbontás, operátor tömörítés Speciálkurzus 2009 tavasz.
1. Bevezetés a waveletekhez (folytatás)
Digitális képanalízis
Jelkondicionálás.
DIFFERENCIÁLSZÁMÍTÁS ALKALMAZÁSA
Függvénytranszformációk
Bayes hálók október 20. Farkas Richárd
Mozgó Objektumok Detektálása és Követése Robotkamera Segítségével
MI 2003/ Alakfelismerés - még egy megközelítés: még kevesebbet tudunk. Csak a mintánk adott, de címkék nélkül. Csoportosítás (klaszterezés, clustering).
Algoritmizálás Göncziné Kapros Katalin humaninformatika.ektf.hu.
Mesterséges neuronhálózatok
Közlekedésstatisztika
Lineáris programozás Modellalkotás Grafikus megoldás Feladattípusok
Vámossy Zoltán 2004 (Mubarak Shah, Gonzales-Woods anyagai alapján)
Élek detektálása Vámossy Zoltán 2004
Vámossy Zoltán 2006 Gonzales-Woods, SzTE (Kató Zoltán) anyagok alapján
Szkeletonizáció Vámossy Zoltán 2004
Küszöbölés Szegmentálás I.
Feladatok - BAR K+F Vámossy Zoltán 2010 Summer School on Image Processing (SSIP) nyári egyetem feladatai és saját ötletek alapján.
Differenciál számítás
Integrálszámítás Mire fogjuk használni az integrálszámítást a matematikában, hova szeretnénk eljutni? Hol használható és mire az integrálszámítás? (már.
Image Processing Toolbox múltkor: képek megjelenítése, betöltése, alapvető manipulációk Image Processing TB: további funkciók.
Matematika III. előadások Építőmérnök BSc szak PMMINB313
Lineáris programozás Definíció: Olyan matematikai programozási feladatot nevezünk lineáris programozási feladatnak, amelyekben az L halmazt meghatározó.
Vámossy Zoltán 2004 (H. Niemann: Pattern Analysis and Understanding, Springer, 1990) DIP + CV Bevezető II.
Folytonos jelek Fourier transzformációja
Rendszerek sajátfüggvényei és azok tulajdonságai Folytonos (FT) rendszerekkel foglalkozunk,de az eredmények átvihetők diszkrét rendszerekre is. kt)kt)
Diszkrét változójú függvények Fourier sora
Lineáris algebra.
Dr. Balogh Péter Gazdaságelemzési és Statisztika Tanszék DE-AMTC-GVK
Utórendezéses edényrendezés – RADIX „előre”
3. Vetületi ábrázolások számítási eljárásai
Ciklikus, lineáris kódok megvalósítása shift-regiszterekkel
Szükségünk lesz valamilyen spreadsheet / táblázat kezelő programra Pl. OpenOffice, MS Excel.
Idősor elemzés Idősor : időben ekvidisztáns elemekből álló sorozat
Lineáris programozás Elemi példa Alapfogalmak Általános vizsg.
Lokális optimalizáció Feladat: f(x) lokális minimumának meghatározása 0.Adott egy kezdeti pont: x 0 1.Jelöljünk ki egy új x i pontot, ahol (lehetőleg)
Leíró statisztika III..
BMEEPAG0202 CAD és építészinformatika / 2006 őszi félév 0 2D-3D számítógépes grafika BME Építészmérnöki Kar Építészeti Ábrázolás Tanszék Előadó: Batta.
Többváltozós adatelemzés
Alapfogalmak.
Adatleírás.
Folytonos eloszlások.
Készítők: Fajt Péter Vácz István Konzulens: Vámossy Zoltán Rendszám Felismerő Rendszer 3. évf.
Rendszerek stabilitása
Lineáris algebra.
Szabályozási Rendszerek 2014/2015 őszi szemeszter Előadás Automatizálási tanszék.
Nagy Szilvia 13. Konvolúciós kódolás
előadások, konzultációk
A HATÁROZOTT INTEGRÁL FOGALMA
Valószínűségszámítás II.
Többdimenziós valószínűségi eloszlások
Edényrendezés Név: Pókó Róbert Neptun: OYJPVP. Példa RADIX „előre” algoritmusra d=3 hosszú bináris számokra (r=2) Ekkor egy tömbbel meg lehet oldani a.
Számítógépes grafika és képfeldolgozás
Bevezetés a méréskiértékelésbe (BMETE80ME19) 2014/
2. Házi feladat „Digitális kép szűrése”. A feladat I. Az előzően beszerzett digitális kép szűrése Szűrés –Átlagoló szűrés 5×5-ös kernellel –Medián-szűrés.
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
HÁLÓZAT Maximális folyam, minimális vágás
Előrejelzés Összeállította: Sójáné Dux Ágnes. Előrejelzés Az időbeli folyamatok elemzésének segítségével lehetőség nyílik a korábban láthatatlan trendek.
Kontinuum modellek 1.  Bevezetés a kontinuum modellekbe  Numerikus számolás alapjai.
Manhertz Gábor; Raj Levente Tanársegéd; Tanszéki mérnök Budapesti Műszaki és Gazdaságtudományi Egyetem Mechatronika, Optika és Gépészeti Informatika Tanszék.
Integrálszámítás.
Jelkondicionálás.
Rangsoroláson és pontozáson alapuló komplex mutatók
A mesterséges neuronhálók alapjai
Bevezetés a mély tanulásba
Előadás másolata:

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

CV rendszer általános modellje

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

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.

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

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

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

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

Maszk használata

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!

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:

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

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)

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

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

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)

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):

Konvolúció és keresztkorreláció

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

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

Szűrő példák

Szűrő példák

Szűrő példák

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

Ö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

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

Á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:

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

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

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.

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

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)

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

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.

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

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

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

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

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)

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

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]

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

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

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

É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

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

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

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

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

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 

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

É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

Élesítés (sharpening) példa 1/9 (-10 - 80 - 80 -10 + 640 -80 -10 -80 -80) = 210/9 > 0 1/9 (-10 - 10 - 10 -10 + 80 -10 -10 -10 -10) = 0

É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

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

Első és másodrendű differenciák

É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

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

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

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

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

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

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

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.

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.

Kombináció / konvolúció 0.0030 0.0133 0.0219 0.0133 0.0030 0.0133 0.0596 0.0983 0.0596 0.0133 0.0219 0.0983 0.1621 0.0983 0.0219

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).