Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , 38 reacties

Google en MIT hebben een methode ontwikkeld om reflecties uit foto's te halen, als de fotograaf bijvoorbeeld een foto neemt uit een raam. Het algoritme werkt ook op panorama's. Ook foto's door een hek heen kunnen dan 'obstakelvrij' worden gemaakt.

Het algoritme werkt door middel van het maken van meerdere foto's snel achter elkaar en van net andere posities, blijkt uit de paper van de onderzoekers. Omdat het raam dichterbij is dan het onderwerp van de foto, verschuift de reflectie op een andere manier dan de achtergrond. Op basis daarvan haalt de software de reflectie eruit.

De software levert vervolgens twee foto's af, waarvan een van de achtergrond zonder reflectie en een van wat de reflectie veroorzaakt. De methode werkt ook als mensen door hekken heen fotograferen, op dezelfde manier. Volgens de onderzoekers is de software tevens bij low-light foto's bruikbaar.

De onderzoekers gebruikten voor het experiment de HTC One M8 en Samsung Galaxy S4. Ze kwamen erachter dat vijf foto's en een beweging van een paar centimeter genoeg is om de reflecties uit foto's te kunnen halen.

Ze presenteren hun bevindingen op Siggraph 2015, een evenement over computergraphics dat volgende week plaatsvindt. Of en wanneer de software beschikbaar komt voor gebruik door consumenten, is vooralsnog onbekend.

Het werk borduurt voort op een eerder onderzoek naar het verwijderen van reflecties uit foto's. Die methode was alleen bruikbaar bij dubbelglas. Deze nieuwe manier werkt ook bij enkel glas en hekken.

Moderatie-faq Wijzig weergave

Reacties (38)

Misschien wel het belangrijkste technische wat niet in het artikel op tweakers staat maar wel in de publicatie op hun website dat is dat op het bewerken niet plaatsvond op de smartphone maar op een desktop computer met Intel Xeon CPU (8 cores) en 64GB geheugen en een MATLAB toepassing. Het verwerken van de afbeelding met een resolutie van (1152x648) nam 20 minuten in beslag en vereisde 3GB RAM. Het verwerken van een lage-resolutie (480x270) nam 2 minuten in beslag en vereisde 1GB RAM. Daarnaast hebben ze ook een applicatie prototype gemaakt voor een Windows Phone (in C++) welke lage resolutie afbeeldingen (480x270) converteert in minder dan 2 minuten. De meeste behaalden verwerking van 5 tot 7 frames per seconde.

[Reactie gewijzigd door donderdraak op 5 augustus 2015 22:27]

Dus het enige dat het kost is tijd. Fair enough.

Maar als het nu in MATLAB gemaakt is, gaat de performance dan niet omhoog als het uiteindelijk in native code wordt geimplementeerd? Want M is toch een geinterpreteerde taal?.. Of compileert dat ook helemaal naar x86 machinetaal?

Los daarvan kan er vast nog wel eea geoptimaliseerd worden.
Dit klopt inderdaad.
Het is heel normaal in een research omgeving om je beeldbewerking algorithme in MATLAB te ontwikkelen zonder over snelheid en werkgeheugen na te denken.
Als dan genoeg bewezen is dat het algorithme doet wat het zou moeten doen, kunnen er altijd nog meerdere optimalisatieslagen overheen. Voordat het in een toepassing gebruikt gaat worden.

[Reactie gewijzigd door MaffeMaarten op 6 augustus 2015 08:02]

Niet praten over zaken waar je geen verstand van hebt. De functies en algorithmen in Matlab zijn onderhuids zéér goed geoptimaliseerd, en gewoon gecompileerd. Wanneer iemand verstand van Matlab heeft, en daardoor geen domme dingen doet, (zoals loops wanneer je een array moet gebruiken) dat is de Matlab code i.h.a. verschrikkelijk snel. Heel vaak dat een vertaalslag in C beduidend langzamere code oplevert, dan de Matlab code!

Er vanuitgaande dat die onderzoekers waren die goed met Matlab kunnen omgaan, moet je dus niet te veel verwachten van een vertaalslag. Waar je meer van kunt verwachten is een mogelijkheid om het met een gpu te bewerken.
Sorry, maar je slaat zelf de plank mis. Het klopt dat veel Matlab instructies sterk geoptimaliseerd zijn. Maar het blijft een geinterpreteerde taal dat naar een managed programming language leunt. Je hoeft niet je eigen resources te managen, en daarmee geef je je performance eigenlijk over aan de matlab engine. Deze generieke engine zal jouw programma nooit zo goed kunnen optimaliseren als jij zelf.

Als je performance wilt halen kun je je tijd beter investeren in het leren programmeren in talen die assembly outputten. Natuurlijk zal matlab bij correct gebruik sneller zijn dan bij incorrect gebruik. Maar een mediocre programmeur haalt al makkelijk een factor 2 of 3 performance winst in een native programmeertaal.
In theorie kun je alles zelf beter optimaliseren... In de praktijk gaat het vaak veel beter wanneer je met hogere abtractie vormen werkt. Volgens jouw redenatie zou iedereen nog steeds in assembler moeten programmeren. Gelukkig zijn we dat stadium allang voorbij.

Het is een illusie te denken dat een mediocre programmeur makkelijk een factor 2 snelheidswinst haalt over Matlab. Ik heb er veel praktijk ervarnig mee, en i.h.a. zal die programmeur een factor 2 tot 3 snelheids verlies halen t.o.v. Matlab. Het is zelfs voor goede ervaren programmeurs verdomd lastig om in C je rekenwerk net zo snel als Matlab te krijgen, laat staan dat je het sneller krijgt.

Het voordeel van lage programmeertalen is tegelijk het nadeel, namelijk dat je zelf alle optimalisatie moet doen. In hogere talen kun je profiteren van de optimalisatie die anderen gemaakt hebben. En in veel gevallen zijn die anderen simpelweg beter, omdat het hun specialisme is, en niet de jouwe. (Jijzelf bent immer met het beeldverwerkings algorithme bezig, en niet met lagere functionaliteiten)

[Reactie gewijzigd door AHBdV op 6 augustus 2015 14:22]

Dat klopt helemaal. En de meeste optimalisatieslagen zullen bij voorkeur gebeuren op het niveau van het matlabscript zelf. (Bijv. door net iets om te schrijven waardoor je arrays kan gebruiken ipv loops ;) )

Als je dan een toepassing wilt die ergens in je camera of of je telefoon draait zul je volgens mij niet ontkomen aan het porten naar een lagere taal en zal je zelf wat meer na moeten denken over optimalisatie.
Niet praten over zaken waar je geen verstand van hebt.
Zonder grof te zijn: ik vrees dat in eerste instantie jijzelf dit advies dient te volgen. Ik werk nu 12 jaar aan allerlei video-algoritmes, gaande van ontwikkeling in Matlab en/of C(++) tot implementatie op FPGA in VHDL. Ik kan je zeggen dat de meest geoptimaliseerde matlab-code factoren trager is dan equivalente c-code. Dit is natuurlijk logisch aangezien er under the hood van matlab wat generiekere c/fortran draait en hier en daar wat assembler.
Kan je wat bronnen citeren om je bewering dat matlab sneller zou zijn dan c, aanhalen? Want ik vind dit een absurd statement voor iemand met een R&d-badge.

Concreet voor het algoritme dat hier getoond wordt is de moeilijkheid het iteratieve karakter dat parallellisatie moeilijker toelaat. Overgaan naar een GPU/FPGA implementatie zal waarschijnlijk minder snelheidswinst opleveren dan je zou hopen.
In de video geven de onderzoekers aan dat ze RANSAC gebruiken om onjuiste entries in de gemeten dataset te verwijderen. Dit algoritme heeft een hoge nauwkeurigheid, maar presteert alleen optimaal als de 'sweet spot' van aantal iteraties wordt gevonden: het aantal iteraties waar een bepaalde nauwkeurigheid gegarandeerd wordt zonder dat het algoritme te veel tijd in beslag neemt. Het is aannemelijk dat in de context van het onderzoek een hoge threshold voor het aantal iteraties wordt gebruikt, omdat de tests dan een grotere slagingskans hebben. Als deze methode bijvoorbeeld op telefoons in gebruik wordt genomen zal het iteraties teruggeschroefd worden (of een ander filteralgoritme gebruikt worden).
Klinkt als een perfecte toepassing voor in de cloud. Ik upload mijn fotorol toch al automatisch naar Dropbox. Als ik een vinkje op de foto kan toggelen dat de cloud alles ont-reflecteert, mag dat van mij best 20 minuten duren. En als de foto daarna automatisch weer naar mijn fotorol wordt gedownload ben ik helemaal blij!
Ik zeg MATLAB cloud aanzwengelen met je telefoon ;)

Ik weet niet of het met deze specifieke toepassing ook kan. Buiten dat, info over beide:
http://nl.mathworks.com/discovery/matlab-ec2.html
https://play.google.com/s...om.mathworks.matlabmobile
https://itunes.apple.com/...b-mobile/id370976661?mt=8
Je hebt geen MATLAB nodig als je dit als cloud-leverancier wilt productizen. Je kan je M code gewoon 'exporteren' naar C om op te nemen in een workflow.

[Reactie gewijzigd door JackBol op 5 augustus 2015 22:54]

Ik denk toch niet dat een cloudprovider er blij van wordt als één gebruiker 8 cores 20 minuten lang helemaal volstampt en daarbij 3GB geheugen verbruikt.

En dat is nog maar voor een foto op vrij lage resolutie.
Niet zo spannend, met een polarisatiefilter kan je de reflecties ook wegwerken en krijg je ook nog een mooi contrast. Leuk dat ze het mobiel kunnen gaan toepassen, maar voor de fotografiewereld is het geen aanwinst. Een foto moet zo goed mogelijk gemaakt worden zodat je er later niet al te veel aan hoeft te bewerken.
Een foto moet zo goed mogelijk gemaakt worden zodat je er later niet al te veel aan hoeft te bewerken.
Eens, maar hekken (ik lees takken of gras) zijn vaak erg lastig. En daarvoor kan het best handig zijn.
Of je dan nog een foto neemt of maakt laat ik in het midden.
Inderdaad, volgens mij kan je er zowat alles wat zich in de voorgrond bevindt mee wegpoetsen. Zolang je maar voldoende beelden hebt waaruit de achtergrond gereconstrueerd kan worden. Daar kan een polarisatiefilter niet tegenop hoor!
Het verschil is toch wel dat een pola filter fysiek het licht eruit filtert en dit het berekend doet. Ik gok dat de techniek zijn oorsprong kent in "vergroot die reflectie eens", omgekeerde tool maw.

[Reactie gewijzigd door analog_ op 5 augustus 2015 18:23]

De fotografiewereld is een breed begrip maar jij doelt vooral op een kleine groep fotografen.
Nu wil het feit dat de groep mensen die foto's neemt steeds groter aan het worden is. Betaalbare dslr camera's, camera's op iedere telefoon die steeds beter worden.
Er worden dus steeds meer en meer en nog meer foto's genomen. De vraag naar dit soort toepassingen zal dus steeds groter worden.
Sterker nog zou je deze techniek combineren met bijv camera's die met een verschillende diafragma foto's maken zodat je zelf in de foto scherp kan stellen zal dit algoritme misschien nog beter werken
Ga je verder kijken neem een telefoon of camera met 2 lenzen, wie weet is 1 foto met beide lenzen dan al genoeg om dit weg te halen.
Met steeds sneller wordende cpu's kun je in de toekomst dit misschien met video en 2 lenzen gaan toepassen.

Ben je csi freak 2 foto's met genoeg weerspiegeling en je kunt kijken wie de foto in de weerspiegeling gemaakt heeft.

Dus ja voor de fotografiewereld is dit zeker een aanwinst
En nee mak je stillevens, portretten dan heb je hier weinig aan.
In theorie wel, maar het compleet uit de weg gaan van reflecties dmv een polarisatie filter werkt alleen wanneer het licht er exact onder een bepaalde hoek opvalt, en anders niet.
Een CPL filter werkt ook maar tot op zekere hoogte. Zware reflecties kun je er hooguit mee verminderen, maar zullen nooit helemaal verdwijnen. Andere voorgrondobstakels ga je met een CPL filter zeker niet wegknippen. Als je geen controle hebt over de situatie (wat als studiofotograaf natuurlijk ondenkbaar is, maar niet iedereen schiet in een studio), is het veel flexibeler om dit digitaal doen. En *achteraf*, als je alweer thuis bent, en niet even terug kan.

[Reactie gewijzigd door _Thanatos_ op 6 augustus 2015 01:20]

Pfff, iets met appels en peren. Natuurlijk is het wel een aanwinst. Sowieso zijn de effecten van een polarisatiefilter al erg afhankelijk van de hoek waaronder je fotografeert. Het lukt lang niet altijd om het gewenste resultaat te bereiken. En dat is nog los van het feit dat een polarisatiefilter ook nadelige effecten kan hebben. Zoals 1 a 2 stops lichtverlies, of het feit dat de lucht vaak niet egaal kleurt.

Het is gewoon een toekomstig digitaal filter dat soms van pas kan komen, of heb jij ook nog zwart-wit fotorolletjes voor als je een keer geen kleur wilt? Natuurlijk, ik probeer ook alles zoveel als mogelijk op te lossen met mijn camera en losse filters, maar er zijn genoeg gelegenheden waarop een slim digitaal algorithme een boel werk uit handen kan nemen. En dat is nog los van het feit dat je na elke vakantie/shoot altijd wel een foto hebt waarbij je denkt: 'verdomme, die was echt goed geweest als......'

Tijden veranderen en vrijwel elke foto wordt beter met een beetje nabewerking. Daarbij vind ik sowieso dat jij niet in je eentje kunt oordelen of iets wel of geen aanwinst is voor de fotografiewereld.
Waar ik met name onder de indruk van ben is de reflectie die hersteld wordt - dit kan worden gebruikt om bijv. uit de reflectie van beveiligingsbeelden een beeld te vormen van een verdachte. Zwakte zit duidelijk in het feit dat er meerdere frames moeten zijn vanuit een net iets andere hoek of waarin het te filmen object zich beweegt.

