Sunday, October 14, 2007

Enige papers

De voorbije weken weer enige papers gelezen waaronder enige die relevant bleken te zijn voor het onderwerp. Ook een paar die wel zijdelings raken aan het onderwerp maar niet direct binnen de context passen. Zoals bijvoorbeeld "Picture Perfect RGB Rendering Using Spectral Prefiltering and Sharp Color Primaries" door o.a Greg Ward. Hierin wordt een oplossing voorgesteld voor het probleem maar zonder het gebruik van volledige spectrale data. En net dat is het doel van deze thesis. Er is ook de paper waarin de Cg taal wordt voorgesteld, maar deze heb ik enkel diagonaal doorgenomen om een beetje achtergrond info the hebben.

Qua echt relevante papers is er eerst "Wavelength Dependent Reflectance Functions" door Gondek, Meyer en Newman. Deze stellen een BRDF voor die ook de golflengte in rekening brengt. Om deze BRDF voor te stellen gebruiken ze een "geodesic sphere" wat een bol is opgebouwd uit vlakken. In zijn simpelste vorm zijn dit 2 piramides op elkaar. In een iets meer opgedeelde vorm is het iets als hieronder. Opdelen is ook de manier waarop data wordt bijgehouden, voor elk van de 8 basisvlakken is er een quad-tree die een variërende bemonsteringsresolutie voorstellen. Het gaat hier om een bol omdat men ook transmittantie in rekening brengt. Deze vorm van reflectanties opslaan in een aangepaste BRDF is zeker iets om in het achterhoofd te houden.


De volgende paper is "A Composite Spectral Model and Its Applications" van Sun, Fracchia en Drew, deze gaat verder op het composite model dat door dezelfde mensen voorgesteld is in "Representing spectral functions by a composite model of smooth and spiky components for efficient full-spectrum photorealism". Het basis idee is dat ze het zachtverlopende deel voorstellen met enkele fouriercoëfficiënten en het 'spiky' gedeelte met een deltafunctie met plaats en gewicht naar gelang de hoogte. In deze paper wordt nog een verbetering voorgesteld waarbij het zachtverlopend gedeelte herbemonsterd wordt om zo het vermenigvuldigen van spectra veel minder rekenintensief te maken. Zo wordt bekomen dat de hoeveelheid rekenwerk lineair stijgt. Daar waar bij de voorstelling met lineaire functies of veeltermen dit O(M²) is.

Verder heb ik deze week ook een hoop tijd gestoken in een eerste viewer die met spectrale data moet werken. Bij gebrek aan echte data gebruik ik op dit moment de methode van Smits om RGB waarden om te zetten naar spectra. Prentjes zijn er op dit moment nog niet maar normaal gezien zouden die in de loop van de week moeten verschijnen.

Monday, October 1, 2007

Officiële kick-off

Nu het academiejaar ook officieel onderweg is wordt het maar eens tijd dat ook dit thesisblog nuttig gevuld wordt. Voor de geintresseerde maar misschien minder geinformeerde lezers die hier toevallig op terecht komen misschien eerst een korte samenvatting van het onderwerp. Daarna zal ik een overzichtje geven van hetgene al gebeurd is in (vooral) de afgelopen anderhalve maand.


De probleemstelling.

Een gekend probleem in computergraphics is de beperking die het RGB (of welk 3 waarden kleurmodel dan ook) oplegt aan de nauwkeurigheid van een kleurvoorstelling. Aangezien kleuren in feite een continue verdeling zijn over het hele golflengtespectrum gaat veel info verloren als we dit terug brengen naar enkel 3 waarden. We kunnen dan ook niet verwachten om uit bewerkingen met enkel deze 3 waarden exacte kleurresultaten te krijgen. Dit heeft als gevolg dat verschillende fysische fenomenen moeilijk gesimuleerd kunnen worden in de standaard renderingstechnieken. Voorbeeldjes zijn metamerisme, fluorescentie, dispersie, gepolarizeerd licht, etc.Het doel van deze thesis is dan ook om de volledige spectrale info zo lang mogelijk in het renderingsproces te bewaren om zodoende veel nauwkeuriger kleuren te bekomen. Meer in praktijk zou het resultaat gebruikt kunnen worden om bijvoorbeeld de reflecties van materialen onder verschillende belichtingen te vergelijken. Dit alles dient dan ook nog eens in realtime op het scherm getoverd te worden om zodoende een praktische viewer over te houden.

