Articles

Introduksjon TIL SILE( Skala Invariant Funksjonen Transform)

Deepanshu Tyagi

Følg

div

16.mars 2019 · 7 min lese sift står For Scale-INVARIANT Feature Transform Og ble først presentert i 2004 av d. lowe, university of british columbia. SIFT er invariance til bilde skala og rotasjon. Denne algoritmen er patentert, så denne algoritmen er inkludert i Den Ikke-frie modulen I OpenCV.

store fordeler med sift er

  • lokalitet: funksjoner er lokale, så robust til okklusjon og rot (ingen tidligere segmentering)
  • egenart: individuelle funksjoner kan matches til en stor database med objekter
  • antall: mange funksjoner kan genereres for selv små objekter
  • effektivitet: Kan enkelt utvides til et bredt spekter av forskjellige funksjonstyper, med hver legge robusthet

Dette er en del av en 7-serie Funksjon Deteksjon og Matching. Introduksjon Til Harris Corner Detector

  • Introduksjon TIL SURF (Speeded-Up Robuste Funksjoner)
  • Introduksjon TIL RASK (Funksjoner Fra Akselerert Segment Test)
  • Introduksjon TIL KORT (Binære Robuste Uavhengige Elementære Funksjoner)
  • Introduksjon TIL ORB (Orientert RASK OG Rotert KORT)
  • SIFT er ganske involvert algoritme. Det er hovedsakelig fire trinn involvert I SIFT algoritmen. Vi vil se dem en etter en.

    • Skala-plass topp utvalg: Potensiell plassering for å finne funksjoner.
    • Keypoint Lokalisering: Nøyaktig finne funksjonen keypoints.
    • Orientering Oppdrag: Tilordne orientering til keypoints.
    • Keypoint descriptor: Beskriver keypoints som en høy dimensjonal vektor.
    • Keypoint Matching

    Scale-space peak Selection

    Virkelige objekter er meningsfulle bare i en viss skala. Du kan se en sukkerbit perfekt på et bord. Men hvis du ser på hele milky way, så eksisterer det bare ikke. Denne multi-skala naturen av objekter er ganske vanlig i naturen. Og en skala plass forsøker å gjenskape dette konseptet på digitale bilder.

    skalarommet til et bilde er en funksjon l(x,y,σ) som er produsert fra konvolusjonen av en gaussisk kjerne(uskarphet) i forskjellige skalaer med inngangsbildet. Skala-plass er delt inn i oktaver og antall oktaver og skala avhenger av størrelsen på det opprinnelige bildet. Så vi genererer flere oktaver av det opprinnelige bildet. Hver oktavs bildestørrelse er halvparten av den forrige.

    Uskarphet

    i en oktav blir bildene gradvis uskarpe ved Hjelp Av Gaussian Blur operator. Matematisk er» uskarphet » referert til Som konvolusjonen Til Den Gaussiske operatøren og bildet. Gaussian blur har et bestemt uttrykk eller» operatør » som brukes på hver piksel. Hvilke resultater er det uskarpe bildet.

    Uskarpt bilde

    g er gaussisk uskarphet operatør og jeg er et bilde. Mens x,y er plasseringskoordinatene og σ er parameteren «skala». Tenk på det som mengden uskarphet. Større verdi, større uskarphet.

    Gaussisk Uskarphet operatør

    hund(forskjell på gaussisk kjerne)

    nå bruker vi de uskarpe bildene til å generere et annet sett med bilder, forskjellen på gaussere (hund). Disse Hunden bildene er stor for å finne ut interessante keypoints i bildet. Differansen av Gaussisk er avledet fra differansen Av Gaussisk uskarphet av et bilde med to forskjellige σ, la det være σ og kσ. Denne prosessen er gjort for forskjellige oktaver av bildet I Den Gaussiske Pyramiden. Det er representert i bildet nedenfor:

    finne keypoints

    til nå har vi generert en skala plass og brukt skala plass til å beregne forskjellen på gaussere. De brukes da til å beregne Laplacian Av Gaussiske tilnærminger som er skala invariant.

    en piksel i et bilde sammenlignes med sine 8 naboer samt 9 piksler i neste skala og 9 piksler i tidligere skalaer. På denne måten blir totalt 26 sjekker gjort. Hvis det er en lokal extrema, er det en potensiell keypoint. Det betyr i utgangspunktet at keypoint er best representert i den skalaen.

    Keypoint Lokalisering

    Key0points generert i forrige trinn produsere mye keypoints. Noen av dem ligger langs en kant, eller de har ikke nok kontrast. I begge tilfeller er de ikke like nyttige som funksjoner. Så vi blir kvitt dem. Tilnærmingen ligner den som brukes I Harris Corner Detector for å fjerne kantfunksjoner. For lav kontrast funksjoner, vi bare sjekke deres intensiteter.

    De brukte Taylor-serien utvidelse av skala plass for å få en mer nøyaktig plassering av extrema, og hvis intensiteten på denne extrema er mindre enn en terskelverdi (0,03 som per papir), det er avvist. Hunden har en høyere respons for kanter, så kantene må også fjernes. De brukte en 2×2 Hessisk matrise (H) for å beregne hovedkrumningen.

    orientering oppdrag

    nå har vi legitime keypoints. De har blitt testet for å være stabile. Vi vet allerede skalaen der tastaturet ble oppdaget (det er det samme som skalaen til det uskarpe bildet). Så vi har skala invariance. Den neste tingen er å tildele en orientering til hvert tastepunkt for å gjøre det rotasjon invariance.

    et nabolag er tatt rundt keypoint-plasseringen avhengig av skalaen, og gradientstørrelsen og retningen beregnes i den regionen. Et orienteringshistogram med 36 hyller som dekker 360 grader er opprettet. La oss si at gradientretningen på et bestemt punkt (i «orienteringsinnsamlingsregionen») er 18.759 grader, så vil den gå inn i 10-19 graders bin. Og «mengden» som legges til hyllen er proporsjonal med størrelsen på gradienten på det punktet. Når du har gjort dette for alle piksler rundt keypoint, vil histogrammet ha en topp på et tidspunkt.

    den høyeste toppen i histogrammet tas, og en topp over 80% av den anses også for å beregne orienteringen. Det skaper keypoints med samme sted og skala, men forskjellige retninger. Det bidrar til stabiliteten av matching.

    Keypoint descriptor

    på dette punktet har hvert keypoint en plassering, skala, orientering. Neste er å beregne en descriptor for det lokale bildet regionen om hver keypoint som er svært karakteristiske og invariant som mulig til variasjoner som endringer i synspunkt og belysning.

    for å gjøre dette, er et 16×16-vindu rundt keypoint tatt. Den er delt inn i 16 underblokker av 4×4 størrelse.

    For each sub-block, 8 bin orientation histogram is created.

    So 4 X 4 descriptors over 16 X 16 sample array were used in practice. 4 X 4 X 8 directions give 128 bin values. It is represented as a feature vector to form keypoint descriptor. Denne funksjonen vektor introduserer noen komplikasjoner. Vi må bli kvitt dem før vi fullfører fingeravtrykket.

    1. Rotasjonsavhengighet funksjonsvektoren bruker gradientretninger. Klart, hvis du roterer bildet, endres alt. Alle gradientretninger endres også. For å oppnå rotasjonsuavhengighet trekkes keypoints rotasjon fra hver retning. Dermed er hver gradientretning i forhold til keypointens orientering.
    2. Belysningsavhengighet Hvis vi terskler tall som er store, kan vi oppnå belysningsuavhengighet. Så, et hvilket som helst tall (av 128) større enn 0,2 endres til 0,2. Denne resulterende funksjonsvektoren er normalisert igjen. Og nå har du en belysning uavhengig funksjon vektor!

    Keypoint Matching

    Keypoints mellom to bilder matches ved å identifisere sine nærmeste naboer. Men i noen tilfeller, den nest nærmeste-match kan være svært nær den første. Det kan skje på grunn av støy eller andre grunner. I så fall er forholdet mellom nærmeste avstand til nest nærmeste avstand tatt. Hvis det er større enn 0,8, blir de avvist. Det eliminerer rundt 90% av falske kamper mens forkaster bare 5% riktige kamper, som per papiret.

    Implementering

    jeg kunne implementere sift ved Hjelp Av OpenCV(3.4). Her er hvordan jeg gjorde det:

    Github lenke for koden: https://github.com/deepanshut041/feature-detection/tree/master/sift

    Legg igjen en kommentar

    Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *