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

Élek detektálása Vámossy Zoltán 2004

Hasonló előadás


Az előadások a következő témára: "Élek detektálása Vámossy Zoltán 2004"— Előadás másolata:

1 Élek detektálása Vámossy Zoltán 2004
(Gonzales, Woods, Forsyth, Rehg, Hanson, Trucco, Verri, Thrun, Bradski anyagai alapján)

2 Vámossy Zoltán (Umeai Egyetem – Finnország) előadásai 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 This is the lecture 2 in Computer vision and it will include… <switch slide>

3 2. előadás 4. fejezet (pp. 67-94) 5. fejezet (pp. 95-121)
Jellemzők detektálása (Feature detection) Élek (Edges) Sarokpontok (Corners) 5. fejezet (pp ) Jellemzők osztályozása (Feature classification) Vonalak – szakaszok (Lines) Görbék (Curves) Ellipszisek (Ellipses) Deformálható kontúrok (Deformable contours)

4 É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 What is an edge? Does anyone know what an edge is? The definition is ” Edges are pixels at or around which the image values undergo a sharp variation”. <switch slide>

5 Általános jellemzők #1: élek (edges)
C B 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

6 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 So, why are we interested in edges? Why do we want to locate edges in a scene? ” Most elements like solid objects, shadows etc create edges”. By using edges, it is possible to find out what an object looks like and locate it.

7 Tipikus élprofilok Ugrás Rámpa Gerinc Tető Vonal

8 Hogyan találhatunk éleket?

9 É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)

10 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) Noise reduction: If you look at the left image, you can see that it is full of noise. By removing the noise (right image) things become much clearer and more easy to detect. Edge enhancement: A filter where its output is large at true edges and low elsewhere. That means a high intensity value at true edges and low intensity value where there is not an edge. Edge localisation: This step decides which values that belong to an edge and which values are noise.

11 É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 There are many different kinds of edge detection algorithms but most of them give the same result. The book concentrate on two of them and those are Canny and Sobel. These are two of the most common algorithms in Computer Vision.

12 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 Some definitions.

13 Él-irány, él-normális

14 Változás detektálás Kép deriváltja Differenciáló szűrők [1 -1]
Hátrafele differencia [-1 1] Előrehaladó differencia [1 -1] Központi differencia [ ]

15 Deriváltak, differenciák 2D-ben
Definició Közelítés Konvoluciós magok

16 Kép deriváltak Image I

17 É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;

18 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 The sobel algorithm takes an image and a sigma as input. It first performs noise reduction using a gaussian kernel and then it is filtered with a another, special kernel. Then calculate the gradient magnitude. If the magnitude for each pixel is greater than a threshold, tao, mark the pixel as an edge.

19 Sobel operátor -1 -2 -1 0 0 0 1 2 1 -1 0 1 -2 0 2 S1= S2 =
S1= S2 = Él-erősség, él-irány: Edge Magnitude = Edge Direction = S1 + S2 2 tan-1 S1 S2

20 Prewitt éldetektor image blurred élek x image blurred élek y átlagolás
x irányban Differenciáló szűrő x irányban and results image blurred élek y Átlagolás y irányban Differenciálás Y irányban results and

21 Sobel éldetektáló image átlagolás x irányban blurred Élek x
Differenciáló szűrő x irányban and results image blurred élek y Átlagolás Y irányban Differenciáló szűrés y irányban results and

22 Sobel éldetektáló Threshold Edges Image I

23 Sobel éldetektáló

24 Sobel éldetektáló

25 Sobel maszk: összefoglalás
Sobel maszk szeparálható! Éllel párhuzamos átlagolás

26 Robert keresztoperátor
1 0 0 -1 0 1 -1 0 + S = [ I(x, y) - I(x+1, y+1) ]2 + [ I(x, y+1) - I(x+1, y) ]2 vagy S = | I(x, y) - I(x+1, y+1) | + | I(x, y+1) - I(x+1, y) |

27 Robinson iránytű maszk

28 További maszkok Frei & Chen

29 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

30 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

31 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 zaj jobban el lesz távolítva

