[PHP] Kentekenherkenning

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • mcdronkz
  • Registratie: Oktober 2003
  • Laatst online: 16-04 12:44
Voor een autoregister (overzicht van luchtgekoelde VW's) wil ik een kentekenherkenning maken. Mensen kunnen dan foto's uploaden van hun auto, de software plukt daar een kenteken uit en slaat dat op in een database.

Je voelt 'm aankomen: ik heb geen idee hoe ik dit aan moet pakken.

Ik snap dat ik het in de richting van OCR software moet gaan zoeken.

Maar dan moet ik dus ook nog kentekenplaten herkennen. Deze hebben een bepaalde kleur, maar zijn in sommige foto's haast zwart ipv donkerblauw (oldtimerkenteken) en ze staan ook niet op elke foto in de juiste hoek.

Ik heb geprobeerd voorbeelden van bestaande systemen te vinden, maar dat soort software is vaak niet openbaar.

Kan iemand me in de juiste richting sturen?

Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 21-05 10:52
Als mensen zelf de foto uploaden kun je toch ook wel aan die personen vragen of ze het kenteken willen noteren, of wil je de data distilleren van foto's van een andere website, iig is OCR een van de ingewikkeldste onderwerpen uit de informatica, misschien zijn er wel goede libs in talen geschreven in hoog performante hogere talen (C++/C# e.d.). in PHP ga je zoiets niet vinden en ook niet erg makkelijk kunnen schrijven, waarschijnlijk moet je het zoeken in een lib die specifiek geschreven is om kentekens te herkennen en die lib aanroepen vanuit PHP (er is vast wel interprocess communicatie in php of shell aanroep mogelijk) en dat resultaat gebruiken.

Of je kunt via een cronjob alle nieuw ingekomen foto's laten controleren, de data in een database zetten en dan via PHP de database aanspreken. (In mijn bescheiden opinie is dit ook het enige dat je php zou mogen laten doen :P, maar het is misschien niet realtime genoeg voor je toepassing).

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Laatst online: 21:59
Anders met de hand doen? Of krijg je 100den foto's per dag?

Acties:
  • 0 Henk 'm!

  • mcdronkz
  • Registratie: Oktober 2003
  • Laatst online: 16-04 12:44
@roy-t: Nee, ik begrijp dat ik aangewezen ben op andere software. Je laatste alinea is helemaal juist, zoiets had ik ook in gedachten. Maar goed, dan blijft de vraag over hoe ik kentekens ga scannen.

Ik kan 't ook wel met de hand doen, maar dit lijkt me een leuke technische uitdaging. Het gaat wel om honderden foto's per dag ja.

[ Voor 27% gewijzigd door mcdronkz op 01-06-2009 20:32 ]


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Als het voor de leuk is, dan zou ik de afbeelding eerst ruwweg opdelen in vlakken en zoeken naar kleurvlakken welke de juiste kleuren bevatten, dan die weer opdelen volgens hetzelfde principe etc.etc. tot je 1 vlak overhoudt.

Dan aan de hand van de buitenrand van de kleur bepalen hoe je de nummerplaat moet bijdraaien om het makkelijker voor de ocr te maken, daarna nog even wat extreme sharpening eroverheen.
En dan uiteindelijk het plaatje opslaan, en dan nog alle kanten op spiegelen en die ook opslaan.
OCR over alle 4 de plaatjes laten gaan en dan vergelijken met de rdw dbase om te zien welke de juiste is.

Als het serieus is, dan zou ik gewoon zo'n pakket kopen. Bovenstaande methode werkt volgens mij redelijk voor goed geschoten foto's, als de mensen zelf plaatjes kunnen uploaden dan ga je de ergste bagger tegenkomen en dan volstaat bovenstaande methode niet meer, dan zou je of er een paar jaar studie in kunnen stoppen om het principe erachter goed te krijgen, of je koopt gewoon een pakket...

Acties:
  • 0 Henk 'm!

  • Plaklijm
  • Registratie: Augustus 2008
  • Laatst online: 19-02-2023
Ik heb dit zelf ook al eens in php geprobeerd om te experimenteren

Na een aantal bewerkingen kreeg ik de kentekenplaat wit en de rand en de tekst zwart.
Nadeel is dat de kentekens er wel recht op moest staan.

Je kan het beter met iets anders doen dan php want het is zwaar reken werk om alles in GD te doen.

Hier is de OCR-class die ik heb gebruikt: http://phpclasses.chimit.nl/browse/package/2874.html

Ik zal eens kijken of ik hem nog terug kan vind. Is al weer van een tijdje terug.

Acties:
  • 0 Henk 'm!

  • Icheb
  • Registratie: Augustus 2001
  • Laatst online: 28-05 00:18
Hmm, dat moet best te doen zijn...
Eens denken...

Als je de kentekenplaat kan isoleren (dus een geelachtige kleur in een rechthoek), dat uitknippen, en opslaan waarbij je het geel omzet naar wit. Kan je het door een OCR programma halen.
Denk aan een programma als Tesseract.
Oke, dan moet je het even opslaan als Tiff, maar dat hoeft met Imagemagick niet zo'n probleem te zijn.

Dit is best te doen, volgens mij ;). Dan heb je misschien geen 100% hitrate, maar tenminste zeker wel een % of 40, gok ik.

sebsoft.nl


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Tja, tip : bezint eer ge begint.

Je gokt op 40% hitrate, hiervan gaan er al een aantal mismatches zijn ( oftewel je moet alles alsnog met de hand nakijken )
Dit is een zeer processor intensief proces, waarschijnlijk mag je er een server voor erbij gaan hangen.
Dit soort processen vereist een bijna oneindige hoeveelheid finetuning
Je wilt algemene ocr tools (tesseract ) gaan gebruiken op een zeer specifiek iets, geen idee of je tesseract zo kan inrichten dat hij alleen maar mag komen met antwoorden die voldoen aan een patroon.

En daarnaast heb je nog de specifieke problemen met de foto's.
- Wat moet er gebeuren als er meerdere auto's opstaan
- Wat wil je gaan doen met een xxx Mb raw foto

Ik gok dat een 40% hitrate redelijk snel te halen is met wat kluswerk. Maar ik gok ook dat de mensen daarna meer willen...

En aangezien je in je 1e post al aangeeft dat je nu al geen idee hebt hoe dit aan te pakken, gok ik dat dit meer een lijdensweg zonder einde wordt...

Acties:
  • 0 Henk 'm!

Anoniem: 303530

Icheb schreef op maandag 01 juni 2009 @ 20:38:

Als je de kentekenplaat kan isoleren (dus een geelachtige kleur in een rechthoek), dat uitknippen, en opslaan waarbij je het geel omzet naar wit. Kan je het door een OCR programma halen.

*knip*
wat als de auto geel is? }:O

Acties:
  • 0 Henk 'm!

  • mcdronkz
  • Registratie: Oktober 2003
  • Laatst online: 16-04 12:44
Wat me prima lijkt is het volgende:

1. Iemand upload een foto met één of meerdere kentekens
2. De software gaat vervolgens bepalen welke kentekens erin staan
3. Als er niks gevonden is voert de gebruiker de kentekens in
4. Als er wel wat gevonden is wordt dat door de gebruiker gecontroleerd

Op die manier is de hitrate niet echt belangrijk.

RDW database koppeling is geen probleem, dat heb ik al geprogrammeerd.

[ Voor 9% gewijzigd door mcdronkz op 01-06-2009 21:47 ]


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
mcdronkz schreef op maandag 01 juni 2009 @ 21:46:
Wat me prima lijkt is het volgende:

