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.
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.
토론
2013년 1월 30일 10:24에 !i!님의 의견
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.
2013년 1월 30일 11:02에 vsandre님의 의견
Schön!
2013년 1월 30일 11:09에 IOOI님의 의견
Wow! Das ist verdammt cool!
2013년 1월 30일 12:26에 Chaos99님의 의견
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
2013년 1월 30일 12:34에 ubahnverleih님의 의견
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
2013년 1월 30일 13:13에 ikonor님의 의견
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.
2013년 1월 30일 13:19에 ubahnverleih님의 의견
@ikonor Nein kannte ich noch nicht. Danke für den Hinweis - schaue ich mir mal an
2013년 1월 30일 18:15에 robert님의 의견
(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.
2013년 1월 30일 21:27에 HannesHH님의 의견
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. :)
2013년 2월 4일 09:40에 svenrogall님의 의견
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
2013년 2월 11일 18:14에 fernsprechvermittlung님의 의견
OpenStreetMap #osm #blog / Schilderkennung mit dem Handy http://blog.meldekopf.de/archives/232 Danke super Sache :-)
2013년 2월 20일 22:11에 saerdnaer님의 의견
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
2013년 2월 23일 15:35에 hfs님의 의견
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.)
2013년 3월 10일 15:18에 poldy님의 의견
Vorschlag alternatives Equipment:
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.
2015년 1월 2일 15:52에 Ogmios님의 의견
Ich hätte so etwas gerne um es auf die Mapillary Bilder anzuwenden bevor ich sie hoch lade.