Kadunnimiä ja -numeroita tunnistava ja paikantava Android-sovellus
Viinamäki, Katja (2020)
Viinamäki, Katja
2020
All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2020090120017
https://urn.fi/URN:NBN:fi:amk-2020090120017
Tiivistelmä
Työn tavoitteina oli perehtyä mahdollisuuksiin tunnistaa erilaisia asioita konenäön avulla ja kehittää Android-sovellus, joka tunnistaa ja paikantaa kadunnimiä ja -numeroita. Sovelluksella voidaan ottaa kuva, tunnistaa siinä oleva kadunnimi ja -numero ja paikantaa ne. Sovelluksessa on mahdollisuus kuvan, tunnistus- ja paikannustietojen tallentamiseen puhelimeen, jotta kuvia ja tekstejä voidaan myöhemmin selata. Paikat saadaan näkyviin samalle kartalle.
Työn teoriaosassa selvitettiin konenäön, tekstintunnistuksen ja paikannuksen perusteita sekä vertailtiin Googlen ja Microsoftin pilvipalvelujen valmiita kirjastoja, ominaisuuksia, joilla voidaan tunnistaa erilaisia asioita omissa sovelluksissa. Työn toisessa osassa sovellus toteutettiin käyttämällä Googlen kirjastoja. Tekstintunnistukseen käytettiin Androidille tarkoitettua Firebase ML -kirjastoa pilvessä tapahtuvaan tunnistukseen. Paikannus ja sovelluksen kartat toteutettiin Googlen paikannus- ja karttakirjastoilla. Sovellus tehtiin Android Studio -ohjelmalla ja ohjelmointikielenä oli Java. Sovelluksessa käytettiin erilaisia komponentteja Jetpackin kirjastoista.
Vertailussa Googlen ja Microsoftin konenäön pilvipalvelujen välillä, niiden tarjonnassa ei löytynyt suurta eroa. Molempien ominaisuuksien avulla voidaan tunnistaa pitkälti samoja asioita, esimerkiksi tekstiä, kasvoja ja objekteja eri luokissa. Tehdyllä sovelluksella voidaan tunnistaa kadunnimiä ja -numeroita 97–99 %:n luotettavuudella tavanomaisista mustavalkoisista kylteistä. Fontin vaihtelu, tekstin ympäristö ja muut asiat kuvassa sekä kuvanotto-olosuhteet voivat kuitenkin aiheuttaa häiriötekijöitä tunnistamiseen. Sovelluksen paikannus toimii hyvin, sen tarkkuus on 30 cm:n ja muutaman metrin välillä, mikä on riittävä taso. The goals of this thesis were to explore what things can be recognized with computer vision and to develop an application for detecting and locating text and numbers of the street sign. With the application you can take a photo of a street sign, detect text from it and get your location. Then you can save information and see photos, detected texts and places later.
In a theory part of the thesis basics of the computer vision, object detection, text detection and location were explored. Also, Google and Microsoft Cloud Vision service's features was compared. In the second part of the thesis the application was implemented with Google Firebase ML library for text detection in the cloud. Maps SDK for Android was used for showing maps and Google Location API from Google Play Services to get location of the phone. The Application was made with Android Studio and programming language was Java. Also, several Jetpack libraries was used.
In comparison between Google and Microsoft Cloud Vision services the features for detecting different things was mostly quite similar. With them you can for example detect texts, faces and objects in different categories. The developed application detects fairly reliably text and number from the ordinary black and white street sign. Reliability of the detections were 97–99 %. However, for example varying font, imaging conditions and other objects in the photo may be a challenge to detect texts and numbers right. The location in the application is working well. The accuracy of the location is between 30 cm and few meters and it can be considered good enough.
Työn teoriaosassa selvitettiin konenäön, tekstintunnistuksen ja paikannuksen perusteita sekä vertailtiin Googlen ja Microsoftin pilvipalvelujen valmiita kirjastoja, ominaisuuksia, joilla voidaan tunnistaa erilaisia asioita omissa sovelluksissa. Työn toisessa osassa sovellus toteutettiin käyttämällä Googlen kirjastoja. Tekstintunnistukseen käytettiin Androidille tarkoitettua Firebase ML -kirjastoa pilvessä tapahtuvaan tunnistukseen. Paikannus ja sovelluksen kartat toteutettiin Googlen paikannus- ja karttakirjastoilla. Sovellus tehtiin Android Studio -ohjelmalla ja ohjelmointikielenä oli Java. Sovelluksessa käytettiin erilaisia komponentteja Jetpackin kirjastoista.
Vertailussa Googlen ja Microsoftin konenäön pilvipalvelujen välillä, niiden tarjonnassa ei löytynyt suurta eroa. Molempien ominaisuuksien avulla voidaan tunnistaa pitkälti samoja asioita, esimerkiksi tekstiä, kasvoja ja objekteja eri luokissa. Tehdyllä sovelluksella voidaan tunnistaa kadunnimiä ja -numeroita 97–99 %:n luotettavuudella tavanomaisista mustavalkoisista kylteistä. Fontin vaihtelu, tekstin ympäristö ja muut asiat kuvassa sekä kuvanotto-olosuhteet voivat kuitenkin aiheuttaa häiriötekijöitä tunnistamiseen. Sovelluksen paikannus toimii hyvin, sen tarkkuus on 30 cm:n ja muutaman metrin välillä, mikä on riittävä taso.
In a theory part of the thesis basics of the computer vision, object detection, text detection and location were explored. Also, Google and Microsoft Cloud Vision service's features was compared. In the second part of the thesis the application was implemented with Google Firebase ML library for text detection in the cloud. Maps SDK for Android was used for showing maps and Google Location API from Google Play Services to get location of the phone. The Application was made with Android Studio and programming language was Java. Also, several Jetpack libraries was used.
In comparison between Google and Microsoft Cloud Vision services the features for detecting different things was mostly quite similar. With them you can for example detect texts, faces and objects in different categories. The developed application detects fairly reliably text and number from the ordinary black and white street sign. Reliability of the detections were 97–99 %. However, for example varying font, imaging conditions and other objects in the photo may be a challenge to detect texts and numbers right. The location in the application is working well. The accuracy of the location is between 30 cm and few meters and it can be considered good enough.