Articles

introduction to SIFT( Scale Invariant Feature Transform)

Deepanshu Tyagi

Follow
maalis 16, 2019 · 7 min read

Sift tulee sanoista Scale-invariant feature Transform, ja sen esitti ensimmäisen kerran vuonna 2004 D. Lowe, University of British Columbia. SIFT on invarianssi kuvan mittakaavassa ja kierto. Tämä algoritmi on patentoitu, joten tämä algoritmi sisältyy Ei-vapaa moduuli OpenCV.

seulonnan tärkeimmät edut ovat

  • lokaalisuus: ominaisuudet ovat paikallisia, joten okkluusiota ja sotkua (ei edeltävää segmentointia)
  • erottuvuus: yksittäiset ominaisuudet voidaan sovittaa suureen objektitietokantaan
  • määrä: pienillekin kohteille voidaan luoda monia ominaisuuksia
  • tehokkuus: lähes reaaliaikainen suorituskyky
  • laajennettavuus: voidaan helposti laajentaa laajaan valikoimaan erilaisia ominaisuustyyppejä, ja jokainen lisäominaisuus

Tämä on osa 7-sarjan ominaisuuksien tunnistusta ja sovittamista. Muita artikkeleita olivat

  • Introduction To Feature Detection And Matching
  • Introduction to Harris Corner Detector
  • Introduction to SURF (Speeded-Up Robust Features)
  • Introduction to fast (Features from Accelerated Segment Test)
  • Introduction to BRIEF (Binary Robust Independent Elementary Features)
  • Introduction to ORB (Oriented FAST and turned BRIEF)

SIFT on melkoinen mukana oleva algoritmi. SIFT-algoritmissa on pääasiassa neljä vaihetta. Näemme heidät yksitellen.

  • mittakaava-avaruuden piikin valinta: Mahdollinen sijainti löytää ominaisuuksia.
  • Keypointin lokalisointi: ominaisuuksien keypointien tarkka paikallistaminen.
  • Orientaatiojako: orientaation osoittaminen näppäimistöihin.
  • Keypoints descriptor: kuvaten keypointeja suuriulotteiseksi vektoriksi.
  • Keypointsovitus

Asteikkoavaruuden huippuvalinta

reaalimaailman kohteet ovat merkityksellisiä vain tietyssä mittakaavassa. Sokeripalan voi nähdä täydellisesti pöydällä. Mutta jos tarkastellaan koko Linnunrataa, niin sitä ei yksinkertaisesti ole olemassa. Tämä esineiden moniulotteisuus on luonnossa melko yleistä. Mittakaava-avaruus yrittää kopioida tätä konseptia digitaalisiin kuviin.

kuvan mittakaava-avaruus on funktio L(x,y,σ), joka syntyy Gaussin ytimen konvoluutiosta(sumentumisesta) eri asteikoilla syötekuvan kanssa. Mittakaava-avaruus on erotettu oktaaveihin ja oktaavien ja mittakaavan määrä riippuu alkuperäisen kuvan koosta. Joten luomme useita oktaavia alkuperäisestä kuvasta. Jokaisen oktaavin kuvakoko on puolet edellisestä.

hämärtää

oktaavin sisällä kuvat sumentuvat asteittain Gaussin Sumeusoperaattorin avulla. Matemaattisesti ”sumentumisella” tarkoitetaan Gaussin operaattorin konvoluutiota ja kuvaa. Gaussin sumennuksella on tietty lauseke eli” operaattori”, jota sovelletaan jokaiseen pikseliin. Tuloksena on kuvan hämärtyminen.

Blurred image

g on Gaussin sumutusoperaattori ja I on kuva. Kun taas x, y ovat sijaintikoordinaatit ja σ on ”mittakaava” parametri. Ajattele sitä sumennuksen määränä. Suurempi arvo, suurempi suhahdus.

Gaussin Sumuttaja

koira(ero Gaussin ytimestä)

nyt käytämme näitä sumennettuja kuvia tuottamaan toisen kuvajoukon, Gaussin (koiran) eron. Nämä koirakuvat ovat loistava löytää mielenkiintoisia näppäimistöt kuvan. Gaussin erotus saadaan Gaussin blurrauksen erotuksena kuvasta, jossa on kaksi eri σ, olkoon se σ ja kσ. Tämä prosessi tehdään Gaussin pyramidin kuvan eri oktaaveille. Se on esitetty alla olevassa kuvassa:

löytämällä kepointit

tähän asti olemme luoneet mittakaava-avaruuden ja käyttäneet mittakaava-avaruutta Gaussin erojen laskemiseen. Näitä käytetään sitten laskemaan Laplacian, Gaussin likiarvot, jotka ovat asteikko invariantti.

