donderdag 11 december 2008

Samenvatting werking ERPT

Als voorbereiding voor de presentatie van volgende week, leggen we de werking van ERPT nog eens bondig uit. ERPT staat voor Energy Redistribution Path Tracing. Energy Redistribution is een techniek om gecorelleerde integralen op te lossen. Omdat de waarden in verschillende pixels in een afbeelding het resultaat zijn van gecorelleerde integralen, kunnen we deze techniek gemakkelijk toepassen.

Het algoritme begint met het aanmaken van een pad. Elk pad heeft een bepaalde hoeveelheid energie die overeenkomt met het licht dat door het pad naar de camera vloeit. Door middel van mutaties gaat deze energie worden verdeeld over verschillende pixels. Een pad met hoge energie zal vaker gemuteerd worden, en zal dus meer energie afzetten op het image plane.

Energie verspreid over meerdere pixels

De kost van het vinden van goede paden wordt op deze manier verspreid over meerdere pixels. Globaal gezien gaat er dus minder moeite moeten worden gedaan om goede paden te gebruiken. ERPT steunt dus op het zelfde idee als MLT, waar belangrijke paden beter worden onderzocht.

Als we op deze manier het algoritme uitvoeren krijgen we echter geen correct resultaat. De verkregen afbeelding zal te veel energie krijgen op plaatsen en te weinig op andere, zoals hieronder gedemonstreerd :

Foute verspreiding van energie (links), referentie (rechts)

Het probleem is dat wanneer energie uit een bepaalde pixel gaat afgezet worden in andere pixels, er geen garantie is dat hij ook genoeg energie terugkrijgt van de andere pixels. Om het algoritme correct te houden moet de pixel evenveel energie terugkrijgen als dat hij weggeeft. Dit heet general balance. Een strengere voorwaarde is detailed balance. Hierbij moet de energie die van pixel x naar naar pixel y vloeit gelijk zijn aan de energie die van pixel y naar pixel x vloeit. Detailed balance garandeert general balance en is gemakkelijker af te dwingen.

Afbeelding uit : [CTE 05]

Concreet kan men detailed balance afdwingen door niet alle mutaties te aanvaarden, maar sommige nieuwe paden te verwerpen. Dit gebeurt aan de hand van de 'acceptance probability'. Deze waarde houdt rekening met de kans dat het gemuteerd pad terug gaat bijdragen tot het oorspronkelijk pixel, en steunt dus op detailed balance. Wanneer men deze acceptance probability correct toepast krijgt men betere resultaten :

Juiste verdeling van de energie (links) + referentie (rechts)

In tegenstelling tot MLT is dit algoritme wel goed te stratificeren, doordat de initiele paden op een gestratificeerde manier op het image plane worden gegenereerd. Omdat we veel initiele paden nemen, vermijden we de startup bias van MLT, en bovendien is het niet nodig om een volledige set mutaties te nemen. Dit maakt het algoritme een stuk eenvoudiger dan MLT.

Geen opmerkingen: