Motivation: Sampling (14) Sampling Vorlesung „Photorealistische Computergraphik“ S. Müller Ein naiver (und sehr teurer) Ansatz, die Rendering Equation mit Hilfe eines Raytracing-Ansatzes zu lösen, wäre Wie „sampled“ man die Hemisphäre? (oder eine BRDF?) UNIVERSITÄT KOBLENZ · LANDAU UNIVERSITÄT KOBLENZ · LANDAU Motivation: Sampling Ein anderer (immer noch naiver) Ansatz besteht darin, zumindest die Lichtquellen direkt abzutasten Wähle zwei Zufallszahlen x und y im Bereich (0,1) (x, y) ist damit der gesuchte Sample v x A Wie „sampled“ man eine Lichtquelle? Wie wählt man Samples auf einer Kreisscheibe? Variante 1: „Russisches Roulett“ A v x Ergebnis: gleichmäßige Verteilung, aber man generiert Punkte umsonst. (Anmerkung: dies würde nur einen Viertelkreis ergeben; für einen ganzen Kreis müssen die Werte transformiert werden durch 2x- 1bzw. 2y- 1) UNIVERSITÄT KOBLENZ · LANDAU v y Einen Punkt innerhalb des Kreises kann man berechnen mit: r x cos ϕ = r ⋅ ; r ∈ (0,1); ϕ ∈ (0,2π ) y sin ϕ Wähle zwei Zufallszahlen x und y im Bereich (0,1) wie beim Quadrat Prüfe, ob (x, y) im Kreis liegt: Wenn ja, dann ist ein Sample gefunden Wenn nein, wird der Sample nicht verwendet. S. Müller - 4- Beispiel Kreisscheibe v y x2 + y2 ≤ 1 UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 3- Beispiel: Kreisscheibe v y Im Zusammenhang mit Computern verwenden wir einen Zufallsgenerator (float) rand() / RAND_MAX liefert uns eine Zufallszahl im Bereich (0,1) Beispiel: Samplen eines Parallelogramms Das direkte Licht wird also eingesammelt und man überlässt es nicht dem Zufall, ob ein Strahl die Lichtquelle trifft Für das indirekte Licht werden wieder viele Strahlen verschickt … UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 2- Beispiele wird eine diffuse Oberflächen getroffen, so werden viele Strahlen weiterverfolgt trifft so ein Strahl wieder auf eine diffuse Oberfläche, geht man genauso weiter, … bis eine Lichtquelle getroffen wird. S. Müller - 5- Variante 2: „Versuch eines direkten Samplings“ Wähle eine Zufallszahlen für r im Bereich (0,1) Wähle eine zweite für ϕ und multipliziere sie mit 2π. Berechne daraus den gesuchten Sample (x, y) ϕ v x Ergebnis: keine gleichmäßige Verteilung mehr… sampling.vcproj UNIVERSITÄT KOBLENZ · LANDAU nkf S. Müller - 6- 1 Begriffe an Beispielen Grundlagen der Wahrscheinlichkeitsrechnung Eine wichtige Basis in der Wahrscheinlichkeitsrechnung bildet das Zufallsexperiment Mit Hilfe eines Zufallsexperiments werden zufällige Ergebnisse ω erzielt. Ein Beispiel für ein diskretes Zufallsexperiment ist das dreimalige Werfen einer Münze. Einzelne Würfe: 0: „Wappen“ 1: „Zahl“ Mit den Wahrscheinlichkeiten p=1/2 für Wappen bzw. Zahl. Die Ergebnismenge lässt sich darstellen durch: Ω = {(0,0,0 ), (0,0,1), ..., (1,1,1)} UNIVERSITÄT KOBLENZ · LANDAU UNIVERSITÄT KOBLENZ · LANDAU Zufallsvariable Mit Hilfe dieser Ergebnisse werden Zufallsvariablen X definiert, die die jeweiligen Ergebnisse auf reelle Zahlen abbilden Zufallsvariable X :Ω →ℜ Eine Zufallsvariable ist also eine Abbildung. Beispiel: Untersucht wird die Anzahl der „Wappen“ beim dreimaligen Werfen einer Münze X ((0,0,0)) = 3 X ((0,0,1)) = 2 M X ((1,1,1)) = 0 Zum Verständnis: UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 10- Verteilungsfunktion Die Wahrscheinlichkeit, dass X einen bestimmten Wert annimmt, erhält man z.B. durch Abzählen: 1 8 3 P( X = 2 ) = 8 3 P( X = 1) = 8 1 P( X = 0) = 8 P( X = 3) = UNIVERSITÄT KOBLENZ · LANDAU Die Zufallsvariablen sind „Wahrscheinlichkeitsbehaftet“ Wir erzeugen die Zahlen mit gewissen Wahrscheinlichkeiten UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 9- Wahrscheinlichkeiten Wir haben ein Zufallsexperiment Daraus erzielen wir zufällige Ergebnisse Diese Ergebnisse werden auf Zahlen abgebildet Umgekehrt: S. Müller - 8- Oftmals interessiert man sich nicht direkt für die Wahrscheinlichkeit P(X = x) für einen bestimmten Wert von X, sondern für die Wahrscheinlichkeit, dass X in einem bestimmten Bereich liegt Hierfür verwendet man die Verteilungsfunktion F(x) Die Verteilungsfunktion erhält quasi die kumulierten Wahrscheinlichkeiten Für ein beliebiges Intervall (a,b] der Zufallsvariablen X lässt sich die Wahrscheinlichkeit mit Hilfe der Verteilungsfunktion berechnen durch P (a < X ≤ b ) = F (b ) − F (a ) F ( x ) = P( X ≤ x ), x ∈ ℜ S. Müller - 11- UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 12- 2 Eigenschaften Wahrscheinlichkeit und Verteilungsfunktion P( X = x ) F ( x ) = P( X ≤ x ) 8/8 P( X = x ) 8/8 6/8 6/8 4/8 4/8 F ( x ) = P( X ≤ x ) 8/8 8/8 6/8 6/8 4/8 4/8 2/8 2/8 X 0 2/8 2/8 X 0 0 1 2 Wahrscheinlichkeiten 0 0 1 2 Verteilungsfunktion UNIVERSITÄT KOBLENZ · LANDAU 3 Diskrete Ergebnisse Diskrete Zufallsvariablen Wahrscheinlichkeiten konnten klar zugeordnet werden ϕ Stetige Verteilung Beispiel: Der Winkel ϕ beim Drehen eines Rades Problem: wie groß ist die Wahrscheinlichkeit für ein bestimmtes Ergebnis? UNIVERSITÄT KOBLENZ · LANDAU 0 Verteilungsfunktion: • Definiert im Bereich (− ∞, ∞ ) • Werte im Bereich [0,1] S. Müller - 14- F ( x ) = P( X ≤ x ) Die Wahrscheinlichkeit für ein bestimmtes Ergebnis ist Null 1 Die Wahrscheinlichkeiten können nur für Intervalle angegeben werden Wichtig ist hier also die Verteilungsfunktion S. Müller - 15- Mit den „<“ oder „<=“ nimmt man es hier nicht so genau, da die Wahrscheinlichkeit für einen bestimmten Wert ohnehin Null ist. X 0 0° S. Müller - 16- F (x ) = Glücksrad x ∫ p(t ) dt −∞ Bei diskreten Ergebnissen gab es Wahrscheinlichkeiten die Verteilungsfunktion ergab sich durch Summation „… die Zufallsvariable nimmt mit einer Wahrscheinlichkeit einen Wert an…“ Bei stetig verteilten Zufallsvariablen gibt es eine Dichtefunktion (pdf, probability density function) 360° UNIVERSITÄT KOBLENZ · LANDAU 1 3 2 P (a < X ≤ b ) = F (b ) − F (a ) Dichte, Dichtefunktion 1 Stetig verteilte Zufallsvariablen Bisher: X 0 3 UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 13- Stetig verteilte Zufallsvariablen 2 Wahrscheinlichkeiten: • Werte im Bereich [0,1] X 0 3 1 x 0 a ϕ b Verteilungsfunktion 1 Die Verteilungsfunktion (cdf, cumulative distribution function) ergibt sich durch Integration Definition der Dichtefunktion durch die Hintertür… 1 b−a p(t ) Eine Zufallsvariable X heißt stetig verteilt mit der Dichte p, falls sich ihre Verteilungsfunktion schreiben lässt als: F (x) = x ∫ p(t ) dt UNIVERSITÄT KOBLENZ · LANDAU t 0 a −∞ S. Müller - 17- UNIVERSITÄT KOBLENZ · LANDAU b Dichte S. Müller - 18- 3 Eigenschaften Rechteck-/Gleich-/(a,b)-Verteilung 1 1 F (x ) = x 1 b − a p(t ) = 0 ∫ p(t ) dt −∞ 1 b−a p(t ) a<t <b 0 x − a F (x) = b − a 1 sonst 1 t 0 a x 0 a b Dichte x≥b 1 1 b−a b Verteilungsfunktion Werte sind immer positiv Fläche unter der Kurve muss Eins sein: x≤a a< x<b Monoton steigend Werte im Bereich [0,1] t 0 a ∫ p(t )dt = 1 b Dichte x 0 a b Verteilungsfunktion x∈Ω UNIVERSITÄT KOBLENZ · LANDAU (0,1)-Verteilung 0 F (x) = x 1 sonst 1 t 0 1 Dichte x≤0 0 < x <1 x ≥1 1 0 x 0 0 1 Verteilungsfunktion (0, 1)-verteilte Zufallsvariablen werden auch als „ξ“ geschrieben Die Zufallswerte der rand()-Funktion sind (0,1)-verteilt UNIVERSITÄT KOBLENZ · LANDAU UNIVERSITÄT KOBLENZ · LANDAU Die große Frage… Wie groß ist die Wahrscheinlichkeit, dass Samples zwischen Position 1 und 2 generiert werden? UNIVERSITÄT KOBLENZ · LANDAU Die Idee ist, dass wir uns Zufallsvariablen mit einer bestimmten Dichte erzeugen Die Zufallsvariablen beschreiben in unserem Kontext oft einen Ort auf einer Oberfläche, wodurch die Bedeutung sehr anschaulich wird. „Hat die Dichte an einer Stelle einen großen Wert, dann ist hier auch die Wahrscheinlichkeit sehr hoch, dass hier Samples generiert werden“. S. Müller - 21- Beispiel Dichte S. Müller - 20- Beispiel: Samples 0 < t <1 1 p(t ) = 0 UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 19- Verteilungsfunktion Wie generiert man Zufallszahlen mit einer gegebenen Dichte? Als Basis haben wir den (0,1)-verteilten Zufallsgenerator unseres Computers (rand) … Beispiel: Wir haben eine Reihe von (0,1)-verteilten Zufallszahlen Wir wollen daraus Samples xi mit einer gegebenen Dichte erzeugen (s. Bsp.) P(1 ≤ X ≤ 2 ) = F (2) − F (1) ≈ 0.35 S. Müller - 23- Dichte S. Müller - 22- 3 p( x ) = ⋅ x 2 , x ∈ (− 1, 1) 2 Dichte (ξ1 , ξ 2 , K , ξ n ) UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 24- 4 Inverse CDF-Methode Inverse CDF-Methode F(X ) Ist X eine Zufallsvariable mit Verteilungsfunktion F(X), dann liefert F(X) selbst Zufallswerte mit einer (0,1)Verteilung Auch das wäre ein Zufallsgenerator einer (0,1)Verteilung: ξ = F (X ) Wie generiert man Zufallszahlen mit einer gegebenen Dichte p? Vorgehen Ist X eine Zufallsvariable mit Dichte p und Verteilung F, dann liefert F(X) eine (0, 1)- verteilte Zufallsvariable Umkehrung p( x ) Man generiert Zufallszahlen X mit beliebiger Dichte p Man berechnet F(X), wobei F die dazugehörige Verteilungsfunktion ist. Das Resultat ist eine (0,1)verteilte Zufallszahl ξ Bestimme die Verteilungsfunktion F Invertiere diese Als Ergebnis erhält man die Zufallsvariable mit der gewünschten Dichte aus einer (0, 1)-Verteilung X = F −1 (ξ ) UNIVERSITÄT KOBLENZ · LANDAU … liefert aus einer (0, 1)verteilten Zufallsvariablen ein Zufallsvariable mit Dichte p und Verteilung F UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 25- S. Müller - 26- p( x ) Beispiel Beispiel 2 Bestimme Zufallszahlen mit der Dichte Invertierung liefert 3 p( x ) = ⋅ x 2 , x ∈ (− 1, 1) 2 x = 2ξ − 1 x −1 x = 3 2ξ − 1 x ξ = (float) rand()/RAND_MAX; x 1 Dichte 1 F (x) = x2 x i x 0 0 1 Verteilungsfunktion Pseudocode UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 27- sampling.vcproj x S. Müller - 28- Beispiel: Dart-Scheibe (Shirley) Bisher: eindimensionale Zufallsvariablen x ∫ p( x') dx' xmin Tatsächlich brauchen wir 2D-Variablen F ( x, y ) = P( X ≤ x und Y ≤ y ) = Invertierung ξ = (float) rand()/RAND_MAX; x = sqrt (ξ); 2D-Zufallsvariablen F ( x ) = P( X ≤ x ) = sampling.vcproj UNIVERSITÄT KOBLENZ · LANDAU y x ∫ ∫ p( x' , y') dx' dy' y min xmin UNIVERSITÄT KOBLENZ · LANDAU Verteilungsfunktion 0 ξ = F ( x ) = ∫ 2t ⋅ dt = [t 2 ]0 = x 2 x= ξ x3 1 = + 2 2 0 F (x) 0 x 3 1 = ∫ ⋅ t 2 dt = ⋅ t 3 = 2 2 −1 −1 p ( x) = 2 x Bestimme Zufallszahlen mit der Dichte p( x ) = 2 x, x ∈ (0, 1) 3 Die Verteilungsfkt. erhält man durch: ξ = F ( x ) = ∫ p(t )dt = x3 1 ξ= + 2 2 2 S. Müller - 29- Das Werfen von Wurfpfeilen sei ein Zufallsexperiment, wobei ein Werfer N Pfeile auf die Scheibe wirft Zählt man für beliebige Flächenelemente dA auf der Scheibe die Anzahl der Treffer, die auf dA landen - also das Verhältnis der Treffer auf dA zu allen Treffern auf der Scheibe … … so erhält man die Dichtefunktion p für jeden (2D-)Punkt auf der Kreisscheibe. UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 30- 5 Beispiele verschiedener Dichten 2D-Samples Problem: Bestimme 2D-Samples mit einer 2D-Dichte aus zwei (0, 1)-verteilten Zufallsvariablen ξ1 und ξ2. Berechne Verteilungsfunktion y F ( x, y ) = x ∫ ∫ p( x' , y') dx' dy' y min xmin F (( x, y ) ∈ ABullauge ) = ∫ p(x, y ) dA 1. Schritt 2. Schritt ( x , y )∈ABullauge ξ1 = F ( x, ymax ) ξ2 = UNIVERSITÄT KOBLENZ · LANDAU UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 31- Beispiel: Kreisscheibe F (ξ1 , y ) F (ξ1 , ymax ) S. Müller - 32- Beispiel: Kreisscheibe dA = r ⋅ dr ⋅ dϕ Gegeben ist eine Kreisscheibe mit Radius R. Gesucht sind gleichverteilte Samples innerhalb des Kreises, also mit Dichte p (r , ϕ ) = F ( x, y ) = y r ϕ R 1 π ⋅ R2 x ' dy ' ∫ ∫ p( x' , y') dx 123 y min xmin dA Berechnung der Verteilungsfunktion ϕ r r' r 2 ⋅ϕ F (r , ϕ ) = ∫ ∫ ⋅dr '⋅dϕ ' = 2 π ⋅R 2 ⋅π ⋅ R2 0 0 1. Schritt r 2 ⋅ 2π r 2 ξ1 = F (r , ϕ max ) = F (r , 2π ) = = ; r = R ξ1 2π ⋅ R 2 R 2 2. Schritt ξ2 = ϕ r F (r , ϕ ) = ∫ ∫ p(r ' , ϕ ') r '⋅dr '⋅dϕ ' F (ξ1 , ϕ ) ξ ⋅ ϕ 2π ⋅ R 2 ϕ = 1 ⋅ = ; ϕ = 2π ⋅ ξ 2 F (ξ1 , ϕ max ) 2π ⋅ R 2 ξ12 ⋅ 2π 2π 2 0 0 UNIVERSITÄT KOBLENZ · LANDAU UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 33- Vergleich: Kreisscheibe S. Müller - 34- Beispiel: Samplen einer Halbkugel … gemäß dem Phong-Beleuchtungsmodell: Dichte n +1 n p(θ , ϕ ) = cos θ 2π Verteilungsfunktion θ ϕ F (θ , ϕ ) = ∫ ∫ p(θ ' , ϕ ') sin θ '⋅dθ '⋅dϕ ' r = ξ1 r = R ξ1 ϕ = 2π ⋅ ξ 2 ϕ = 2π ⋅ ξ 2 0 0 Samples θ = arccos (1 − ξ1 )n +1 1 ϕ = 2π ⋅ ξ 2 UNIVERSITÄT KOBLENZ · LANDAU sampling.vcproj 2f S. Müller - 35- UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 36- 6 Beispiel: Phong Beispiele anderer Samplingfunktionen (Graphics Gems III) n =1 n = 10 (vollständig diffuse Oberfläche) UNIVERSITÄT KOBLENZ · LANDAU sphere.vcproj S. Müller - 37- UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 38- 7