OpenStreetMap

Schilderkennung – erster Erfolg

Posted by ubahnverleih on 30 January 2013 in German (Deutsch)

Vor ein paar Wochen schrieb ich hier die Idee nieder ein Gerät zu bauen, welches auf einer Autofahrt Schilder erkennt und davon ein Foto macht, damit man es später z.B. Geschwindigkeitsbegrenzungen in OSM eintragen kann. in den Kommentaren wurde dann angemerkt, dass man das doch auch mit einem Smartphone umsetzen könnte. Ich habe keine Ahnung warum ich auf diese Idee nicht gekommen bin. Diese Geräte haben Kamera und GPS und sind mittlerweile auch schnell genug für Bildverarbeitung. Außerdem sind sie extrem verbreitet.

Bilderkennung eines Verkehrschildes

Da ich mich mit dieser ganzen Android-bastelei noch nicht beschäftigen wollte, habe ich erst einmal angefangen mich mit Bilderkennung zu beschäftigen. Ich bin echt beeindruckt, was mit OpenCV alles möglich ist und vor allem wie schnell so etwas umgesetzt ist.

Bis jetzt haben wir also eine Software, die das Livebild der Kamera abgreift, dann die Farben so filtert, dass nur noch rot übrig bleibt und dann Kreise erkennt. Und nachdem wir noch ein wenig mit den Parametern herumgespielt haben ist die Trefferquote erstaunlich hoch. Ich habe ein 1 Stündliches Testvideo durch die Software geschoben - Dabei hat das Programm etwa 70-80% der erkennbaren Schilder erkannt und nur 5% der erfassten Bilder waren Fehltreffer. (Als erkennbare Schilder bezeichne ich hier Schilder mit Rotem Rand wie z.B. Überholverbot, Geschwindigkeitsbegrenzung, Halteverbot. Außerdem zähle ich Schilder, bei denen der rote Rand sehr ausgeblichen ist nicht mit dazu). Bei einem anderen Video bekam ich sehr viele Fehler, durch das Rote runde Rücklicht des vorherfahrenden Fahrzeuges. Hier muss ich wohl noch ein wenig optimieren.

Die beschriebenen Tests habe ich einfach mit Videos von Autofahrten, welche ich auf Youtube fand gemacht. Dies entspricht natürlich nicht wirklich dem, was später heraus kommen soll - Bei den Videos habe ich alle 25 Frames/Sekunde ausgelesen. Das führte dazu, dass selbst auf meinem 2,5Ghz Prozessor die Verarbeitung 4 mal so lang brauchte, wie das Video.

In der Praxis sollen aber überhaupt nur etwa 3-4 Bilder/sekunde aufgenommen werden. Um die benötigte Leistung noch weiter zu senken, ist zu überlegen, ob es die volle Auflösung sein muss. Ich weiß auch nicht ob smartphone überhaupt hochauflösende Bilder in der Frequenz schießen können. (Schon allein, weil ich überlege ein 50€ smartphone für so etwas zu benutzen)

Einen Live-Test habe ich nun schon mal mit dem MacBook und dessen Kamera unternommen. Das Bild Dazu sieht man oben.

Was ich mir eigentlich noch wünsche, ist, dass ich auch Blaue runde Schilder, wie Abbiegebeschränkugen erkennen könnte. Außerdem ist vielleicht zu überlegen ob man für Länder, dessen OSM-Daten noch sehr lückenhaft sind auch Ortseingangsschilder erkennen will um Orte richtig zu benennen.

Comment from !i! on 30 January 2013 at 10:24

Ohhh das ist aber echt ne feine Sache :) Als ich mich noch mit Videomapping beschäftigt habe, hab ich mir sowas gewünscht, damit man nicht immer endlos Material sichten muss.

Hide this comment

Comment from IOOI on 30 January 2013 at 11:09

Wow! Das ist verdammt cool!

Hide this comment

Comment from Chaos99 on 30 January 2013 at 12:26

Sehr toll. Wie ich sehe, führst du die Analyse jetzt auch als Postprozess auf einem PC durch. So wie ich mich an die erste Diskussion erinner, ging es noch darum, das live auf dem Telefon zu machen. Das wäre zwar eleganter (weil nur dann ein Foto gemacht würde, wenn auch ein Schild zu sehen ist), stellta ber wie bei dir beschrieben bisher schwer erfüllbare Anforderungen an die Hardware.

Hast du vor, den Quellcode deines Programms zu veröffentlichen? Z.B. auf GitHub o.ä.? Ich würde das durchaus gerne mal ausprobieren. Ich hab hier noch GoPro Material herumliegen.

Und die Einarbeitung in OpenCV schieb ich auch schon sehr lange vor mir her.

Gruss, Chaos

Hide this comment

Comment from ubahnverleih on 30 January 2013 at 12:34

Naja eigentlich ist es geplant alles auf dem Telefon laufen zu lassen. Dass ich das auf dem Rechner laufen lassen habe, hängt eher damit zu tun, dass ich noch nichts auf das Telefon Portiert habe und testmaterial brauchte - deswegen habe ich da videos durch geschoben. Ob man das Postprozessing dann doch auf dem PC machen muss, wird sich zeigen, wenn wir das ganze mal auf mobiler hardware laufen lassen. Aber prinzipiell kann man eben auch ein Video durch die Software schieben - nur da ist die frage wie man das dann gerefernziert. Ja der code soll eigentlich schon veröffenlticht werden. Momentan ist er aber noch so experimenetell und hässlich, dass ich den keinem zumuten möchte ;) Wenn du willst kann ich ihn dir aber trotzdem schon mal schicken

Hide this comment

Comment from ikonor on 30 January 2013 at 13:13

Hast Du Dir mal das GSoC Projekt "Video Based Speed Limit and Road Sign Detector plugin for JOSM" angeschaut? Evtl. kannst Du ja darauf aufbauen oder was davon verwenden.

Hide this comment

Comment from ubahnverleih on 30 January 2013 at 13:19

@ikonor Nein kannte ich noch nicht. Danke für den Hinweis - schaue ich mir mal an

Hide this comment

Comment from robert on 30 January 2013 at 18:15

(Google translate to the rescue)

Intriguing approach to image recognition.

I'm sure you can get a lot more performance out of it with not much effort.

Hide this comment

Comment from HannesHH on 30 January 2013 at 21:27

Stark!

Sowas könnte man bestimmt auch andersrum angehen, einem Programm Beispielfotos von Schilder vorlegen, sagen um welche Schilder es sich handelt, und es dann lernen lassen.

Ich wünscht ich wäre so schlau. :)

Hide this comment

Comment from svenrogall on 4 February 2013 at 09:40

Es es nicht möglich das Smartphone zu rooten, um dann als Admin richtig auf das Linux Betriebssystem zu zugreifen. So wie ich rooten verstanden habe, ist man danach Admin und könnte dementsprechend auch Programme installieren und auch Quelltexte compilieren bzw ausführen.

Und wenn es ganz hart auf hart kommt, kann man im zweifelsfall auch eine neuere Variante des OS nehmen oder eine eigene, die nicht so viele Resourcen verbraucht. Letztendlich ist ein Smartphone doch nur ein tragbarer Computer.

Ich selber habe ein Samsung Ace2, hat bei T-Online 99 Euro gekostet. Es hat einen 833 Megaherz Eincoreprozessor. Ich habe mir mal im Web angeschaut wie man dieses routet. Es gibt genug Videos dazu und scheint wirklich nicht schwer zu sein. Nebenbei werden auch Downloadmöglichkeiten von CustomRoms gezeigt. Vielleicht ist ja was dabei, dass man sofort benutzen kann, und deinen Anspüchen genügt.

MFG admin at http://www.katalog1.org

Hide this comment

Comment from fernsprechvermittlung on 11 February 2013 at 18:14

OpenStreetMap #osm #blog / Schilderkennung mit dem Handy http://blog.meldekopf.de/archives/232 Danke super Sache :-)

Hide this comment

Comment from saerdnaer on 20 February 2013 at 22:11

Ich mal ne Zeit lang immer Videos gemacht, die du gerne zum testen haben kannst. Unter https://www.youtube.com/playlist?list=PLl-RY8vLFn-qKwCTWMBzgL1O1N-z1BUrS ist von jedem Typ ein Beispiel.

MfG Andi

Hide this comment

Comment from hfs on 23 February 2013 at 15:35

Es gibt extra OpenCV4Android: http://opencv.org/android . Das klingt doch geradezu ideal. (Du selbst wirst es vermutlich schon gesehen haben, aber ich dachte ich erwähne es für die interessierten Mitleser.)

Hide this comment

Comment from poldy on 10 March 2013 at 15:18

Vorschlag alternatives Equipment:

  • Raspberry Pi
  • Webcam
  • externes GPS

Ob das besser oder schlechter als die Smartphone-Lösung ist, mag ich hier nicht beurteilen. Hängt vielleicht davon ab, was man schon so da hat.

Hide this comment

Leave a comment

Parsed with Markdown

  • Headings

    # Heading
    ## Subheading

  • Unordered list

    * First item
    * Second item

  • Ordered list

    1. First item
    2. Second item

  • Link

    [Text](URL)
  • Image

    ![Alt text](URL)

Login to leave a comment