Versio

LPR (OCR voor kentekens)

Overzicht Reageren

Pagina: 1 2 volgende »

Jonathan -

Jonathan -

09/04/2009 21:09:00
Quote Anchor link
Hallo jongens,

Voor een nieuw project moet ik een LPT-systeem (License Plate Recognition) hebben. Dat is OCR (Optical Character Recignition) voor kentekenplaten. Vertaald naar mensentaal is het idee dat het script een foto binnenkrijgt, het kenteken wat op de foto staat uitleest en dat teruggeeft.

Ik weet het, het is dom om hiervoor PHP te gebruiken, bla, bla, bla, maar ik wil het nu (eerst) in PHP maken. Ik heb al wat lopen denken, op zich is het niet enorm moeilijk, maar er is één punt wat me (te) moeilijk lijkt.

Hier even mijn idee van de werking:

1. Kleuren (geel van het kenteken, zwart van de letters en blauw van het stukje met het land) worden gezocht en opgeslagen.
2. Aan de hand van de kleuren wordt naar vormen gezocht en opgeslagen.
3. Binnen de vormen wordt naar een geelkleurig rechthoek (kentekenplaats) met zwart erin (letters) en aan de linkerkant een blauw stukje (land) gezocht.
4. Dit stuk wordt rechtgetrokken (voor als de foto schuin is genomen).
5. Dan worden de letters uit elkaar gehakt en netjes bijgesneden.
6. Dan wordt letter voor letter gekeken nar de bestaande bestanden met losse letters of 'ie matcht.

Op zich is het grootste deel redelijk simpel, alleen voor stap twee en drie zou ik zo geen oplossing hebben. Een rechthoek detecteren moet (met veel bloed, zweet en tranen) wel lukken, maar zeker als de foto schuin wordt genomen zou ik niet goed weten hoe ik dat moet doen.

Ik weet dat de volgende punten nog niet goed uitgewerkt zijn:
- Gele auto's hebben een probleem (maar wie koopt er nou een gele auto).
- Auto's met een speciaal kenteken (blauw voor taxi's etc.) hebben een probleem, maar dat is relatief makkelijk op te lossen.
- Auto's met een echt enorm vies kenteken hebben een probleem (maar ik zorg dat het begrip 'geel' redelijk ruim genomen wordt).

Ik hoop dat er hier een aantal mensen zijn die het leuk lijkt even mee te denken, en tijdens het ontwikkeltraject misschien nog eens wat te bekijken.

Groeten,
Jonathan
 
PHP hulp

PHP hulp

25/05/2012 08:32:14
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Emmanuel Delay

Emmanuel Delay

09/04/2009 21:33:00
Quote Anchor link
Wow, dat is wel vrij ambitieus.

Analyseren van een afbeelding, in c++ zou ik misschien eens kunnen proberen.

Mijn eerste gedachte:

- je kiest een aantal kleuren:
bv. #000000, #ffffff, #ff0000, #00ff00, #0000ff

- Voor elke pixel bekijk je welk van de gekozen kleuren het dichts komen bij de kleur van de pixel. Je geeft de pixel dan ook die kleur.
Zo zou je dus een vereenvoudigde foto bekomen.

-Daarmee zou je wel rechthoeken kunnen detecteren. Aaneengesloten rand van de zelfde kleur, een bepaalde verhouding hoogte - breedte...

-Binnen die rechthoek: tussen elk karakter heb je een verticale streep, van boven tot onder. Zo kan je karakters onderscheiden.

- Dan de karakters herkennen...

Ik ben gewoon even luidop aan het denken.
Mocht ik hier nog iets over vinden, laat ik iets weten.
 
Jonathan -

Jonathan -

09/04/2009 21:37:00
Quote Anchor link
Ja, dat meeste had ik zelf ook al bedacht ;-) Het enige waar dit topic echt om gaat zijn punten twee en drie:

2. Aan de hand van de kleuren wordt naar vormen gezocht en opgeslagen.
3. Binnen de vormen wordt naar een geelkleurig rechthoek (kentekenplaat) met zwart erin (letters) en aan de linkerkant een blauw stukje (land) gezocht.

Het punt is dus dat die lijnen niet per se 100% gesloten hoeven te zijn (maar dat kun je doen door met percentages te rekenen), maar het grootste punt is nog dat de foto vanuit een zijkant gemaakt kan zijn, dus dan staat het kenteken er ook schuin op.

Iemand een idee?

Edit: Leuk dat je meedenkt hoor, vat dit niet persoonlijk op, maar deze punten gaat het echt om ;-)
Gewijzigd op 01/01/1970 01:00:00 door Jonathan -
 
