Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
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 (
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
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.