32 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

33 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

34 Marr Hildreth éldetektor
Gauss simítás Laplace  gradiens (derivált)  Laplace

35 Marr Hildreth éldetektor
(LoG) számítása

36 LoG Filter Y X

37 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

38 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ó n2 szorzás 2n szorzás

39 LoG szeparálhatóság n2 szorzás 4n szorzás

40 Szeparálhatóság Gauss szűrő Image g(x) g(y) + LoG szűrő gxx(x) g(x)
gyy(y) g(y)

41 LoG példa

42 LoG példa

43 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

44 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

45 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. The Canny Edge detector consists of three steps. An enhancder, supression and thresholding. It takes as input a normal image. Output: Kontúrok listái

46 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

47 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!

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

49 Canny éldetektor – Gauss deriváltja

50 Canny éldetektor – első két lépés

51 I. Canny élkiemelő 3. lépés: Erősség és normális meghatározás
Élerősség számítás (minden pixelre): Élnormális (orientáció) számítás:

52 I. Canny élkiemelő - outputja
Es = élerősség (milyen jó az él, a gradiens nagyságával arányos) Eo = élorientáció (milyen irányba mutat) A normálist tartalmazza The output is a strength image which shows how good the edges are. The strangth image are built up by the gradient so so bigger the change, the bigger value. The orientation image shows in what direction the edge is heading.Remember that the orientation image contains the normal with respect to the edges in point(i,j)

53 II. Non-max Suppression
Élek ott vannak, ahol a gradiensnek lokális maximuma van A Non-maxima suppression (nem maximumok elnyomása) célja: Fals élpontok eltávolítása, amelyek az élre merőleges irányban vannak Egy vastagságú élekké zsugorítás There can still be local maximas (i.e. false edges), get rid of these false edges by supressing the candidates. It is done by supressing the edges to one pixel.

54 II. Non-max Suppression-algoritmus
1. Minden (i, j)-re határozzuk meg azt a dk (0, 45, 90, 135) irányt, ami legjobban közelíti az EO(i, j) élnormálist 2. Ha Es(i,j) < legalább egy szomszédjánál a dk irányokban, akkor IN(i,j) = 0 legyen (elnyomás), egyébként IN(i, j) = Es(i,j) Eredmény: IN(i, j) vékonyított éleket tartalmazó kép a nem maximumok eltávolítása után The image IN is a new image which contains the thinned edges.

55 III. Canny – harmadik lépés oka
Fig 4.5 Show Fig. 4.5 The figure shows the strength image after supression. Élkiemelő - balról jobbra =3, =2, =1

56 III. Hysteresis thresholding
Miért szükséges a hysteresis küszöbölés? Ha a küszöb túl alacsony, akkor fals élpontok maradnak A küszöb felett, illetve alatt is lehet maximum erősség Ha az élek értéke a küszöb körül ingadozik, akkor sok szakadás lehet The last step in the edge detection is to threshold out false edges. Using a normal threshold may cause problems. Does anyone know why we can’t apply a regular threshold? If you choose a threshold which is too low, there will still be some false edges left. A real edge might have a value below or obove the edge. With a normal threshold, this edge will be set to zero and then lost. Therefore, apply Hysteres threshold.

57 Példa

58 Canny, alacsony threshold

59 Canny, magas threshold

60 III. Hysteresis thresholding
Definiáljunk két thresholdot Minden IN(i, j) élpontra 1. Keressük meg a következő IN(i, j) élpontot, hogy 2. IN(i, j)-től kiindulva kövessük a lokális maximumok láncát az élnormálisokra merőleges irányban mindaddig, amíg Jelöljünk meg minden maglátogatott pontot (lista) Tehát ha a felső küszöbnél nagyobb, akkor vegyük fel élnek Ha az alsó küszöb alatt van, akkor nem él Ha a kettő között van, akkor vegyük fel élnek, ha egy szomszédos pixel élhez tartozik

61 III. Hysteresis thresholding
Eredmény: A kapcsolódó élpixelek listái

