Posts Tagged ‘sift’

signFinder – SURF

dinsdag, augustus 11th, 2009

SURF is, net als SIFT, een keypoint-matcher in de computer vision. Dergelijk technologie wordt bijvoorbeeld gebruikt om de luchtfoto’s van opengeo aan elkaar te stitchen.

SURF keypoints bij het leren van straatnaamborden.

Mijn idee was om naast de huidig gebruikte histogram-matching, ook SURF (OpenSURF) te gebruiken om straatnaamborden te vinden. Na enige moeite is de trainer nu in staat om over alle voorbeeld-borden in de trainset keypoints te berekenen, en naar de _surfkeys.dat file te schrijven. de ‘signFinder’ executable leest de surfkeys.dat file, en laat zien waar op het plaatje keypoints die lijken op die van de trainingsset gevonden worden. Idealiter zouden er voornamelijk metingen in de straatnaamborden gevonden moeten worden.

SURF keypoint matching met trainingsset.

Zie de groene gevonden keypoints. Deze toepassing is wat anders als waar SURF meestal voor gebruikt wordt, en het werkt dan ook voor geen meter :/. Met lage gevoeligheid verschijnen er nauwelijks metingen, en met toenemende gevoeligheid lijkt het er op dat metingen net zo lief of liever op andere contrastrijke delen van het plaatje verschijnen. Met name randen van lantaarnpalen worden veel en graag herkend.

Op dit moment wordt ook nog erg eenvoudige matching gebruikt. Er is mogelijk nog een en ander te behalen met het trainen van een negatief voorbeeld om false positives te vermijden en geavanceerdere methoden om de feature vector te matchen. Dit resultaat is echter niet bemoedigend, en wellicht dat het beter is om naar andere technologien te kijken, of om nu eerst te focussen op de OCR. Suggesties zijn welkom!

Voor wie het toch wil proberen: Gebruik de versie in de ‘branches’ directory op de svn, download de ge-extracte keypoints hier (of gebruik de trainer), en compileer met -DSURF in de CFLAGS variabele in de Makefile.