Thumbnail Computer Vision

Door: Thijs Zumbrink
25-02-2011 16:59

Computer vision is cool! In opvolging op mijn vorige artikel over dit onderwerp laat ik hier een aantal voorbeelden zien van wat de techniek vandaag de dag mogelijk maakt. Tijdens de colleges liet de docent deze en meer afbeeldingen aan mij zien, en heb ik geleerd hoe de meeste technieken werken. Ondertussen heb ik het vak afgerond en ben ik bezig met een project in dit vakgebied. Tip: klik op de afbeeldingen voor een groter beeld!

Allereerst een mooi voorbeeld van automatic image stitching:
Geplaatste afbeelding

De input is een stel foto's van een bepaalde scene, in dit geval een berglandschap. Met zogenaamde SIFT-features worden herkenbare punten geselecteerd in de afbeelding. Denk hierbij aan hoekpunten en andere punten die een hoge herkenbaarheid hebben. De software merkt op dat veel van deze features overeenkomen tussen de afbeeldingen. De afbeeldingen worden getransformeerd om perspectief-, rotatie- en schaalverschillen weg te halen, en dan kunnen ze over elkaar heen gelegd worden om ze aan elkaar te plakken.

Vervolgens is image inpainting een mooie techniek om ongewenste objecten (ex vriend of vriendin?) uit foto's te halen. Het werkt echter ook op foto's die verpest zijn door beschadigingen, scheuren of bij het verwijderen van tekst uit afbeeldingen:
Geplaatste afbeelding
(Klik op de bovenstaande afbeelding voor een geanimeerd beeld.)

Geplaatste afbeelding
Geplaatste afbeelding
(Klik op de bovenstaande afbeeldingen voor een beter beeld.)

Hoe werkt het? De gebruiker kiest een gebied in de foto dat verwijderd moet worden. De software gaat vervolgens op zoek naar image patches (stukjes in de rest van de afbeelding) die goed aansluiten op de rand van het verwijderde gebied. Hierbij spelen allerlei factoren een rol, zoals dat lijnen goed door blijven lopen. Zie ook de demo video van PatchMatch dat hieraan verwant is.

Ook een hele mooie techniek is image analogies. Dit stelt je in staat om bepaalde analogieen te extraheren uit twee input images, en die analogie toe te passen op een derde input. Bijvoorbeeld:
Geplaatste afbeelding
Geplaatste afbeelding

Deze twee afbeeldingen worden ingevoerd. De eerste afbeelding is een kleurcodering van het landschap, gemaakt door een persoon. De tweede afbeelding is een echte foto van een bestaand gebied. De software zal heel hard gaan nadenken en maakt vervolgens allerlei associaties tussen deze twee afbeeldingen, een zogeheten image analogy. Dan wordt een derde invoer gegeven, getekend door een persoon:
Geplaatste afbeelding

De software zal uit deze afbeelding, met de kennis van de image analogy, deze afbeelding van een niet-bestaand landschapgenereren:
Geplaatste afbeelding

Meer informatie voor de geinteresseerden, waar ook de techniek beschreven is in een paper. Met de techniek kun je ook de texture van een afbeelding veranderen, bijvoorbeeld:
Geplaatste afbeelding
Geplaatste afbeelding

... geeft als uitvoer:
Geplaatste afbeelding

Als laatste een techniek die image based material editing heet:
Geplaatste afbeelding

... wordt:
Geplaatste afbeelding

Hierbij een object in de afbeelding aangegeven, waarvan het materiaal gewijzigd wordt. In dit geval is ervoor gekozen om het beeld doorzichtig te maken. De software weet niet wat er achter het beeld is (immers, de foto is de enige invoer) maar pakt zijn informatie uit het omliggende gebied, net zoals bij image inpainting. De distortie van het licht, waardoor het beeld rond lijkt, is gedaan met een techniek die Shape From Shading heet. Hierbij wordt de 3D vorm van het beeld geschat door middel van variaties in de lichtval op het beeld. Over Shape From Shading doe ik momenteel een experimentation project.

Reacties
Log in of registreer om reacties te plaatsen.