Reeds geleverd werk.

Na de examens in juni kreeg ik een thesis getiteld 'Multispectrale Rendering' in de handen geduwd en een hoop bronnen voor papers over graphics om van te starten. Die thesis geeft een mooi overzicht van enkele manieren om spectrale licht informatie voor te stellen alsook enkele effecten waarvoor spectrale gegevens broodnodig zijn. Er werden een viertal methodes om spectra voor te stellen besproken: bemonstering, getabuleerde bemonstering, fouriervoorstelling en een composietvoorstelling. Het opzoeken van hun referenties en andere bronnen leerde echter dat er heel wat lichte variaties bestaan op het voorstellen van een spectrum dmv basisfuncties. Dit is dan ook een eerste subprobleem, de meest efficiënte voorstelling vinden voor de spectra. Ik heb een aantal papers gelezen over dit onderwerp, sommige waren echter iets te geavanceerd, zeker in dit stadium van de thesis. De belanrijkste blijven de thesis over multispectrale rendering en 'A Composite Model for Representing Spectral Functions' door o.a Sun. In deze laatste wordt het composiet model uitgewerkt. Andere papers die ik onlangs gelezen heb: 'Linear Color Representations for Full Spectral Rendering' en 'Interactive Full Spectral Rendering'. Beide van o.a M.S Peercy. De eerste geeft een voorstellingswijze van spectra op basis van een set basisfuncties wat het berekenen van resulterend licht terug brengt tot eenvoudige matrix berekeningen. Ook geeft hij een manier weer om aan deze basisfuncties te komen. De 2de gebruikt deze voorstelling om een renderen te maken, maar aangezien deze paper dateert van midden jaren '90 was de technologie toen nog lang niet zo geavanceerd en is het daarom minder relevant.

Het 2de subprobleem bevindt zich aan het ander einde van de renderingpipeline. Met name een High Dynaminc Range resultaat converteren naar een Low Dynamic Range versie voor weergave op bijvoorbeeld een scherm. Het probleem is namelijk dat in de 'echte wereld' de range waarin lichtintensiteit zich bevindt verspreid ligt van 10^-6 cd/m² tot 10^6 cd/m². Daar waar een gewone display slechts een fractie van die range kan weergeven. De oplossing hiervoor heet tonemapping waarbij de hele range van intensiteiten wordt terug gebracht binnen een beperkte range. Enekele van de relevante papers die ik hierover gelezen heb zijn 'Realtime HDR Rendering' van Christian Luksch, 'Perceptual Effects in Real-time Tone Mapping' van o.a G. Krawczyk. Ook zou ik het boek van E. Reinhard, 'High Dynamic Range Imaging: Acquisition, Display, and Image-Based Lighting' moeten lezen, maar blijkbaar is Standaard Boekhandel niet echt geweldig snel in het leveren daarvan. Maar hopelijk komt het deze week toe zodat ik daar in kan duiken.

Het derde subprobleem is uiteraard hoe dit moet geimplementeerd worden zodat het in realtime kan weergegeven worden. Aangezien de meeste graphicsrekenkracht in de GPU zit is het logisch dat we rechtstreeks daarop zullen gana programmeren. Daarom ben ik dan ook begonnen met het leren van openGL en Cg. Een eenvoudige viewer in openGL en een simpele test van het concept vertexshader heb ik reeds gemaakt. Maar nog niks spectaculair genoeg om hier te tonen.

Dit was dan een klein overzicht van wat ik reeds gedaan heb. In de komende weken zal ik vooral meer moeten lezen, uitvissen hoe ik die spectrale voorstellingen naar Cg en openGL krijg en realtime tonemapping moeten bestuderen. En normaal gezien zal ik vanaf nu ook elke week een update trachten te geven van de vooruitgang die geboekt is.