1. Iemand upload een foto met één of meerdere kentekens
2. De software gaat vervolgens bepalen welke kentekens erin staan
3. Als er niks gevonden is voert de gebruiker de kentekens in
4. Als er wel wat gevonden is wordt dat door de gebruiker gecontroleerd

Op die manier is de hitrate niet echt belangrijk.

RDW database koppeling is geen probleem, dat heb ik al geprogrammeerd.
Je bedoelt dat je bijna real-time kentekens gaat scannen?
Geen idee wat voor serverpark je daarvoor wilt neerzetten, maar ik gok dat je al heel snel een request gaat krijgen of mensen niet direct het kenteken in kunnen voeren ipv te wachten op stap 2.

Dit is bijna niet real-time te doen en ik persoonlijk voer het liever zelf in dan dat ik eerst 10 sec ( en dat is optimistisch ) ergens op moet gaan zitten wachten, feitelijk haal je op deze manier enkel het intypen van 6 karakters ertussenuit ( mensen moeten het steeds lezen om te kunnen controleren ) en daarvoor in de plaats zet je een vertraging neer...

Acties:
  • 0 Henk 'm!

  • mcdronkz
  • Registratie: Oktober 2003
  • Laatst online: 16-04 12:44
Je hebt gelijk, het is natuurlijk onzin dat mensen op zoiets moeten wachten. Beetje zonde van het werk ook :).

Acties:
  • 0 Henk 'm!

  • mjax
  • Registratie: September 2000
  • Laatst online: 26-05 13:47
Waarom pas je niet een vorm van "crowdsourcing" toe? Je zou bijvoorbeeld de kenteken platen als een soort dummy captcha op het inlogscherm kunnen plaatsen of iets dergelijks. Let op: dummy captcha, aangezien je het antwoord zelf ook nog niet weet.

Hiermee moet je een "herkenning" kunnen halen die veel hoger ligt dan 40%. Uiteraard kan dit alleen werken als het aantal logins in verhouding is tot het aantal te herkennen kentekenplaten.

Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

mcdronkz schreef op maandag 01 juni 2009 @ 21:46:
RDW database koppeling is geen probleem, dat heb ik al geprogrammeerd.
Databankrecht en datamining? Ik zou daar echt toestemming van de RWD voor vragen.

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Gomez12 schreef op maandag 01 juni 2009 @ 22:05:
[...]

Je bedoelt dat je bijna real-time kentekens gaat scannen?
Geen idee wat voor serverpark je daarvoor wilt neerzetten, maar ik gok dat je al heel snel een request gaat krijgen of mensen niet direct het kenteken in kunnen voeren ipv te wachten op stap 2.

Dit is bijna niet real-time te doen en ik persoonlijk voer het liever zelf in dan dat ik eerst 10 sec ( en dat is optimistisch ) ergens op moet gaan zitten wachten, feitelijk haal je op deze manier enkel het intypen van 6 karakters ertussenuit ( mensen moeten het steeds lezen om te kunnen controleren ) en daarvoor in de plaats zet je een vertraging neer...
Kenteken-herkenning hoeft niet lang te duren hoor. Er zijn ongeveer 35 tekens die op een kentekenplaat kunnen voorkomen en ze zijn altijd exact hetzelfde. Je hebt bijvoorbeeld geen verschillende lettertypen, iets waar algemene OCR wel rekening mee moet houden.

Een kentekenplaat is fel-geel en reflecterend. Dus als je fotografeert met een flits kun je hem er direct uithalen en anders is het even zoeken naar de juiste kleur. De regio met het kenteken moet je snel kunnen vinden.

Daarna moet je 6x een patroonherkenning uitvoeren met 35 mogelijkheden en vervolgens de beste match eruit zoeken. Ook dat stelt niets voor qua berekeningen.

Als je het juist aanpakt denk ik dat je zeker binnen één of twee seconden het kenteken kunt herkennen.

Acties:
  • 0 Henk 'm!

  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 18:56
HuHu schreef op dinsdag 02 juni 2009 @ 09:26:
[...]