Gaaf om te zien wat ze nu al kunnen op dit gebied.
Ik moest denken aan een scene uit numbers (of het kan ook een of andere SCI zijn geweest) waar ze een gezicht haalden uit de reflectie van iemand zijn oog. Toen dacht ik WTF, nu lijkt dat niet zo zot meer...
dat is nog steeds zot, want dat oneindig inzoomen is zooo dom. Zoom in, Enhance, Detect, Hey HD pic van iemands oog ;). Als die camera een optische zoom heeft en je het realtime doet zou het nog enigszins reëel zijn (hoewel het dan nog om een heel hoge zoomfactor gaat)
Volledig mee eens, maar je weet in de TV wereld kan je door te interpoleren de resolutie oneindig verhogen hé (werd ook letterlijk gezegd tijdens een aflevering van Numbers, achteraf gezien vraag ik mij af hoe het komt dat ik die serie heb uitgezien }:O )
Een hele hoop termen zijn voor mij een brug te ver maar dit is een verdomd knap staaltje techniek! Een tijdje terug ook al iets gezien hierover (of het hetzelfde project was weet ik niet) maar ik heb echt heel het filmpje met open mond zitten kijken. Petje af!
nieuws: MIT verzint manier om reflecties uit foto's te halen

Dat was hetzelfde project.

Ik wil wel een Project Ara module zieen met twee cameras die de foto in 3D rendert en objecten kan verwijderen. Dan kan je wel leuke fotos maken :3
Ik vraag mij wel af of de smartphone de berekeningen aankan of dat deze door een computer moeten worden.
Wat nu een computer (PC) kan, dat kan over een paar jaar een smartphone...
Ja maar het zou ook kunnen dat een speciale DSP processor hiervoor gebruiken en dan is dat niet per se het geval.
Edit: Of uit de reactie van donderdraak te zien, kan het nog wel wat langer als een paar jaar duren vooraleer die rekenkracht en geheugen combinatie beschikbaar is voor een smartphone. Natuurlijk bestaat ook de kans dat het algoritme verbeterd wordt...

[Reactie gewijzigd door sw3ex op 5 augustus 2015 19:25]

Het algoritme kan vast nog efficiënter, maar ik denk dat je moet gaan denken aan de enorme rekenkracht van de cloud. Youtube gebruikt dit bijvoorbeeld voor beeldstabilisatie en Microsoft in Hyperlapse. Een andere toepassing is bijvoorbeeld Server Physics op de Xbox One. Hierbij wordt een deel van de berekeningen voor complexe scenes in een game in de cloud uitgevoerd (zie de demonstratie van Server Physics in Crackdown 3). Maar ik vind dit er erg veelbelovend uitzien!
Lees het artikel helemaal en je hebt je antwoord.....
Wat een interessante techniek! En dit werkt met wellicht wel elke vorm van video, goede of slechte camera. Toch vraag ik mij af in hoeverre het programma reflectie van achtergrond kan onderscheiden.

Volgens mij worden deze technieken al langer toegepast door o.a. veiligheidsdiensten.
Shut up and take my money! :D

Ik wil dit. Nu.
Altijd gehannes om in bijv een dierentuin door een hekwerk heen te schieten. Bijna nooit kun je je camera dicht genoeg bij het hek houden, en vaak is het ook niet mogelijk om het hek te laten vervagen met een klein genoege scherptediepte.
Wanneer jij met een 200mm f/4 lens direct tegen het hek gaat staan, dan is het echt geen probleem om dat hek te laten vervagen. Je ziet het dan zelfs niet als je de halve lens afdekt.

Niettemin een heel handige feature.
En dat kan dus lang niet altijd. Als je te maken hebt met een kippengaas-achtig hek, waarbij een beest vrij dichtbij staat en jijzelf vrij ver van het hek staat (denk aan enclosures voor kleine vogels), ga je het hek gewoon zien. Ook al zou je een f/1.0 lens hebben.

Of denk aan een enclosure van glas. Vies glas.

[Reactie gewijzigd door _Thanatos_ op 7 augustus 2015 14:52]

@Boost9898 Het gaat dus niet om een hardwarematige aanpassing, een filter, maar een softwarematige, En dat is juist erg handig voor de miljarden smartphone gebruikers! (voorzover die een passende smartphone hebben natuurlijk...)

[Reactie gewijzigd door blackSP op 5 augustus 2015 18:44]

Dit kon eigenlijk al heel lang al maar niemand kwam op het idee lol!

Op dit item kan niet meer gereageerd worden.



Apple iOS 10 Google Pixel Apple iPhone 7 Sony PlayStation VR AMD Radeon RX 480 4GB Battlefield 1 Google Android Nougat Watch Dogs 2

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True