De afgelopen vijf weken heb ik gewerkt aan het ‘signFinder‘ project voor de Google Summer of Code. Doel van het project is om Nederlandse straatnaamborden automatisch te detecteren, segmenteren, en pogen te lezen. Stefan mentort.
Er wordt histogram matching gebruikt om ‘straatnaambord blauw’ te detecteren. Gebieden met de juiste kleur worden in blobs verdeeld door middel van blob detection. Vervolgens worden een aantal statistieken gegenereerd van de blobs, waarna met decision boundaries blobs die onvoldoende op straatnaamborden lijken uitgesloten worden.
Tot dusver kunnen ‘mooie’ foto’s van nette straatnaamborden vrij goed gesegmenteerd worden.

Hoekborden correct geclassificeerd.
Maar foto’s met verroeste borden, foto’s onder een grote hoek, foto’s genomen op grote afstand, of foto’s die overbelicht of onderbelicht zijn, of zelfs foto’s genomen met een camera die de kleuren anders renderd, leveren aanmerkelijk slechtere resultaten op.

Rusty street sign
Voor nu concentreer ik me op straatnaamborden, maar deze technologie kan ook gebruikt worden voor de detectie van andere borden, waarbij nummerborden een logische stap zijn.
Momenteel lijkt het probleem voornamelijk te zijn dat mijn trainset voor de histogram matching te eenzijdig is. Ik heb onlangs meer data verzameld, waarmee ik hoop de detectie robuuster te kunnen maken. Ook: Hoe meer data hoe nauwkeuriger het systeem. Als iemand nog een stapel foto’s van straatnaamborden heeft liggen, ik heb ze graag!

straatnaambord met slechte histogram matching.
Voor wie er mee wil spelen, de code is te downloaden op google code. Ik zal vanmiddag wat readme filetjes toevoegen, maar eigenlijk is het verhaal simpel: Built de signFinder executable met make (opencv is vereist), en voor foto’s die op de command-line opgegeven worden, wordt er een <filename>_result.jpg bestand weggeschreven met een lijntje om de gedetecteerd straatnaamborden heen. datasets zijn ook beschikbaar.
Ondertussen ga ik gewoon verder met het verfijnen van het systeem, binnenkort meer!