Kenteken-herkenning hoeft niet lang te duren hoor. Er zijn ongeveer 35 tekens die op een kentekenplaat kunnen voorkomen en ze zijn altijd exact hetzelfde. Je hebt bijvoorbeeld geen verschillende lettertypen, iets waar algemene OCR wel rekening mee moet houden.

Een kentekenplaat is fel-geel en reflecterend. Dus als je fotografeert met een flits kun je hem er direct uithalen en anders is het even zoeken naar de juiste kleur. De regio met het kenteken moet je snel kunnen vinden.

Daarna moet je 6x een patroonherkenning uitvoeren met 35 mogelijkheden en vervolgens de beste match eruit zoeken. Ook dat stelt niets voor qua berekeningen.

Als je het juist aanpakt denk ik dat je zeker binnen één of twee seconden het kenteken kunt herkennen.
Maar dan moet ik dus ook nog kentekenplaten herkennen. Deze hebben een bepaalde kleur, maar zijn in sommige foto's haast zwart ipv donkerblauw (oldtimerkenteken) en ze staan ook niet op elke foto in de juiste hoek.
BLAUW! :P

Acties:
  • 0 Henk 'm!

  • Tim
  • Registratie: Mei 2000
  • Laatst online: 18-03 14:00

Tim

Met een Hough transformatie kan je lijnen in je foto herkennen, daaruit kan je dan bepalen welke lijnen het nummerbord zijn (verhouding, locatie, etc) en daarop kan je vervolgens OCR toepassen.

Hier is een voorbeeld paper met duidelijke plaatjes: http://remus.ulbsibiu.ro/publications/papers/icics2001.pdf
Via google kan je er nog veel meer over vinden.

Succes :)

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
AtleX schreef op dinsdag 02 juni 2009 @ 08:50:
[...]

Databankrecht en datamining? Ik zou daar echt toestemming van de RWD voor vragen.
Je gaat er vanuit dat ie dat niet geregeld heeft. Als je bijv. via webservices.nl dit geregeld hebt kun je direct bij die gegevens komen, tegen betaling natuurlijk.

Acties:
  • 0 Henk 'm!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Onderstaand een aantal papers die dit onderwerp behandelen:

http://www.scribd.com/doc...-License-Plates-in-Images
http://www.springerlink.com/content/xbc869rd4jf9wgrq/

en op wikipedia:
Wikipedia: Automatic number plate recognition

Ik denk dat je al snel tot de conclusie zult komen dat het 'best lastig' is..

[ Voor 20% gewijzigd door P_de_B op 02-06-2009 16:45 ]

Oops! Google Chrome could not find www.rijks%20museum.nl


Acties:
  • 0 Henk 'm!

  • leuk_he
  • Registratie: Augustus 2000
  • Laatst online: 10-05 20:21

leuk_he

1. Controleer de kabel!

Moest aan dit topic denken:

Meterstand uitlezen via webcam/foto; hoe? *
/edit ik bedoelde deze,

VB.NET Gezichten herkennen in JPG* die verwijst naar opencv

Die verwijst naar een open source library, maar het is niet even triviaal als je het mij vraagt.

[ Voor 25% gewijzigd door leuk_he op 02-06-2009 16:53 ]

Need more data. We want your specs. Ik ben ook maar dom. anders: forum, ff reggen, ff topic maken
En als je een oplossing hebt gevonden laat het ook ujb ff in dit topic horen.


Acties:
  • 0 Henk 'm!

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Uit ruime ervaring met image processing kan ik je vertellen dat dit heel erg lastig is. Als je al niet vanaf het begin weet hoe je zoiets eventueel aan kan pakken, dan gaat het je niet lukken om het zelf te schrijven. Daar zou ik sowieso niet aan beginnen; om het robuust te krijgen "from scratch" gaat je maanden en maanden kosten.

Acties:
  • 0 Henk 'm!

  • Precision
  • Registratie: November 2006
  • Laatst online: 17-01-2020
