Woensdag Middag

Post date: 24-Jun-2009 14:15:54

Er werkt iets! Op een zwarte achtergrond, met niet al te veel licht kan matlab momenteel drie vormen vinden. Na drie minuten rekenen weet Matlab de draaihoek die het blokje maakt ten opzichte van de doos (dus dat is ook erg positief) en kan hij bovendien al twee van de drie vormen goed matchen op de juiste figuurtjes. Het halve rondje wordt alleen nog wel aan het ruitje gelinkt, dus de image match functie werkt nog niet helemaal. Matlab vind nu nog dat het halve rondje nog niet echt op het gat in de doos lijkt, maar meer op het ruitje. Het ruitje is ongeveer 5% meer match dan het halve rondje. We moeten nu alleen zorgen dat alle vijf de blokjes herkend worden. De donkere blokjes worden niet herkend omdat we het plaatje omzetten naar zwart-wit, en dus worden de donkere blokjes zwart. We gaan testen met meer licht, als dat niet helpt kunnen we die blokjes altijd nog een lichtere kleur geven.

Ons resultaat tot nu toe:

Zoals hier goed te zien is, matchen het rondje en het rode rechthoekje op de goede gaatjes in de doos. Toch weer een redelijk resultaat!

Om het beeldherkenningsproces te demonstreren volgt een voorbeeldje. In het voorbeeld staat alleen de blokkendoos en een blokje in beeld.

(1) Maak van de webcam foto een binary image. Het plaatje hieronder is een resultaat van ontwikkelingen die Martijn vanavond zal doen. Hierin maakt hij gebruik van kleurherkenning om de goede gebieden wit te krijgen. Daarna wordt er nog eventuele ruis uitgehaald.

De binary image kan door matlab geanalyseerd word met regionprops(). Deze functie geeft een lijst gebieden terug waarvan eigenschappen zoals oppervlakte en boundingbox(wordt zo uitgelegd) opgevraagd kunnen worden.

(2) Nadat we het binary image geanalyseerd hebben pakken we het grootste gebied in het plaatje, dit is de blokkendoos.

(3) We inverteren dat plaatje en waardoor we de gaten in de blokkendoos als nieuwe witte gebiedjes krijgen.

(4) Pak de vorm die buiten de blokkendoos stond - het blokje dus. We gaan dit nu matchen met alle gaten die we in de blokkendoos hebben gevonden maar dat doen we niet zomaar, we draaien het blokje eerst 360 graden in stapjes van 1 graad en kijken met welke hoek we de beste match krijgen. Dat doen we voor elk gat. Daarna kijken we welk gat de beste match heeft.

Het plaatje hieronder illustreerd wat een boundingbox is, namelijk het kleinste vierkant om een wit gebied heen.