maandag 3 november 2008

Translatievectoren gevonden

Er is intussen een week gepasseerd en de voorbije week ben ik wat meer in gang geschoten. Nu ik de autocorrelatie van een textuur kon berekenen, was het tijd om lokale maxima hiervan te zoeken. Dit kon gebeuren via non-maximum suppression. Ik dacht eerst dat dit best in C geschreven werd, maar als M-file draaide het in feite ook zeer vlot. Blijkbaar gaat Matlab Just in Time (JIT) naar C compileren als de code te traag is. Hierdoor ben ik wat tijd verloren, maar nu weet ik weer terug hoe ik een MEX-file voor Matlab kan schrijven.

Nadat de lokale maxima zijn gevonden, moet de kortste afstand tot een groter maximum berekend worden. Hiervan neemt men dan de punten met de 32 grootste afstanden (nadien heb ik deze parameter dynamisch berekend, maar hier ga ik niet verder op in) en deze geeft men mee aan de general Hough transform.

Initiƫle figuur

Autocorrelatie met lokale maxima aangeduid

Die zoekt namelijk de 2 kleinste translatievectoren die dit rooster genereert. De implementatie van deze transformatie is te vinden in de paper Extracting periodicity of a regular texture based on autocorrelation functions. Dit algoritme is zeer robuust en gaf zeer goede resultaten, zelfs bij texturen waarbij de patronen helemaal niet regelmatig zijn. Bij enkele texturen faalt het algoritme, maar dit zijn zorgen voor later.

Initiƫle figuur met rooster

Nog enkele voorbeelden zijn te zien in onderstaande figuren.

Muurschildering uit een Egyptische tombe in Thebe

Badkamer linoleum vloer

Stalen hek

Houten hek

maandag 27 oktober 2008

Eerste resultaten

Na het indienen van mij stageverslag kon ik eindelijk deftig beginnen. Na een nieuwe meeting met Ares kon ik reeds beginnen implementeren in Matlab. De eerste stap is het berekenen van de autocorrelatie van een figuur zodat het translatierooster zichtbaar wordt (zie figuren). Hierna is het de bedoeling dat de lokale maxima van deze correlatiematrix worden gezocht. Hiervoor is een zeer rekenintensief algoritme nodig, genaamd non-maximum suppression (http://www.vision.ee.ethz.ch/~aneubeck/). Om dit algoritme te versnellen, heb ik beslist dit in C te schrijven. Matlab ondersteunt MEX-plugins (MATLAB Executable), functies die dus in C-code geschreven zijn. Helaas heb ik deze functie nog niet helemaal afgewerkt voor de meeting van vandaag met Ares, maar dit zal alleszins niet lang meer duren.

Thesisstart

Dit is mijn eerste blogpost, en dat pas eind oktober. De eerste weken van het semester waren dan ook zeer druk, o.a. een stageverslag dat moest ingediend worden. Om alles recht te zetten zal ik een bondig overzicht geven van wat ik tot nu toe gedaan heb.

Het begon allemaal met een eerste thesismeeting met Ares op 07/07 waarin de thesis kort besproken werd en met een eerste ruwe planning. De grote vakantie zou grotendeels dienen om literatuurstudie te doen en eventueel een eerste implementatie te maken. Ik kon beginnen met het lezen van drie papers:
  • A Computational Model for Periodic Pattern Perception Based on Frieze and Wallpaper Groups: dit is de interessantste paper en is de basis voor de start van mijn thesis
  • Near-Regular Texture Analysis and Manipulation
  • Discovering Structural Regularity in 3D Geometry
Er werd beslist dat ik voor de implementatie best kon beginnen in Matlab en nadien eventueel kon overschakelen op C/C++ indien snelheid een grote bottleneck zou worden.

Tijdens de vakantie heb ik uiteindelijk enkel de drie papers kunnen uitlezen. Doordat ik een stage had, had ik een groot gebrek aan tijd.