Marco Jacobs werkt als vicepresident marketing bij Videantis uit Hannover, dat processor-IP voor beeldverwerking en videocompressie licenseert aan halfgeleiderbedrijven.

4 July 2014

Slimme beeldverwerking heeft enorme potentie. Een beeldsensor levert bergen data. De algoritmes en platforms om deze te interpreteren, maken een compleet nieuwe gebruikerservaring mogelijk, op de mobiel, in de huiskamer en in de auto. Marco Jacobs laat zijn licht schijnen over toepassingen, gebruikte technieken en benodigde platforms.

Volgens Wikipedia is beeldverwerking ‘elke vorm van signaalverwerking waarvoor de input een afbeelding is, zoals een foto of een videoframe, en de output ofwel een beeld ofwel een verzameling van karakteristieken’. Overal om ons heen hebben we ermee te maken. Onze mobieltjes doen eraan, onze televisies, wijzelf.

Bij de mens doen de ogen het simpele werk: scherpstelling (soms geholpen door een bril), belichting en kleuring. Het echt interessante gebeurt in onze hersenen, waar we de beelden interpreteren en er betekenis aan geven. Onderzoek heeft aangetoond dat ongeveer de helft van ons brein bezig is met beeldverwerking. Blijkbaar vergt deze taak heel veel rekenwerk en loont het om er zo veel hardware voor in te zetten.

Toepassingen

Een decennium geleden waren het vooral professionele toepassingen die beelden omzetten in betekenis: camera’s die producten en het maakproces inspecteerden of die al dan niet bewegende objecten detecteerden en op basis daarvan beslisten om alarm te slaan. De afgelopen tien jaar is beeldverwerking doorgedrongen tot veel consumentenproducten. Tegenwoordig kan een goedkope digitale camera al gezichten herkennen om daarop de autofocus aan te passen.

Een van de bekendste successen van slimme beeldverwerking is de Xbox Kinect van Microsoft. Dit apparaat, van oorsprong een spelcomputeraccessoire, projecteert een patroon van infrarood licht op zijn omgeving en construeert aan de hand van de vervorming een beeld van de diepte. Met deze diepte-informatie is eenvoudig onderscheid te maken tussen objecten, bijvoorbeeld tussen de speler die dichterbij staat en de achtergrond. Inmiddels heeft de Kinect ook zijn weg gevonden naar de industrie.

In de mobiele telefoons van tegenwoordig zitten vaak twee camera’s. Drie zelfs, als we ook de touchsensor op het scherm als zodanig beschouwen. Deze neemt een beeld waaruit de positie van de vingers is af te leiden. Daarnaast zit er in de Iphone 5S nog een scanner die een vingerafdruk neemt en analyseert.

Toch staat beeldverwerking pas aan het begin van haar carrière. Er zijn nog vele nieuwe toepassingen in ontwikkeling en grote innovatieve bedrijven zoals Google steken er veel geld in. Meest tot de verbeelding spreekt waarschijnlijk de zelfrijdende auto. Onlangs introduceerde Google een tweepersoonsautootje dat niet harder kan dan 40 km/u en geen stuur, gas- of rempedaal heeft dat een persoon kan bedienen. Door foutloos hun werk te doen, moeten deze en andere zelfrijdende wagens het gros van de verkeersongelukken voorkomen.

Een ander opmerkelijk initiatief van Google is Project Tango. Dit voegt meerdere beeldsensoren toe aan mobieltjes en tablets. Hoofddoel van deze diepte- en fisheyecamera’s is niet om mooie plaatjes te schieten, maar om het beeld te analyseren, zodat de devices precies weten wat hun positie in een ruimte is. Dit maakt interessante augmented reality-games mogelijk. Denk aan Mario die niet alleen op platformpjes op het scherm springt, maar ook op de banken, tafels en kasten om ons heen. Daarnaast opent het de deur naar nauwkeurige positiebepaling binnenshuis, waar GPS niet werkt, en naar een versie van Google Maps die ook gebouwen in kaart kan brengen.

