Vorige week ben ik voornamelijk bezig geweest met het uitsnijden van de verkeersborden, en het corrigeren van het perspectief zodat de letters er ‘zo recht mogelijk’ uitkomen en door OCR software gelezen te kunnen worden.
Tot mijn verbazing was het aanmerkelijk lastiger dan verwacht om aan de hand van de convex hull (het lijntje om borden heen) een plaatje uit te snijden: Het is verre van triviaal om de hoeken te vinden in een ruizig, vervormd, en mogelijk niet helemaal netjes omlijnt vierkant. Na diverse methoden geprobeerd te hebben, gebruik ik uiteindelijk de OpenCv GoodFeaturesToTrack functionaliteit. Als input voor de functie vul ik de convex hull om het bord heen in een los plaatje met wit op een zwarte achtergrond. Omdat corners nu eenmaal good features to track zijn (en lijnen niet), vindt deze functie netjes alle hoeken. Vervolgens sorteer ik de hoekpunten aan de hand van de punten in de convex hull.

Resultaat van het uitsnijden van borden.
Tot slot kan opencv plaatjes corrigeren voor perspectief aan de hand van vier hoekpunten. Linksonder het uitgesneden resultaat.
Merk ook op hoe kleine verschuivingen in de gevonden hoekpunten, meteen zorgen dat het bord minder ‘recht’ uitgesneden wordt.
Tags: computer vision, google summer of code, GSoC2009, signFinder, street signs