Kantdeteksjon og Fargebilder Lars Vidar Magnusson April 25, 2017 Delkapittel 10.2.6 More Advanced Techniques for Edge Detection Delkapittel 6.1 Color Fundamentals Delkapittel 6.2 Color Models
Marr-Hildreth Kantdeteksjon Marr-Hildreth kantdeteksjon baserer seg på at endringer i et bilde er avhengig av størrelsen (scale). Den første vellykede kantdetektoren som inkluderer mer avansert analyse. De foreslår bruk av Laplacian of Gaussian (LoG) operator 2 G(x, y) = 2 G(x, y) + 2 G(x, y) x 2 y 2 x 2 +y 2 x 2 e 2σ 2 [ x = 2 = x σ 2 e [ x 2 = σ 1 4 σ 2 [ x 2 + y 2 2σ 2 = σ 4 + 2 x 2 +y 2 y 2 e 2σ 2 ] x 2 +y 2 2σ 2 + y ] e x2 +y 2 2σ 2 + [ y 2 ] e x2 +y 2 2σ 2 [ y σ 2 e σ 4 1 σ 2 x 2 +y 2 2σ 2 ] ] e x2 +y 2 2σ 2
Marr-Hildreth Kantdeteksjon Marr-Hildreth foreslår å bruke 2 G(x, y) operatoren i ulike størrelser for å detektere de ulike kantene. [ x 2 2 + y 2 2σ 2 ] G(x, y) = e x2 +y 2 2σ 2 Maskene kan lages på ulike måter 1 Sample funksjonen over og normaliser koeffisientene slik at de summer til 0 2 Sample G(x, y) = e x2 +y 2 2σ 2 og bruk et Laplacian filter (resultatet av konvolusjon med et filter som summer til 0 summer også til 0) σ 4
Marr-Hildreth Kantdeteksjon Algoritmen består i å konvolere bildet med en eller flere utgaver av LoG g(x, y) = [ 2 G(x, y)] f (x, y) Dette kan like gjerne utføres i følgende rekkefølge (det er lineære operasjoner) g(x, y) = 2 [G(x, y) f (x, y)] Algoritmen oppsumert (for én størrelse) 1 Konvoler bildet med et Gaussian filter for å fjerne støy 2 Finn Laplacian bildet ved å konvolere med Laplacian filter 3 Zero-crossing (Nullkrysning) identifiserer kanter
Canny Kantdeteksjon Canny algoritmen er de facto standard for kantdeteksjon i mange av dagens platformer. Basert på følgende kriterier Low error rate - så lite feil som mulig) Good localization - identifiserte kanter skal ligge så nærme faktiske kanter som mulig Single edge respons - identifisere bare en kant for hver faktiske kant Kriteriene ble formulert matematisk slik at Canny kunne finnne beste løsning Kommentar HIOF har forsket de siste årene på å forbedre ytelsen til algoritmen på faktiske bilder
Canny Kantdeteksjon Canny kom frem til tre ulike steg i sin algoritme Finn et utjevnet gradientbilde ved å bruke førstederiverte av en Gaussian Utfør nonmax suppression (ikkemax-fjerning) Bruk hysteresis thresholding (dual threshold oppsett) for å finne Det finne ulike implementasjoner for hvert av disse stegene
Canny Kantdeteksjon - Gradientbildet Canny foreslå å bruke til å finne gradientbildet (gitt i en dimensjon) d x dx e 2 2σ 2 x 2 σ 2 e 2σ 2 = x Dette kan vi approksimere med å først utjevne f s(x, y) = G(x, y) f (x, y) og deretter konvolere med et deriveringsfilter e.g. Sobel Vi finner så og M(x, y) = g 2 x + g 2 y α(x, y) = tan 1 g y g x Det finnes også andre tilnærminger Matlab bruker en-dimensjonal Gaussian og deriveringsmaske
Canny Kantdeteksjon - Nonmax Suppression Nonmax suppression prøver å minimalisere antall doble kanter. Algoritmen fungerer ved å utføre følgende på hvert punkt (x, y). 1 Finn retningen d som passer best med kanten i α(x, y) 2 Hvis M(x, y) er mindre enn minst en av sine naboer langs d blir g N (x, y) = 0, hvis ikke g N (x, y) = M(x, y) g N (x, y) er det ikkemaks-fjernede (nonmax suppressed) bildet
Canny Kantdeteksjon - Hysteresis Thresholding Hysteresis thresholding er det det siste steget i algoritmen, og det er designet for å minimalisere uekte kanter. Fungerer med å bruke to threshold grenser T H og T L som angir henholdvis en høy og lav grense. Vi lager to nye bilder.. g NH (x, y) = g N (x, y) T H og g NL (x, y) = g N (x, y) T L && g N (x, y) < T H Vi har et bildet g NH (x, y) med strong (sterke) kanter, og et bildet G NL (x, y) med weak (svake) kanter Det endelige bildet g(x, y) inneholder alle kantene i g NH (x, y), samt alle kantene i g NL (x, y) som er koblet (8-koblet) med en kant i g NH (x, y).
Grunnleggende om Farger Det synlige lys er som vi har vært innom tidligere en del av det elektromagnetiske spektrum.
Grunnleggende om Farger Det finnes ingen entydig definisjon om hva som er hva når det gjelder farger CIE definerte i 1931 følgende.. Blå: 435.8 nm Grønn: 546.1 nm Rød: 700 nm
Grunnleggende om Farger Vi har to måter å blande farger på; additive og subtraktiv
Fargemodeller En fargemodel er en metode for å spesifisere en farge colorspace, color system... Hvert system lar deg spesifisere en farge i et koordinatsystem RGB CMY / CMYK HSI En modell er typisk tilpasset hardware eller for sluttvisning
Fargemodeller - RGB RGB er en modell som spesifiserer farger ved hjelp av primærfargene rød, grønn og blå En farge angis i et kartesisk system gitt under
Fargemodeller - RGB Et punkt består av en 3-tuple (alternativt kan vi se det som tre separate bilder) Hver kanal blir typisk representert med samme antall bits Det er vanlig med 8 bit Et bilde i full-color (fullfarge) har typisk 3 8 = 24 bits per element i bildet Dette gir totalt (2 8 ) 3 = 16777216 mulige farger Angis enten som.. flyttall i intervallet [0, 1] decimal i intervallet [0, 255] hexadecimal i intervallet [0, ff ]
Fargemodeller - CMY CMY bruker sekundærfargene (primær pigmentfargene) til å angi en farge cyan, magenta og yellow En enhet som skal gi en farge (e.g. printer) konverterer typisk fra RGB til CMY C 1 R M = 1 G Y 1 B CMY modellen blir normalt utvidet med en dedikert svart farge (CMYK)
Fargemodeller - HSI HSI benytter seg av helt andre begreper for å spesifisere en farge Hue Saturation Intensity Modellen passer bedre med hvordan vi oppfatter farger Skiller farge fra intensitet!
Konvertere fra RGB til HSI Vi kan konvertere fra RGB til HSI. { θ if B G H = 360 θ if B > G hvor { } θ = cos 1 0.5[(R G) + (R B)] [(R G) 2 + (R B)(G B)] 1/2 S = 1 3 [min(r, G, B)] R + G + B I = 1 (R + G + B) 3
Konvertere fra HSI til RGB Vi kan konvertere fra HSI til RGB, men vi må ta høyde for vinkelen til hue Når 0 H < 120 konverterer vi på følgende vis... [ R = I 1 + S cos H ] cos(60 H) G = 3I (R + B) B = I (1 S)
Konvertere fra HSI til RGB Når 120 H < 240 konverterer vi på følgende vis... R = I (1 S) ] S cos H G = I [1 + cos(60 H ) H er H 120 B = 3I (R + G)
Konvertere fra HSI til RGB Når 240 H < 360 konverterer vi på følgende vis... R = 3I (G + B) G = I (1 S) H er H 240 ] S cos H B = I [1 + cos(60 H )