62 Canny eredmények ‘Y’ or ‘T’ csatlakozási probléma a Canny operátornál

63 Canny: Sarok effektus

64 LoG és Canny összehasonlítás
Marr-Hildreth és Canny éldetektorok Gauss simítás Derivált számítás x és y irányokban Gradiens nagyság meghatározás Gradiens nagyság küszöbölés Marr-Hildreth és Canny különbségek Marr-Hildreth másodrendű deriváltat használ Marr-Hildreth a zéró átmenetek nagyságát küszöböli

65 Marr-Hildreth operátor
Image 2g(x) Find zero-crossings compute slope Threshold

66 Canny gx(x,y) gy(x,y) Gradiens nagyság Image Non-maximum suppression
Hysteresis thresholding gy(x,y) Gradiens irány

67 Élpontosítás más módszerei

68 Ötlet 1: Bilineáris interpoláció
Használjunk bilineáris interpolációt szubpixeles pontosság érdekében Gradiens csökkenés: olyan pont keresése, ami maximalizálja S-t

69 Ötlet 2: Élkövetés Következő pont: Merőleges a gradiensre
Használjunk Hysteresis-t

70 SUSAN algoritmus Konturkeresés nem differenciáló operátorral
Smith és Brady ötlete (http://www.fmrib.ox.ac.uk/~steve/susan/susan/node1.html)

71 SUSAN algoritmus A maszk közepén levő pont a nucleus (középpont)
Az USAN egy rövidítés, jelentése: univalue segment assimilating nucleus

72 SUSAN algoritmus A SUSAN jelentése: smallest univalue segment assimilating nucleus.

73 SUSAN algoritmus A nucleus és a maszkban lévő pontok eltérése alapján megjelölés: A hasonló intenzitásúak száma A területen levő élek meghatározása az élválasz függvénnyel történik (g geometriai küszöb)

74 SUSAN algoritmus Az ugrásszerű átmenet elkerülése, stabilabb eredményt ad (táblázat!)

75 Haralick felületi modellje
Éldetektálás az intenzitásfelületre illesztett térbeli polinommmal

76 Felületi modell alkalmazása
Facet model: Felületi modellt tételezünk fel – közelítjük az intenzitás felületet általában térbeli polinommal és ebből határozunk meg éleket Haralick bi-cubic modellje: Legkisebb négyzetek módszerével illesztünk kétparaméteres polinomot Adott pixel élpont ha: Második derivált 0 Harmadik derivált negatív f(x, y)=k1+ k2x+ k3y+ k4x2+ k5xy+ k6y2+ k7x3+ k8x2y+ k9xy2+ k10y3 keressük a felületet ilyen alakban (1)

77 Haralick éldetektora Irány menti deriváltak adott θ irányban:
A gradiens szöge a pozitív y tengellyel (0, 0)-ban:

78 Haralick éldetektora Változó behelyettesítéssel (1) x = r sinθ, y = r cosθ: c0 = k1 c1 = k2 sinθ + k3 cosθ c2 = k4(sinθ)2 + k5sinθcosθ + k6(cosθ)2 c3 = k7(sinθ)3 + k8(sinθ)2cosθ + k9sinθ(cosθ) k10(cosθ)3 Második derivált 0, harmadik negatív, -> c3 < 0 és |c2 / 3c3| < r0

79 ki-k számítása maszkkal (Shah könyv)

80 Haralick algoritmusa Keressük k1 k2 k3 k4 k5 k6 k7 k8 k9 k10 értéket a legkisebb négyzetek módszerével, vagy az előző konvolúciós maszkokkal Kiszámoljuk θ, sinθ, cosθ Kiszámoljuk c2 = k4(sinθ)2 + k5sinθcosθ + k6(cosθ)2 Kiszámoljuk c3 = k7(sinθ)3 + k8(sinθ)2cosθ + k9sinθ(cosθ)2 + k10(cosθ)3 Ha c3 < 0 és |c2 / 3c3| < r0, akkor élpont


Letölteni ppt "Élek detektálása Vámossy Zoltán 2004"

Hasonló előadás


Google Hirdetések