Basistechnieken

De algoritmes aan de basis van slimme beeldverwerking zijn nog erg in beweging. Wetenschappers publiceren de ene paper na de andere en bedrijven hebben allemaal hun eigen aanpak. Een populaire oplossing op dit moment is OpenCV. Deze opensource bibliotheek biedt een stuk of duizend verschillende functies, waarvan meestal maar een klein deel echt wordt gebruikt. Verder werkt de Khronos-groep, bekend van OpenCL, OpenGL en Openmax, aan OpenVX, een library om efficiënte embedded beeldverwerkingssystemen mee te bouwen. Het pakket bevat slechts een veertigtal functies en een streaming framework waarmee tijdelijke data zo veel mogelijk lokaal zijn te houden, om het aantal lees- en schrijfoperaties naar extern geheugen te minimaliseren.

De meeste algoritmes zijn echter variaties op hetzelfde thema. Drie technieken komen vaak terug. Met feature detection zijn interessante punten in een beeld te vinden, meestal hoeken. Een plaatje van een vierkant kunnen we zo omzetten in vier hoekpunten. Er zijn meerdere metrieken om te bepalen of er een hoekpunt is gevonden, maar heel veel ontlopen deze elkaar niet.

Een tweede basistechniek is feature tracking. Hiermee zijn de gevonden punten te volgen van frame tot frame. Zo krijgen we informatie over de richting en snelheid waarmee objecten in beeld zich verplaatsen.

Een derde kernalgoritme is object detection. Hiermee zijn objecten van een specifieke klasse op te sporen in een beeld, bijvoorbeeld personen, gezichten of auto’s. Dergelijke algoritmes hebben training nodig. Aan de hand van een uitgebreide beeldbank van te herkennen en te negeren objecten leiden we parameters af die als input dienen voor de realtime objectdetector. Dit trainingsproces vereist een hoop tuning en handmatige bijsturing. Door het vele rekenwerk gebeurt het bovendien offline.

De laatste jaren is er een nieuwe klasse van objectdetectiealgoritmes bij gekomen: convolutional networks, ook wel bekend als deep learning. Hiermee zijn objecten met hogere accuratesse en generieker op te sporen. Ook zou het trainen makkelijker gaan.

Platforms

Beeldverwerking kost veel rekenkracht en doet vaak brute force aan. Een 5 megapixel zwart-witcamera die met dertig frames per seconde opneemt, genereert honderdvijftig megasamples per seconde. Veel algoritmes maken hier eerst een multiresolutieplaatje van door het beeld met een kleine schaalfactor steeds verder te verkleinen. De objectdetectiefunctie zoekt door al deze verschillende resoluties naar een match, wat voor nog meer data zorgt, een ordegrootte meer zelfs.

Lageresolutiebewerkingen en simpele algoritmes zijn nog wel te implementeren op een standaard hostprocessor in een embedded systeem. Als het complexer wordt, moeten we echter op zoek naar alternatieve platforms. GPU’s zijn de afgelopen jaren een stuk krachtiger geworden en de tools om ervoor te optimaliseren een stuk beter. Toch zijn ze doorgaans nog niet efficiënt genoeg. Ze gebruiken een hoop energie en zijn kostbaar door het grote siliciumoppervlak. FPGA’s zijn alleen een alternatief voor lagere volumes. De algoritmes in hardware gieten is het meest efficiënt, maar aangezien ze vaak nog onderhevig zijn aan verandering, is dit evenmin een goede oplossing.

Een nieuwe klasse van digitale signaalprocessoren, specifiek ontwikkeld voor energie-efficiënte en high-performance beeldverwerking, kan uitkomst bieden. Deze hebben niet de bagage van een Risc-processor die efficiënt besturingssystemen, webbrowsers en andere grote softwarestacks moet draaien. Ze hebben ook niet de bagage die GPU’s hebben door hun historie in 3D-graphics. Een specifieke video-DSP lijkt vooralsnog de beste oplossing.

Edited by Nieke Roos