yhtä kuvapistettä verrataan sen 8 naapuriin sekä 9 kuvapistettä seuraavassa asteikossa ja 9 kuvapistettä aiemmissa asteikoissa. Näin tarkastuksia tehdään yhteensä 26. Jos kyseessä on paikallinen extrema, se on mahdollinen keypoint. Se tarkoittaa periaatteessa, että keypoint on parhaiten edustettuna tässä mittakaavassa.

Keypointin lokalisointi

edellisessä vaiheessa luodut avainpisteet tuottavat paljon keypointeja. Osa niistä makaa reunassa tai niissä ei ole tarpeeksi kontrastia. Kummassakaan tapauksessa ne eivät ole yhtä hyödyllisiä kuin ominaisuudet. Joten hankkiudumme eroon niistä. Lähestymistapa on samanlainen kuin Harris Corner Detector poistaa reuna ominaisuuksia. Alhaisen kontrastin ominaisuuksia, me yksinkertaisesti tarkistaa niiden intensiteetit.

he käyttivät Taylorin sarjalaajennusta asteikkoavaruuteen saadakseen extreman tarkemman sijainnin, ja jos intensiteetti tällä extremalla on alle raja-arvon (0,03 paperin mukaan), se hylätään. Koiralla on suurempi vaste reunoille, joten reunat on myös poistettava. He käyttivät 2×2 Hessenin matriisia (H) pääkäyrän laskemiseen.

orientaatiotehtävä

nyt meillä on lailliset keypoints. Ne on testattu vakaiksi. Tiedämme jo asteikon, jossa näppäimistö havaittiin (se on sama kuin asteikko hämärtynyt kuva). Joten meillä on asteikko invarianssi. Seuraava asia on määrittää suunta jokaiselle keypoint, jotta se kierto invariance.

kulmakunta otetaan keypointin sijainnin ympärille mittakaavasta riippuen, ja gradientin suuruus ja suunta lasketaan kyseisellä alueella. Luodaan orientaatiohistogrammi, jossa on 36 astetta kattavat 360 astetta. Sanotaan, että gradientin suunta tietyssä pisteessä (”orientation collection region”) on 18,759 astetta, niin se menee 10-19 asteen bin. Ja” määrä”, joka lisätään roskakoriin, on verrannollinen gradientin suuruuteen kyseisessä pisteessä. Kun olet tehnyt tämän kaikille pikseleille näppäimistön ympärillä, histogrammi on huippu jossain vaiheessa.

otetaan histogrammin korkein huippu ja mikä tahansa yli 80% siitä oleva huippu katsotaan myös orientaation laskemiseksi. Se luo näppäimistöt, joilla on sama sijainti ja mittakaava, mutta eri suuntiin. Se edistää vakautta matching.

Keypoint descriptor

tässä vaiheessa jokaisella näppäimellä on sijainti, mittakaava, suunta. Seuraava on laskea kuvaaja paikallisen kuva-alueen kunkin näppäimistö, joka on erittäin erottuva ja invariant kuin mahdollista muunnelmia, kuten muutoksia näkökulma ja Valaistus.

tätä varten otetaan 16×16 ikkuna näppäimistön ympärille. Se on jaettu 16 alalohkoon, joiden koko on 4×4.

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. Tämä ominaisuus vektori esittelee muutamia komplikaatioita. Niistä on päästävä eroon ennen sormenjäljen tarkentamista.

  1. Pyörimisriippuvuus ominaisuusvektori käyttää gradienttiorientaatioita. On selvää, että jos kuvaa kiertää, kaikki muuttuu. Myös kaikki kaltevuussuunnat muuttuvat. Pyörimisriippumattomuuden saavuttamiseksi näppäimen pyörimisliike vähennetään jokaisesta suunnasta. Siten jokainen gradienttisuunta on suhteessa keypointin orientaatioon.
  2. Valaistumisriippuvuus jos kynnämme lukuja, jotka ovat suuria, voimme saavuttaa valaistusriippuvuuden. Joten mikä tahansa numero (128: sta), joka on suurempi kuin 0,2, muutetaan 0,2: ksi. Tämä tuloksena oleva ominaisuusvektori normalisoidaan jälleen. Ja nyt sinulla on Valaistus riippumaton ominaisuus vektori!

Keypoints Matching

Keypoints between two pictures are matched by identifying their nearest neighbors. Mutta joissakin tapauksissa, toinen lähimpänä-ottelu voi olla hyvin lähellä ensimmäistä. Se voi johtua melusta tai jostain muusta syystä. Tällöin otetaan lähimmän etäisyyden ja toiseksi lähimmän etäisyyden suhde. Jos se on suurempi kuin 0,8, ne hylätään. Se poistaa noin 90% vääriä osumia, kun taas heittää pois vain 5% oikea ottelut, kohti paperi.

toteutus

pystyin toteuttamaan seulonnan käyttämällä OpenCV: tä(3.4). Näin tein sen:

GitHub link for the code: https://github.com/deepanshut041/feature-detection/tree/master/sift

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *