Videotracking: Difference between revisions

From Control Systems Technology Group
Jump to navigation Jump to search
No edit summary
Line 45: Line 45:
Om een groen veld te filteren zou het logisch lijken om alle hoge Groen-waardes uit het frame te halen. Dit is echter niet zo, omdat bijvoorbeeld geel (groen + rood) en wit (alle kleuren) ook hoge groen-waardes hebben. Als alleen groen uit het frame moet worden gefilterd, is het nuttiger om te kijken naar het verschil tussen de Groen-waardes en de andere kleurwaardes, ofwel
Om een groen veld te filteren zou het logisch lijken om alle hoge Groen-waardes uit het frame te halen. Dit is echter niet zo, omdat bijvoorbeeld geel (groen + rood) en wit (alle kleuren) ook hoge groen-waardes hebben. Als alleen groen uit het frame moet worden gefilterd, is het nuttiger om te kijken naar het verschil tussen de Groen-waardes en de andere kleurwaardes, ofwel


<math>Filter: G>R*i & G>R*i </math>
<math>G>R*i & G>R*i </math>


In deze formule geeft i de intensiteit van het filter aan. Hoe lager i, hoe meer kleuren worden weggefilterd.
In deze formule geeft i de intensiteit van het filter aan. Hoe lager i, hoe meer kleuren worden weggefilterd.

Revision as of 14:38, 27 November 2015

Introductie

Video tracking is het volgen van objecten per frame van een video. In geval van een stilstaande camera wordt meestal één beginframe vergeleken met alle frames die erna komen. Het verschil tussen frame 1 en frame x zijn vervolgens alle bewegende objecten.
Het verschil tussen verschillende objecten en het bijhouden welk object waarheen gaat, wordt gemaakt door: ófwel van elk object een mesh te maken en die constant te vergelijken (dit werkt alleen als het object niet van vorm verandert), óf door het vergelijken van (voorspelde) snelheid en versnelling (dit werkt alleen goed als objecten niet te lang buiten beeld vallen of elkaar aanraken). Bewegende objecten worden gedetecteerd met behulp van zogenaamde mean-shifting. Per frame wordt er iteratief gekeken naar het gemiddelde van de cluster van punten (bewegende pixels) om zo positie, snelheid en acceleratie vast te stellen.

Deze pagina beschrijft kort de onderdelen van het video tracking algoritme, waarbij geavanceerde technieken op aparte pagina's uitgelegd worden.

Onderdelen van video tracking algoritme

Video tracking bestaat uit een aantal stappen, die in de introductie al kort beschreven zijn. In pseudo-code kan het als volgt beschreven worden:

Open video bestand of stream;

while ( not (einde video) ) {

 1. Open 1 frame uit video
 2. Detecteer interessante objecten uit het frame via image processing
 3. Vergelijk met tracks uit vorig(e) frame(s)
 4. Maak nieuwe tracks aan voor nieuwe objecten 
 5. Output gevonden tracks

}

Frame laden

Video analyse wordt logischerwijs altijd per frame gedaan, daarom moet het algoritme in een while-loop uitgevoerd worden, waarin in elke iteratie één frame geanalyseerd wordt en vergeleken met resultaten van de vorige. Dit heeft als groot voordeel dat slechts één frame tegelijk in het geheugen hoeft te blijven.
Het detectie-script accepteert zowel livestream als videobestanden, om mee te testen.

Object detectie

Een van de moeilijkste stappen van elk video analyse algoritme is image processing: uit een afbeelding (in dit geval één frame van een video) belangrijke objecten detecteren, en ruis negeren. Deze ruis zal voor komen bij elke camera in de praktijk.
Het moeilijkste probleem is echter bepalen wat er wel en niet gedetecteerd moet worden, en welke techniek deze objecten het best eruit kan filteren. Voor het filteren van objecten op een voetbalveld zijn twee technieken nodig:

  • Binaire detectie om lijnen, de bal en andere duidelijke markeringspunten duidelijk te filteren. Dit is een belangrijke eerste stap, want grotendeels op basis hiervan is de drone in staat de bal en de randen van het veld te volgen.
  • Kleurdetectie om het veld te onderscheiden van andere spelers (en de bal). Met deze filtertechniek blijven bepaalde kleuren bewaard, waardoor het verschil tussen spelers gezien kan worden.

Binaire afbeelding detectie

In de meeste gevallen wordt (eerst) een binaire detectie toegepast. Dit wil zeggen dat de afbeelding als zwart-wit (grijstinten) afbeelding gefilterd wordt. Het voordeel hiervan is dat de afbeelding nu slechts een LxB matrix van getallen (vaak zelfs integers) is, waarbij elke index een intensiteit-waarde tussen zwart (0) en wit (1 of 255) aanduidt.

In het geval van lijndetectie op een voetbalveld is deze techniek erg nuttig, aangezien witte lijnen een hoge intensiteit hebben. Hiervoor is een simpele thresholding-operatie genoeg.

Kleur detectie

Aangezien de test plaatsvindt op een voetbalveld, is het erg makkelijk om op basis van kleur de achtergrond uit een frame te filteren. Een afbeelding in kleur verschilt van een zwart-wit afbeelding slechts in het feit dat het bestaat uit 3 intensiteit matrixen, meestal in rood, groen en blauw (RGB), maar andere zijn ook mogelijk.
Om een groen veld te filteren zou het logisch lijken om alle hoge Groen-waardes uit het frame te halen. Dit is echter niet zo, omdat bijvoorbeeld geel (groen + rood) en wit (alle kleuren) ook hoge groen-waardes hebben. Als alleen groen uit het frame moet worden gefilterd, is het nuttiger om te kijken naar het verschil tussen de Groen-waardes en de andere kleurwaardes, ofwel

[math]\displaystyle{ G\gt R*i & G\gt R*i }[/math]

In deze formule geeft i de intensiteit van het filter aan. Hoe lager i, hoe meer kleuren worden weggefilterd.

Track bijhouden

Nadat uit een frame verschillende objecten zijn gedetecteerd, moeten deze aan bestaande tracks gelinkt worden of, als dit niet lukt, een nieuwe track krijgen. (...)

Nieuwe tracks

Output

Mesh tracking

Velocity prediction tracking

Video tracking in MATLAB

MATLAB heeft een standaard example dat als basis kan worden gebruikt voor video tracking.

typ >>multiObjectTracking in command window.

Typ >>edit multiObjectTracking voor de code.

Zie MathWorks site. [1]

NOTE: je hebt een support package nodig als je een webcam wil gebruiken: [2]