Bildegjenkjenning


Et alternativ vi har sett på er å ha et stasjonært kamera som kjenner igjen både telys og roboten. “Stasjonen” vil da enten kunne gi koordinater som roboten navigerer seg frem til, eller kontinuelig oppdatering om hvilken retning den burde kjøre. Overføring kunne skjedd over bluetooth.

Det er mange problemstillinger ved denne fremgangsmåten. Først og fremst å få en datamaskin til å kjenne igjen et bord, et telys og roboten. Etter mye leting fant vi frem til opencv, it bibliotek for bildegjenkjenning. Fordelen med opencv er at det finnes moduler for å utvikle i Python, noe som øker progresonshastigheten.

Som en test tok vi bilde av et bord

table2

 

for å finne hjørnenene er det mange muligheter, men vi valge å bruke en blanding av mange algoritmer. Vår fremgangsmåte er:

  • finne alle kanter / piksler som er ved siden av hverandre med veldig forskjellig verdi.
  • skille ut disse og bruke en fill algoritme som fyller avgrensede områder i bildet.
  • velge det største avgrensede området (antar bordet er plassert i fokus).
  • fjerne ande kanter.
  • Bruke Hough transform til å kjenne igjen rette linjer, og finne deres skjæringspunkter. Disse skjæringspunktene er da hjørnene på bordet.

Etter kantdeteksjon:

canny

 

Ferdig prosessert bilde:

output

 

Neste steg er så å transformere dette perspektivet til et 2D plan slik at punkter kommer ut som koordinater. Dette er fullt mulig, da vi har bredde og lengde på bordet, men krever noen litt kinkige matrise transformasjoner.

Dette jobber vi med nå.

 


Leave a Reply