Ik zou de mensen de foto laten uploaden en dan zoals in facebook een kader rond de nummerplaat plaatsen, zodat je programma/script weet waar moet zoeken. Want stel dat er meerdere auto's op een foto staan of dat er reclame op de auto staat of dat er reclame langs de weg staat ( eventueel met een auto op? ) of een verkeersbord ( eventueel met afritinfo/straatnaam/streeknaam ).

Laat ze een kadertje rond de nummerplaat plaatsen en bereken dan hoeveel graden je de nummerplaat moet draaien en laat er dan je ocr over heen gaan

Crisis? Koop slim op Dagoffer - Op zoek naar een tof cadeau?


Acties:
  • 0 Henk 'm!

  • Jeldert
  • Registratie: Juni 2001
  • Niet online

Jeldert

Rozijntjes

flanderssoft schreef op dinsdag 02 juni 2009 @ 19:38:
Ik zou de mensen de foto laten uploaden en dan zoals in facebook een kader rond de nummerplaat plaatsen, zodat je programma/script weet waar moet zoeken. Want stel dat er meerdere auto's op een foto staan of dat er reclame op de auto staat of dat er reclame langs de weg staat ( eventueel met een auto op? ) of een verkeersbord ( eventueel met afritinfo/straatnaam/streeknaam ).

Laat ze een kadertje rond de nummerplaat plaatsen en bereken dan hoeveel graden je de nummerplaat moet draaien en laat er dan je ocr over heen gaan
Laat ze dan meteen het kenteken zelf invoeren :>

Juist


Acties:
  • 0 Henk 'm!

  • Precision
  • Registratie: November 2006
  • Laatst online: 17-01-2020
Jeldert schreef op dinsdag 02 juni 2009 @ 19:48:
[...]

Laat ze dan meteen het kenteken zelf invoeren :>
Ik wilde het probleem enkel maar eenvoudiger maken, aangezien ts er geen ervaring mee had.
Het leek mij gewoon haalbaarder om het zo op te lossen, maar idd je kan de gebruiker het dan beter zelf laten invullen.

Crisis? Koop slim op Dagoffer - Op zoek naar een tof cadeau?


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
HuHu schreef op dinsdag 02 juni 2009 @ 09:26:
[...]

Kenteken-herkenning hoeft niet lang te duren hoor. Er zijn ongeveer 35 tekens die op een kentekenplaat kunnen voorkomen en ze zijn altijd exact hetzelfde. Je hebt bijvoorbeeld geen verschillende lettertypen, iets waar algemene OCR wel rekening mee moet houden.
Tja, laat de TS tot nu toe nog het idee hebben om algemene OCR software te gaan gebruiken.
Technisch klopt het wat je zegt, maar ken jij een off-the-shelf ocr pakket wat dit doet?
Een kentekenplaat is fel-geel en reflecterend. Dus als je fotografeert met een flits kun je hem er direct uithalen en anders is het even zoeken naar de juiste kleur. De regio met het kenteken moet je snel kunnen vinden.
Het gaat hier over mensen die zelf foto's kunnen uploaden, verwacht niet te veel van de kwaliteit van de gemiddelde foto zou ik zeggen...
Als je het juist aanpakt denk ik dat je zeker binnen één of twee seconden het kenteken kunt herkennen.
Tja, als je het juist aanpakt met de juiste software. Maar wat als je het zelf wilt maken in php en een algemene ocr library zonder kennis van beeldverwerking / ocr etc. ? Hoe lang denk je dan dat het duurt

Nogmaals, technisch klopt het wat je zegt. Nu enkel nog even de software benoemen zodat TS kan kijken of het binnen zijn budget valt, want op dit moment is het theoretisch mogelijk maar praktisch voor de TS bijna niet te doen. Zie daarom mijn 1e suggestie van schaf gewoon een pakket aan wat dit doet...
Pagina: 1