800 likes | 1.03k Views
Élek detektálása. Vámossy Zoltán 2004 (Gonzales, Woods, Forsyth, Rehg, Hanson, Trucco, Verri, Thrun, Bradski anyagai alapján). E. Trucco, A. Verri: Introductory techniques for 3-D Computer Vision (Prentice Hall 1998). Vámossy Zoltán (Umeai Egyetem – Finnország) előadásai alapján.
E N D
Élek detektálása Vámossy Zoltán 2004 (Gonzales, Woods, Forsyth, Rehg, Hanson, Trucco, Verri, Thrun, Bradski anyagai alapján)
E. Trucco, A. Verri:Introductory techniques for 3-D Computer Vision (Prentice Hall 1998) Vámossy Zoltán (Umeai Egyetem – Finnország)előadásai alapján
2. előadás • 4. fejezet (pp. 67-94) • Jellemzők detektálása (Feature detection) • Élek (Edges) • Sarokpontok (Corners) • 5. fejezet (pp. 95-121) • Jellemzők osztályozása (Feature classification) • Vonalak – szakaszok (Lines) • Görbék (Curves) • Ellipszisek (Ellipses) • Deformálható kontúrok (Deformable contours)
Élek (edges) • Mit értünk él alatt? • Élek olyan pixelek, ahol, vagy ami körül a kép intenzitás-értékei erőteljesen megváltoznak
Általános jellemzők #1: élek (edges) B A C D • A: Hirtelen mélységi változás (discontinuity) • B: Felület normálisának változása • C: Megvilágítás változása: árnyékok, világítás változás • D: Visszaverődésben változás: felület tulajdonság, jelek
Miért fontosak számunkra az élek? • A legtöbb elem, objektum, vagy azok árnyékai éleket generálnak • Az élek megtalálásával sokszor az objektum alakját és helyét meg tudjuk határozni
Tipikus élprofilok • Ugrás • Rámpa • Gerinc • Tető • Vonal
Élkeresés 101 im = imread('bridge.jpg'); image(im); figure(2); bw = double(rgb2gray(im)); image(bw); gradkernel = [-1 1]; dx = abs(conv2(bw, gradkernel, 'same')); image(dx); colorbar; [dx,dy] = gradient(bw); gradmag = sqrt(dx.^2 + dy.^2); image(gradmag); colorbar colormap(gray(255)) colormap(default)
Az éldetektálás lépései • Zajcsökkentés (Noise reduction) • Élkiemelés (Edge enhancement) • Éldetektálás (Edge detection) • Éllokalizálás (Edge localisation)
Éldetektálók • Canny éldetektáló* • Roberts éldetektáló • Sobel éldetektáló* • Prewitt éldetektáló • Kirsch éldetektáló • Laplace éldetektáló és a LoG (Marr-Hildreth) • Susan él-, sarokpont detektáló • Haralick módszere *: a könyvben csak ez van
Definiciók • Él-normális = merőleges az élre, a maximális intenzitás-változás iránya, N(i, j) I(i, j) • Él-irány = az él iránya, merőleges a normálisra • Él-pozíció = ahol a képen elhelyezkedik az él • Él-erősség = megmutatja mennyire „jó” egy él. Nagy változás -> nagy erősség
Változás detektálás • Kép deriváltja • Differenciáló szűrők Hátrafele differencia [-1 1] [1 -1] Előrehaladó differencia [-1 0 1] Központi differencia
Deriváltak, differenciák 2D-ben • Definició • Közelítés • Konvoluciós magok
Kép deriváltak Image I
Élnormális megjelenítése figure(5); hold on; image(smooth); colormap(gray(255)); [m,n] = size(gradmag); edges = (gradmag > 0.3 * gmax); inds = find(edges); [posx,posy] = meshgrid(1:n,1:m); posx2=posx(inds); posy2=posy(inds); gm2= gradmag(inds); sintheta = dx(inds) ./ gm2; costheta = - dy(inds) ./ gm2; quiver(posx2,posy2, gm2 .* sintheta / 10, -gm2 .* costheta / 10,0); hold off;
Prewitt és Sobel éldetektálás • Kevésbé zajérzékeny (3x3 maszk jobban eltünteti a zajokat) • A nagyobb maszkméret miatt a meredek élek több pixel szélesen jelentkeznek • Főbb lépések • Input: Kép és küszöb • Képszűrés • Gradiens nagyság számolása • Küszöbölés
Sobel operátor Edge Magnitude = 2 2 S1 + S2 S1 tan-1 S2 Edge Direction = -1 -2 -1 0 0 0 1 2 1 -1 0 1 -2 0 2 -1 0 1 S1= S2 = Él-erősség, él-irány:
Prewitt éldetektor image blurred élekx Differenciáló szűrő x irányban átlagolás x irányban and results image blurred élek y Differenciálás Y irányban Átlagolás y irányban results and
Sobel éldetektáló image blurred Élek x átlagolás x irányban Differenciáló szűrő x irányban and results image blurred éleky Differenciáló szűrés y irányban Átlagolás Y irányban results and
Sobel éldetektáló Threshold Edges Image I
Sobel maszk: összefoglalás Sobel maszk szeparálható! Éllel párhuzamos átlagolás
Robert keresztoperátor [ I(x, y) - I(x+1, y+1) ]2 + [ I(x, y+1) - I(x+1, y) ]2 1 0 0 -1 0 1 -1 0 + S = vagy | I(x, y) - I(x+1, y+1) | + | I(x, y+1) - I(x+1, y) | S =
Robinson iránytű maszk 0 1 2 -1 0 1 -2 -1 0 1 2 1 0 0 0 -1 -2 -1 -1 0 1 -2 0 2 -1 0 1 2 1 0 1 0 -1 0 -1 -2 0 -1 -2 -1 0 -1 2 1 0 -1 -2 -1 0 0 0 1 2 1 1 0 -1 2 0 -2 1 1 -1 -2 -1 0 -1 0 1 0 1 2
További maszkok Frei & Chen
Laplace • Ahol a gradiens maximális, ott a második derivált előjelet vált (0) • Elmosódott élek esetén pontosabb lokalizálás • Ebben az esetben csak az élek helyét tudjuk meghatározni, az irányát nem • Az operátor nem érzékeny az elforgatásra, izotrópikus • Zajérzékeny -> • Simítás előtte
Gauss simítás + Laplace (LoG) • Zajra nagyon érzékeny éldetektálók esetében előbb simítást szoktak alkalmazni • Például Gauss szűrőt
Gauss simítás • A Gauss szűrő paraméterének hatása • növekedésével több pixel kerül az átlagolásba • növekedésével a kép jobban el lesz mosva • növekedésével a zajjobban el lesz távolítva
Gauss simítás + Laplace (LoG) • Alkalmazhatjuk közvetlenül a Gauss szűrő Laplace-át – második derivált r szerint (Laplacian of Gaussian) – LoG • Mexikói kalap
LoG - Marr Hildreth éldetektáló • Robusztus • Simított kép deriváltját közelíti • A 0 átmeneteket kell vizsgálni • Stabilabb zérushelyek jelölik az éleket, mert nem meredek éleknél is pontos
Marr Hildreth éldetektor • Gauss simítás • Laplace • gradiens (derivált) • Laplace
Marr Hildreth éldetektor • (LoG) számítása
LoG Filter Y X
Zéró átmenetek detektálása • Négy eset: • {+,-} • {+,0,-} • {-,+} • {-,0,+} • Zéró átmenetek (slope) számítása {a, -b} -> |a+b|. • Éldetektálás • zéróátmenet nagyságának küszöbölése
LoG szeparálhatóság • Hasonlóan a Gauss szűrőhöz • A kétdimenziós Gauss szűrő két egydimenzióssá alakítható n2szorzás 2nszorzás
LoG szeparálhatóság n2szorzás 4nszorzás
Szeparálhatóság Gauss szűrő Image + g(x) g(y) LoG szűrő gxx(x) g(x) Image + gyy(y) g(y)
Canny éldetektor • John Canny, “Finding Edges and Lines in Images”, Master’s Thesis, MIT, June 1983. • “Optimális” maszk – Gaussian szűrő • Non-maximum suppression – eltávolítja a maximumra merőleges élgyanús pontokat • Hysteresis thresholding – hosszabb kontúrok készítése • Subpixel accuracy (eredetiben nincs) – subpixeles pontosság
Ideális éldetektáló Milyen kritériumoknak kell megfelelnie egy ideális éldetektálónak? • Megbízható • mindent valódi élt detektál • nem detektál hibás éleket (zajos kép) • Az éleket pontosan lokalizálja • Minden élt pontosan egyszer jelez
Canny éldetektor • Elsősorban lépcsős élekre • A kép Gauss-zajjal terhelt • Három lépést tartalmaz Input Image Kiemelés Nonmax_suppression Hysteres._thresh. Output: Kontúrok listái
I. Canny élkiemelő • Az élkiemelő elemei: • (Lineáris) konvolúció Gauss szűrővel • Gradiens számolás • Normális és erősség (nagyság) számítás
I. Canny élkiemelő - megjegyzés 1.lépés: Konvolúció • J = I G • I = eredeti kép (image) • G = Gauss szűrő magja (kernel) • Nagyobb szűrő jobban csökkenti a zajt, lassabb, de kevésbé lokalizálja jól az éleket!
I. Canny élkiemelő 2. lépés: Derivált számítás Minden I(i,j) pixelre kiszámoljuk a parciális deriváltakat • Megjegyzés: Konvolúció alkalmazása (A kép és a Gauss fgv. konvolúciójának első deriváltja ekvivalens a kép és a Gauss fv. első deriváltjának konvolúciójával. Zajszűrés és éldetektálás kombinálható.)