Emmanuel Delay

Emmanuel Delay

09/04/2009 21:46:00
Quote Anchor link
Een rechthoek vanuit perspectief gezien, blijft een vierhoek.
Dat wordt dan (zo ongeveer) een parallellogram of trapezium. Dat moet ook wel te doen zijn om dat te berekenen.

Met de hoek van de basis tov. de horizontale lijn, kan je ook wel de verhouding breedte- hoogte corrigeren.
 
Jonathan -

Jonathan -

09/04/2009 22:41:00
Quote Anchor link
Maar, heb je een idee hoe dat zou kunnen? Gewoon in woorden, maar wel stapjes hoe precies?
 
Jason de Ridder

Jason de Ridder

09/04/2009 23:08:00
Quote Anchor link
Ik kan je zeggen, dit gaat niet lukken... Daarnaast is PHP hier niet voor gemaakt.
Kijk eens naar Java of Flash.. (JAVA is een stuk sneller), deze kan je eventueel op de achtergrond laten draaien.
 
Jonathan -

Jonathan -

09/04/2009 23:11:00
Quote Anchor link
Waarom lukt het niet? Te ingewikkeld om in PHP te maken, of..?

De bedoeling is dat het gebruikt wordt in een iPhone-applicatie. Eventueel zou ik deze stap ook op de iPhone zelf kunnen laten uitvoeren, al ken ik die taal (Objective-C) nog niet goed, dus lijkt dit me erg ingewikkeld.
 
Thijs X

Thijs X

09/04/2009 23:46:00
Quote Anchor link
Ik denk dat het wel (gedeeltelijk) mogelijk is om het in PHP te maken echter zal het een stuk sneller zijn in talen als C++ of Java.
Ik neem aan dat de iPhone gewoon JVM heeft dat je gewoon een java applicatie kan schrijven?
 
Kay Kay

Kay Kay

09/04/2009 23:55:00
Quote Anchor link
De iPhone ondersteunt geen Java of Flash
 
Jelmer rrrr

Jelmer rrrr

10/04/2009 00:25:00
Quote Anchor link
Dit lijkt zo makkelijk, maar het is zo lastig...

Ik zou de stap met PHP overslaan. PHP is gewoon te langzaam hiervoor, zelfs om een testscript mee te maken.

Misschien kan je dezelfde algoritmen gebruiken als die die mensen gebruiken om captcha's automatisch te kraken. Die zijn gemaakt voor letter-herkenning, en werken ook redelijk goed bij vervorming en veel ruis. Ik meende dat ik ooit een redelijk succesvol project op sourceforge ben tegengekomen, in C.

Aangezien Obj-C puur een uitbreiding is op C, kan je binnen Obj-C ook gewoon C functies aanroepen en gebruiken. Er is dus een redelijke kans dat je zo'n bibliotheek in C op de iPhone aan de praat zou kunnen krijgen.

edit: bedenk je wel dat dit terrein is waar nog wetenschappelijk onderzoek wordt verricht. Dat betekent dat het waarschijnlijk behoorlijk lastig is, maar ook dat er een heleboel (onbegrijpelijke) literatuur over is, en waarschijnlijk ook een hele stapel implementaties. Wat termen die mij te binnen schieten van een college van een paar maanden terug over zo'n soort onderwerp (objecten herkennen in 2d plaatjes) zijn connected filters en max-trees. Deze persoon gaf het college, en heeft er heel wat onderzoek naar gedaan. Misschien heb je er wat aan.
Gewijzigd op 01/01/1970 01:00:00 door Jelmer rrrr
 
Emmanuel Delay

Emmanuel Delay

10/04/2009 03:27:00
Quote Anchor link
Lang geleden dat ik nog eens zo speelde met c++ IO, chars manipuleren, ...
Het gehalte aan water opnieuw uitvinden ligt vrij hoog, maar het doet wel deugd nog eens terug wat low level te werken.

Ik heb eens wat zitten spelen.
In C++
Kan ik deze foto omzetten naar dit.
En deze foto omzetten naar dit.

( Hopelijk overtreedt ik geen copywrite. vrij willekeurig een aantal foto's met nummerplaten gevonden. )

Het is uiteraard slechts een kleine eerste stap. Dit zou met php wel kunnen.

Veel meer zal ik er niet meer mee doen.
Gewijzigd op 01/01/1970 01:00:00 door Emmanuel Delay
 
Arjan Kapteijn

Arjan Kapteijn

10/04/2009 09:53:00
Quote Anchor link
Jonathan schreef op 09.04.2009 23:11:
De bedoeling is dat het gebruikt wordt in een iPhone-applicatie.


Maak dan een simpele App waar de gebruiker gewoon het kenteken in kan voeren. XML naar de server, kenteken gegevens ophalen van de RDW en weer terugsturen naar de iPhone.

- Sneller / geen serverresources
- Het maken van een foto kost -veel- meer tijd dan het intikken van een kenteken.
- Volgens mij mag de camera niet door een iPhone App aangesproken worden (wellicht in de nieuwe 3.0 SDK)
- de kwaliteit van de iPhone camera is ruk, succes met het op de snelweg fotograferen van een kenteken...
 
Jason de Ridder

Jason de Ridder

10/04/2009 09:56:00
Quote Anchor link
Je hebt niet heel hard gezocht volgens mij... Een kwartiertje 'researchen' kwam ik dit tegen: http://sourceforge.net/project/showfiles.php?group_id=188425
Dit is in Java geschreven, heb het niet getest, maar je kan sowieso je 'intelligentie' eruit halen.

Cheers
 
Elwin - Fratsloos

Elwin - Fratsloos

10/04/2009 10:17:00
Quote Anchor link
Offtopic:
Emmanuel Delay schreef op 10.04.2009 03:27:
...
Kan ik deze foto...
Wat een meesterlijke kentekenplaat! :)
 
/home/joost

/home/joost

10/04/2009 12:46:00
Quote Anchor link
LOL....
 
Jonathan -

Jonathan -

10/04/2009 13:07:00
Quote Anchor link
Thijs schreef op 09.04.2009 23:46:
Ik denk dat het wel (gedeeltelijk) mogelijk is om het in PHP te maken echter zal het een stuk sneller zijn in talen als C++ of Java.
Ik neem aan dat de iPhone gewoon JVM heeft dat je gewoon een java applicatie kan schrijven?

Nee, de enige mogelijke taal is Objective-C.

Dragy schreef op 09.04.2009 23:55:
De iPhone ondersteunt geen Java of Flash

Klopt!

Jelmer schreef op 10.04.2009 00:25:
Dit lijkt zo makkelijk, maar het is zo lastig...

Ik zou de stap met PHP overslaan. PHP is gewoon te langzaam hiervoor, zelfs om een testscript mee te maken.

Misschien kan je dezelfde algoritmen gebruiken als die die mensen gebruiken om captcha's automatisch te kraken. Die zijn gemaakt voor letter-herkenning, en werken ook redelijk goed bij vervorming en veel ruis. Ik meende dat ik ooit een redelijk succesvol project op sourceforge ben tegengekomen, in C.

Aangezien Obj-C puur een uitbreiding is op C, kan je binnen Obj-C ook gewoon C functies aanroepen en gebruiken. Er is dus een redelijke kans dat je zo'n bibliotheek in C op de iPhone aan de praat zou kunnen krijgen.

edit: bedenk je wel dat dit terrein is waar nog wetenschappelijk onderzoek wordt verricht. Dat betekent dat het waarschijnlijk behoorlijk lastig is, maar ook dat er een heleboel (onbegrijpelijke) literatuur over is, en waarschijnlijk ook een hele stapel implementaties. Wat termen die mij te binnen schieten van een college van een paar maanden terug over zo'n soort onderwerp (objecten herkennen in 2d plaatjes) zijn connected filters en max-trees. Deze persoon gaf het college, en heeft er heel wat onderzoek naar gedaan. Misschien heb je er wat aan.

Hmm, ik wil het gewoon, en ik wil er echt voor gaan! Ik hoop dus dat het wel lukt...

Emmanuel Delay schreef op 10.04.2009 03:27:
Lang geleden dat ik nog eens zo speelde met c++ IO, chars manipuleren, ...
Het gehalte aan water opnieuw uitvinden ligt vrij hoog, maar het doet wel deugd nog eens terug wat low level te werken.

Ik heb eens wat zitten spelen.
In C++
Kan ik deze foto omzetten naar dit.
En deze foto omzetten naar dit.

( Hopelijk overtreedt ik geen copywrite. vrij willekeurig een aantal foto's met nummerplaten gevonden. )

Het is uiteraard slechts een kleine eerste stap. Dit zou met php wel kunnen.

Veel meer zal ik er niet meer mee doen.

Oke, dat is al wat inderdaad. Verder dan dit ben je dus niet gekomen?

Arjan Kapteijn schreef op 10.04.2009 09:53:
Jonathan schreef op 09.04.2009 23:11:
De bedoeling is dat het gebruikt wordt in een iPhone-applicatie.


Maak dan een simpele App waar de gebruiker gewoon het kenteken in kan voeren. XML naar de server, kenteken gegevens ophalen van de RDW en weer terugsturen naar de iPhone.

- Sneller / geen serverresources
- Het maken van een foto kost -veel- meer tijd dan het intikken van een kenteken.
- Volgens mij mag de camera niet door een iPhone App aangesproken worden (wellicht in de nieuwe 3.0 SDK)
- de kwaliteit van de iPhone camera is ruk, succes met het op de snelweg fotograferen van een kenteken...

Op zich heb je wel gelijk, alleen die apps zijn er al. Ik heb een aantal nieuwe ideeën, waaronder dit dus. Ik snap verder prima dat dit meer tijd kost, alleen dit vinden mensen cool, zeker ook om te laten zien. Dan komt er iemand op visite, je neemt een foto van z'n auto, en je laat hem van alles zien wat 'ie nog niet wist.

Jason de Ridder schreef op 10.04.2009 09:56:
Je hebt niet heel hard gezocht volgens mij... Een kwartiertje 'researchen' kwam ik dit tegen: http://sourceforge.net/project/showfiles.php?group_id=188425
Dit is in Java geschreven, heb het niet getest, maar je kan sowieso je 'intelligentie' eruit halen.

Cheers

Geweldig, hier kan ik wat mee! Ik kan geen JAVA, maar ik ga wel proberen dit een beetje aan te passen, dat ik het via de command-prompt kan gebruiken. Dan denk ik dat ik PHP ertussen zet (sorry), die JAVA aanstuurt. Of ik moet een JAVA-server hebben, maar daar heb ik totaal geen verstand van...

Weet iemand toevallig hoe ingewikkeld dat is? Ik heb op mijn shared server gewoon SSH-toegang, dus ik kan best een JAVA-server installeren, maar ik zou bij God niet weten hoe ik dat moet doen...
 

10/04/2009 14:25:00
Quote Anchor link
Misschien is het een idee om te beginnen met het weggooien van alle kleuren, behalve geel, zwart en blauw? Ik weet niet... zomaar een idee.
 
Emmanuel Delay

Emmanuel Delay

10/04/2009 18:13:00
Quote Anchor link
Ah, het is voor een iphone. Ik kan geen softwere schrijven voor Mac (en ik ken geen java). Wat ik in c++ doe, kan - veronderstel ik - wel vertaald worden zodat het op Mac kan compileren, maar daar weet ik dus niet veel van

Alle kleuren verwijderen behalve geel-zwart, lukt wel, maar dan heb je enkel de nummerplaten van landen met enkel die kleurencombinatie.
Gewijzigd op 01/01/1970 01:00:00 door Emmanuel Delay
 
Thijs X

Thijs X

10/04/2009 18:31:00
Quote Anchor link
@TS,

Je kan dmv exec het jar bestand aanroepen, ze hebben al een aantal standaard opties.

Bijv:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo exec('java -jar javaanpr.jar -recognize -i test_001.jpg');
?>


Net even getest en het werkt gewoon.

Quote:
Usage : java -jar anpr.jar [-options]

Where options include:
-help Displays this help

-gui Run GUI viewer (default choice)

-recognize -i <snapshot> Recognize single snapshot

-recognize -i <snapshot> -o <dstdir> Recognize single snapshot and save report html into specified directory

-newconfig -o <file> Generate default configuration file

-newnetwork -o <file> Train neural network according to specified feature extraction method and learning parameters (in config. file) and saves it into output file

-newalphabet -i <srcdir> -o <dstdir> Normalize all images in <srcdir> and save it to <dstdir>
Gewijzigd op 01/01/1970 01:00:00 door Thijs X
 
RT

RT

10/04/2009 18:42:00
Quote Anchor link
Misschien kun je hier iets mee?Klik
Gewijzigd op 01/01/1970 01:00:00 door RT
 
Jonathan -

Jonathan -

10/04/2009 20:38:00
Quote Anchor link
Mijn voortgang tot nu toe:

JavaANPR ziet er geweldig uit, ik denk dus dat ik dit ga gebruiken. Helaas worden Nederlandse kentekens slecht herkend (door het speciale lettertype van bijvoorbeeld de "P" en de "R") dus ga ik zelf een alfabet maken. Binnenkort dan maar een middagje door de buurt wandelen en kentekens fotograferen (of hopen dat het lettertype als download te vinden is).

Edit: voor de geïnteresseerden: een digitaal lettertype-bestand van onze Nederlandse kenteken-letters.
Gewijzigd op 01/01/1970 01:00:00 door Jonathan -
 

Pagina: 1 2 volgende »



Overzicht Reageren