Je leest:

Rondlopende streepjescodes

Rondlopende streepjescodes

Systeem herkent dieren op basis van patroon

Auteur: | 9 april 2011

Ga je op safari? Download dan even het programma ‘StripeSpotter’, want dan weet je direct welke zebra je voor je hebt. Het systeem kan op basis van een foto het patroon herkennen en het dier daarmee terugvinden in een database.

Flickr: jschinker

In wildreservaten wordt het gedrag van de dieren meestal in de gaten gehouden. Soms gebeurt dat met ingeplante zendertjes, maar de kosten kunnen hierbij hoog oplopen. Het komt er daarom meestal op neer dat onderzoekers het veld in gaan of foto’s en video’s bekijken. Een tijdrovende bezigheid.

Een groep onderzoekers heeft daarom een automatisch herkenningssysteem ontwikkeld. StripeSpotter, zoals het programma heet, identificeert dieren zoals zebra’s, tijgers en giraffes op basis van hun streepjespatroon. De onderzoeker voert een foto in, geeft aan waar het patroon zichtbaar is en StripeSpotter laat zien welk dier in de database er het meest op lijkt.

Vlakken vinden

Een bijzonder aspect aan het systeem is dat het werkt met heel gewone foto’s: er is geen speciale camera nodig en het beest hoeft ook niet op precies de goede manier op de foto te staan. De onderzoeker hoeft alleen maar een kader op de foto te tekenen daar waar het patroon zich bevindt. Dat gebied heet ook wel de region of interest (ROI).

Het systeem gaat als eerste stap de aangegeven ROI segmenteren. De pixels van de afbeelding worden daarbij verdeeld in groepen, zodat de computer beter met het plaatje overweg kan.

De segmentatie verdeelt het beeld in verschillende onderdelen, meestal voorgrond (object) en achtergrond: een grijstint wordt hierdoor óf zwart óf wit. Met een threshold (grenswaarde) gaat dit het snelst. Elke beeldpixel met een waarde hoger dan de threshold, wordt als voorgrond gezien en de rest als achtergrond.
Lahiri et al., 2011

Voor het segmenteren is het belangrijk dat de kleuren in het patroon goed contrasteren. Het programma werkt daarom het best voor dieren zoals zebra’s en giraffen: die hebben een patroon met relatief grote vlakken in een kleur die contrasteert met de rest.

Een eigen code

Na het segmenteren, wordt het patroon vertaald in een code. Elke rij pixels in de afbeelding bestaat uit nullen en enen, zoals je in de afbeelding hiernaast kunt zien. Zo’n rij kun je inkorten met ‘run length encoding’. Het algoritme verandert 0011101 in de code (0,2) (1,3) (0,1) (1,1) oftewel ‘2 nullen, 3 enen, 1 nul, 1 één’.

Het programma gaat hierna nog een stapje verder, door de lengtes van de subrijen (2, 3, 1 en 1) uit te drukken in ratio’s. De tweede subrij is bijvoorbeeld 11/2 keer zo lang als die ervoor en derde subrij is weer 1/3 van de tweede subrij. Op deze manier verandert de code in (1, 11/2) (0, 1/3) (1,1). Het eerste blok verdwijnt dus.

De code van één rij noemen ze een StripeString en een verzameling van zulke rijen (het complete patroon) een StripeCode. Die StripeCode wordt gebruikt om het patroon van een dier te herkennen. Het maakt hierdoor niet zoveel uit hoe het patroon precies op de foto staat. Mocht de zebra bijvoorbeeld iets gedraaid staan of is slechts een gedeelte van het patroon zichtbaar, dan werkt de herkenning nog steeds.

Door het gebruik van de StripeCode is het niet erg dat de zebra niet recht op de foto staat.
Lahiri et al., 2011

Check de match

Maar hoe herken je nou de zebra? Dat is de volgende stap. In een database staan een heleboel StripeCodes opgeslagen en daarmee wordt de nieuwe code vergeleken. Het systeem gebruikt daarvoor het ‘edit distance algorithm’. Dat betekent dat je twee codes naast elkaar legt en dan kijkt ‘hoeveel moeite het kost’ om de ene code te veranderen in de andere. Je kunt de code 00111 bijvoorbeeld makkelijker veranderen in 00011 dan in 11000: in het eerste geval hoef je maar één cijfer te veranderen en in het tweede geval alle cijfers. Dat betekent dat het 00111 en 00011 meer op elkaar lijken.

Op deze manier vergelijkt het systeem een nieuwe code (van het zojuist gespotte dier) met alle codes die al in de database zitten. Van de code die er het meest op lijkt, verschijnt het oorspronkelijke patroon in beeld. Zo kan de onderzoekers kijken of het inderdaad hetzelfde beest is.

Dit is een screenshot van het programma. De ingevoerde zebrafoto staat links en rechtsboven; rechtsonder zie je de beste match. De onderzoeker kan nu aangeven of het echt dezelfde zebra is.
Lahiri et al., 2011

Op zoek naar zebra’s!

Het systeem is getest in het natuurreservaat Ol’Pejeta Conservancy in Kenia. De onderzoekers hebben daar een week lang foto’s gemaakt van twee typen zebra’s en een expert heeft daarna (op basis van een bestaande database) op bijna elke foto de zebra geïdentificeerd.

Een greep uit de dataset
Lahiri et al., 2011

Vervolgens werd er telkens een groepje zebra’s geselecteerd en één foto gebruikt als zoekopdracht. Het systeem rangschikt daarna de foto’s in de database: degene die het meest lijkt op de ingevoerde afbeelding, komt bovenaan. De vraag is dan hoe hoog de juiste foto in deze lijst staat.

Geen vingerafdruk

Hoewel een zebrapatroon lijkt op een vingerafdruk, is software voor het herkennen van vingerafdrukken niet geschikt. Een zebra werkt over het algemeen niet erg mee, waardoor het patroon minder goed op de afbeelding staat dan een vingerafdruk gemaakt met een scanner.

Het blijkt dat de nieuwe StripeCode-methode erg goed werkt. De onderzoekers hebben de resultaten vergeleken met twee andere technieken, één die gemaakt is om salamanders te herkennen en één methode voor gezichtsherkenning. Deze technieken waren een stuk sneller, maar de juiste foto kwam vaak niet bovenaan te staan, wat dus een slechter resultaat is.

Daarnaast heeft StripeCode een ander groot voordeel. In tegenstelling tot de andere methodes laat het zíen hoe goed een match is. Dat is een belangrijk aspect, want daardoor kan een onderzoeker makkelijk definitief beslissen of het dezelfde zebra is.

Bron:

Het systeem is ontwikkeld door onderzoekers van University of Illinois (Chicago) en Princeton. Ze presenteren het later deze maand op de International Conference on Multimedia Retrieval. De paper kun je al downloaden:

Lees meer over beeldverwerking op Kennislink:

Oeps: Onbekende tag `feed’ met attributen {"url"=>"https://www.nemokennislink.nl/kernwoorden/beeldverwerking/index.atom?m=en", “max”=>"7", “detail”=>"minder"}

Dit artikel is een publicatie van NEMO Kennislink.
© NEMO Kennislink, sommige rechten voorbehouden
Dit artikel publiceerde NEMO Kennislink op 09 april 2011

Discussieer mee

0

Vragen, opmerkingen of bijdragen over dit artikel of het onderwerp? Neem deel aan de discussie.

NEMO Kennislink nieuwsbrief
Ontvang elke week onze nieuwsbrief met het laatste nieuws uit de wetenschap.