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