zufallsvariable x formula

Werbung
Sampling
7. Vorlesung
Photorealistische Computergrafik
Thorsten Grosch
Einleitung
ƒ Bisher
– Lösung der Rendering Equation durch das Radiosity
Verfahren mit den Vereinfachungen
ƒ Diskretisierung der Geometrie
ƒ Alle Materialien sind diffus
ƒ Heute
– Sampling
– Vorbereitung für Path Tracing
ƒ Geometrie bleibt kontinuierlich
ƒ „Beliebige“
g BRDF, Erweiterung
g zum einfachen Ray
y Tracer
Motivation: Sampling
ƒ Ein naiver (und sehr teurer) Ansatz, die Rendering Equation mit
Hilfe eines Raytracing-Ansatzes
Raytracing Ansatzes zu lösen
lösen, wäre
– 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.
ƒ Wie „sampled
sampled“ man die Hemisphäre (gleichmässig) ?
Motivation: Sampling
ƒ Ein naiver (und sehr teurer) Ansatz, die Rendering Equation mit
Hilfe eines Raytracing-Ansatzes
Raytracing Ansatzes zu lösen
lösen, wäre
– 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.
ƒ Wie „sampled
sampled“ man eine BRDF?
Motivation: Sampling
ƒ Ein anderer (immer noch naiver) Ansatz besteht darin, zumindest
die Lichtquellen direkt abzutasten
– 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 …
ƒ Wie
Wi „sampled“
l d“ man eine
i Li
Lichtquelle?
ht
ll ?
Beispiele
ƒ Im Zusammenhang mit
Computern verwenden wir
einen Zufallsgenerator
v
y
ƒ (float) rand() / RAND_MAX
liefert uns eine Zufallszahl im
Bereich [0,1]
ƒ Beispiel: Samplen eines
Parallelogramms
– Wähle zwei Zufallszahlen x
und y im Bereich [0,1]
– (x, y) ist damit der
gesuchte Sample
A
v
x
Beispiel: Kreisscheibe
ƒ Wie wählt man Samples auf
einer
i
K
Kreisscheibe?
i
h ib ?
v
y
ƒ Variante 1: „Rejection
Sampling
Sampling“
v
x
– Wähle zwei Zufallszahlen x
und y im Bereich [-1,1]
– Prüfe, ob (x, y) im Kreis liegt:
x2 + y2 ≤ 1
– Wenn ja, dann ist ein
Sample gefunden
– Wenn nein, wird der Sample
nicht verwendet.
ƒ
ƒ
A
Ergebnis: gleichmäßige
Verteilung, aber man generiert
P kt umsonst.
Punkte
t
Es ist unklar, wieviele Samples
man generieren muß, bis N gültige
Samples vorhanden sind
Beispiel Kreisscheibe
ƒ Einen Punkt innerhalb des
Kreises kann man berechnen
mit:
⎛ x⎞
⎛ cos ϕ ⎞
⎜⎜ ⎟⎟ = r ⋅ ⎜⎜
⎟⎟; r ∈ [0,1]; ϕ ∈ [0,2π ]
⎝ y⎠
⎝ sin ϕ ⎠
v
y
r
ϕ
ƒ Variante 2: „Versuch eines
direkten Samplings“
– Wähle eine Zufallszahl für r im
Bereich [0,1]
– Wähle eine zweite für ϕ und
multipliziere sie mit 2π
2π.
– Berechne daraus den
gesuchten Sample (x, y)
ƒ Ergebnis: keine gleichmäßige
Verteilung
g mehr…
v
x
Grundlagen
g der
Wahrscheinlichkeitsrechnung
Begriffe an Beispielen
ƒ 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:
1 „Zahl“
Zahl“
ƒ Mit den Wahrscheinlichkeiten
p=1/2 für Wappen
p
pp bzw. Zahl.
ƒ Die Ergebnismenge lässt sich
darstellen durch:
Ω = {(0,0,0 ), (0,0,1), ..., (1,1,1)}
Zufallsvariable
ƒ Mit Hilfe dieser Ergebnisse
werden Zufallsvariablen X
definiert, die die jeweiligen
Ergebnisse auf reelle Zahlen
abbilden
bbild
X :Ω →ℜ
ƒ Eine Zufallsvariable ist also
eine Abbildung.
ƒ Beispiel: Untersucht wird die
Anzahl der „Wappen
Wappen“ beim
dreimaligen Werfen einer
Münze
X ((0,0,0)) = 3
X ((0,0,1)) = 2
M
X ((1,1,1)) = 0
Zufallsvariable
ƒ Zum Verständnis:
– Wi
Wir haben
h b ein
i
Zufallsexperiment
– Daraus erzielen wir
zufällige Ergebnisse
– Diese Ergebnisse werden
auf Zahlen abgebildet
ƒ Umgekehrt:
– Die Zufallsvariablen sind
„Wahrscheinlichkeitsbehaftet“
– Wi
Wir erzeugen die
di Z
Zahlen
hl
mit gewissen
Wahrscheinlichkeiten
Wahrscheinlichkeiten
ƒ Die Wahrscheinlichkeit, dass X
einen bestimmten Wert
annimmt, erhält man z.B.
durch Abzählen:
P( X
P( X
P( X
P( X
1
= 3) =
8
3
= 2) =
8
3
= 1) =
8
1
= 0) =
8
Verteilungsfunktion
ƒ 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 ∈ ℜ
Wahrscheinlichkeit und
V
Verteilungsfunktion
il
f ki
P( X = x )
F ( x ) = P( X ≤ x )
8/8
8/8
6/8
6/8
4/8
4/8
2/8
2/8
X
0
0
1
2
Wahrscheinlichkeiten
3
X
0
0
1
2
Verteilungsfunktion
3
Eigenschaften
P( X = x )
F ( x ) = P( X ≤ x )
8/8
8/8
6/8
6/8
4/8
4/8
2/8
2/8
X
0
0
1
2
3
Wahrscheinlichkeiten:
• Werte im Bereich [0
[0,1]
1]
X
0
0
1
2
3
Verteilungsfunktion:
• Werte im Bereich [0
[0,1]
1]
• Monoton wachsend (1 am rechten Rand)
Stetig verteilte Zufallsvariablen
ƒ Bisher:
– Diskrete
Di k t E
Ergebnisse
b i
– 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
b ti
bestimmtes
t Ergebnis?
E b i ?
ϕ
Stetig verteilte Zufallsvariablen
F ( x ) = P( X ≤ x )
ƒ Die Wahrscheinlichkeit für ein
bestimmtes Ergebnis ist Null
ƒ Die Wahrscheinlichkeiten
können nur für Intervalle
angegeben werden
1
– z.B. Aufteilung Rad in Sektoren
ƒ Wichtig ist hier also die
Verteilungsfunktion
P(a < X ≤ b ) = F (b ) − F (a )
ƒ Mit den „<“ oder „<=“ nimmt
man es hier
hi nicht
i ht so genau, d
da
die Wahrscheinlichkeit für
einen bestimmten Wert
ohnehin Null ist.
0
X
0°
360°
Dichte Dichtefunktion
Dichte,
ƒ 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)
– Di
Die Verteilungsfunktion
V t il
f kti ((cdf,
df cumulative
l ti di
distribution
t ib ti ffunction)
ti )
ergibt sich durch Integration
– Definition der Dichtefunktion durch die Hintertür…
ƒ 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
−∞
1
F (x) =
Glücksrad
x
∫ p(t ) dt
−∞
x
0
a
ϕ
b
Verteilungsfunktion
1
1
b−a
p(t )
t
0
a
b
Dichte
Eigenschaften
1
1
F (x) =
x
∫ p(t ) dt
−∞
1
b−a
p(t )
t
0
a
b
Dichte
ƒ W
Werte
t sind
i d nicht
i ht negativ,
ti
können beliebig groß werden
ƒ Fläche unter der Kurve muss
Eins sein:
∫ p(t )dt = 1
x∈Ω
x
0
a
b
Verteilungsfunktion
ƒ Monoton
M
t steigend
t i
d
ƒ Werte im Bereich [0,1]
Rechteck (Gleich)-Verteilung
(Gleich) Verteilung
⎧ 1
⎪b − a
⎪
p(t ) = ⎨
⎪ 0
⎪⎩
a<t <b
⎧ 0
⎪x − a
F (x) = ⎨
⎪b − a
⎩ 1
sonst
1
x≤a
a< x<b
x≥b
1
1
b−a
t
0
a
b
Dichte
x
0
a
b
Verteilungsfunktion
[0 1]-Gleichverteilung
[0,1]
Gleichverteilung
⎧1
⎪
p(t ) = ⎨
⎪0
⎩
0 < t <1
⎧0
⎪
F (x) = ⎨x
⎪1
⎩
sonst
1
x≤0
0 < x <1
x ≥1
1
t
0
0
1
Dichte
x
0
0
1
Verteilungsfunktion
ƒ [0, 1]-gleichverteilte Zufallsvariablen werden auch als „ξ“
geschrieben
ƒ Die Zufallswerte der rand()/RAND_MAX-Funktion sind [0,1]-verteilt
Beispiel: Samples
ƒ 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,
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“
werden .
Dichte
Beispiel
Dichte
ƒ Wie groß ist die
Wahrscheinlichkeit, dass
S
Samples
l zwischen
i h P
Position
iti 1
und 2 generiert werden?
g
Verteilungsfunktion
P(1 ≤ X ≤ 2 ) = F (2 ) − F (1) ≈ 0.35
Die große Frage
Frage…
ƒ Wie generiert man
Zufallszahlen mit einer
gegebenen Dichte?
3
p( x ) = ⋅ x 2 , x ∈ (− 1, 1)
2
ƒ Als Basis haben wir den [0,1]verteilten Zufallsgenerator
unseres Computers (rand) …
ƒ Beispiel:
– Wir haben eine Reihe von
[0,1]-gleichverteilten
Zufallszahlen
(ξ1 , ξ 2 , K , ξ n )
– Wir wollen daraus Samples
xi mit einer gegebenen
Dichte erzeugen (s.
(s Bsp
Bsp.))
Di h
Dichte
Inverse CDF-Methode
CDF Methode
ƒ Wie generiert man Zufallszahlen mit einer gegebenen Dichte p ?
ƒ Vorgehen
– Bestimme die Verteilungsfunktion
– Invertiere diese: F −1 (
F(
)
)
– Bildet man gleichverteilte Samples ξ mit F −1 (
erhält
hält man S
Samples,
l
di
die nach
h p verteilt
t ilt sind.
i d
X = F −1 (ξ )
) ab, so
Erklärung zu inverserξ CDF
i
x
x
Dichte
ƒ
Gegeben:
Verteilungsfunktion
ƒ
– Punkt x mit F(x) = 0.7
ƒ
Also:
– 70% aller Samples sollten links von
x sein und 30% rechts
ƒ
Wenn man N gleichverteilte Samples ξ i
auf die y-Achse legt, dann sind etwa
70% davon unter F(x)=0.7
( )
Bildet man die Samples mit F −1 ( ) ab,
so landen diese 70% links von x auf der
x-Achse (da F monoton wachsend ist)
ƒ also genau das,
das was wir wollen
p( x )
Beispiel
2
p( x) = 2 x
ƒ Bestimme Zufallszahlen mit
der Dichte
p( x ) = 2 x, x ∈ (0, 1)
ƒ Verteilungsfunktion
ƒ Invertierung
2 x
0
0
Dichte
1
F (x) = x2
= x2
0
x= ξ
ƒ Pseudocode
ξ = (float) rand()/RAND_MAX;
x = sqrt
q (ξ);
F (x)
1
ξ = F ( x ) = ∫ 2t ⋅ dt = [t ]
x
0
x
0
0
1
Verteilungsfunktion
g
Beispiel 2
ƒ Bestimme Zufallszahlen mit
der Dichte
3 2
p( x ) = ⋅ x , x ∈ (− 1, 1)
2
ƒ Die Verteilungsfkt. erhält man
durch:
ξ = F ( x ) = ∫ p(t )dt =
−1
x
3
1
= ∫ ⋅ t 2 dt = ⎡⎢ ⋅ t 3 ⎤⎥ =
2
⎣ 2 ⎦ −1
−1
x3 1
= +
2 2
x3 1
ξ= +
2 2
x 3 = 2ξ − 1
x = 3 2ξ − 1
x
x
ƒ Invertierung liefert
Mehrdimensionale Zufallszahlen
ƒ Zunächst diskreter Fall
ƒ Beispiel
B i i l
– 3 x 3 Matrix mit
Wahrscheinlichkeiten
a sc e c e te P(x,y)
( ,y)
ƒ Frage: Wie generiert man
Samples nach dieser
Wahrscheinlichkeit
– also zz.B.
B 20% aller Samples
im rechten oberen Feld ?
ƒ Hier keine direkte Invertierung
möglich (!)
0.1
0.1
0.2
0.05 0.0
0.3
0.1
0.05 0.1
2 Schritt Verfahren
ƒ 1. Schritt
– wähle eine Spalte aus
0.1
ƒ Bilde Spaltensummen
– Entspricht der
W h h i li hk it d
Wahrscheinlichkeit,
dass
ein Sample innerhalb der
Spalte
Spa
e landet
a de
– Reduktion 2D Æ 1D
0.1
0.2
0.05 0.0
0.3
0.1
Σ
0.05 0.1
0.25 0.15 0.6
z.B. 60% aller
Samples
landen in der
rechten Spalte
2 Schritt Verfahren
ƒ Generiere Sampleposition
nach
h iinverser CDF d
der
Spaltensummen
P( X = x )
P
F
0.25 0.15 0.6
0.25 0.4
1.0
F ( x ) = P( X ≤ x )
1.0
1.0
0.75
0.75
0.5
0.5
0.25
0.25
X
0
1
2
3
ξ1
X
0
1
2
3
P( y | x ) =
2 Schritt Verfahren
ƒ
2. Schritt
– wähle Zeile innerhalb der
gewählten Spalte
– Normiere Spalte auf Summe 1
– Berechne Sampleposition
innerhalb der Spalte
S
mit
inverser CDF Methode
P( X = x )
0.1
0.1
P ( x, y )
P ( x)
0.33
0.2
: 0.6
0.05 0.0
0.1
0.3
0.5
0.16
0.05 0.1
F ( x ) = P( X ≤ x )
1.0
1.0
0.75
0.75
0.5
0.5
0.25
0.25
X
0
1
2
3
ξ2
X
0
1
2
3
Zusammenfassung
ƒ
ƒ
ƒ
ƒ
Bilde Spaltensummen
Wähle x-Position mit inverser CDF
Normiere gewählte Spalte
Wähle y-Position in Spalte mit inverser CDF
ƒ Wir haben uns im Beispiel für Feld (3,2) entschieden
ƒ Bei Wiederholung
g bekommt man Samples,
p , die nach P
verteilt sind
Stetige 2D Verteilung
ƒ Gegeben ist eine stetige
Dichtefunktion zz.B.
Dichtefunktion,
B
definiert auf einem
Rechteck
ƒ Gesucht: SampleVerteilung nach dieser
Dichte
ƒ F(x,y) :
Wahrscheinlichkeit, dass
Sample in Rechteck
[xmin, x] x [ymin, y] liegt
ymax
y
p ( x, y )
y
ymin
xmin
p=0
x
x
xmax
p>0
Verteilungsfunktion F(x
F(x,y)
y)
ƒ F(
F(x,y):
)
Wahrscheinlichkeit, dass
ein Sample im Bereich
[xmin, x] x [ymin, y] landet
ƒ F(x
F( min,ymin) = 0
ƒ F(xmax,ymax) = 1
ymax
y
1
F ( x, y )
ymin
0
x
xmin
F ( x, y ) =
xmax
y
x
∫ ∫ p( x' , y') dx' dy'
y min xmin
2 Schritt Verfahren
ƒ Schritt 1
– Auswahl
A
hl von x
ymax
y
– y wird auf Maximum
gesetzt
p ( x, y )
– Reduktion 2D Æ 1D
F ( x, ymax ) =
y max
x
∫ ∫ p(x' , y') dx' dy'
y min xmin
ƒ F(x,ymax) ist die
Wahrscheinlichkeit, daß
ein S
Sample
p links von x liegt
g
ƒ Bestimme x durch inverse
CDF mit F(x,ymax)
ymin
x
xmin
xmax
0
1
F ( x, ymax )
x
ξ1 = F ( x, ymax )
2 Schritt Verfahren
ƒ Schritt 2
– A
Auswahl
hl von y, wenn x
bekannt
p( y | x) =
ymax
p ( x, y )
=
p( x)
y
p ( x, y )
y max
∫ p(x, y') dy'
y min
– Suche y in „unendlich
dünnem“ Streifen
p ( x, y )
– Normierung
y
ξ 2 = F ( y | x) =
∫ p(x, y') dy'
y min
y max
∫ p(x, y') dy'
y min
F (ξ1 , y )
ξ2 =
F (ξ1 , ymax )
ymin
x
xmin
xmax
0
1
F ( x, ymax )
Die untere Formel gilt, falls sich p darstellen lässt als p( x, y ) = f ( x) ⋅ g ( y )
x
ξ1 = F ( x, ymax )
(Beweis Übung)
2D-Samples
2D
Samples Zusammenfassung
ƒ Problem: Bestimme 2D-Samples mit einer 2D-Dichte aus
zweii (0
(0, 1)
1)-gleichverteilten
l i h t ilt Z
Zufallsvariablen
f ll
i bl ξ1 und
d ξ2.
ƒ Berechne Verteilungsfunktion
F ( x, y ) =
x
∫ ∫ p( x' , y') dx' dy'
y min xmin
ƒ 1. Schritt
ƒ 2. Schritt
y
ξ1 = F ( x, ymax )
ξ2 =
F (ξ1 , y )
F (ξ1 , ymax )
Beispiel
ƒ Gegeben ist eine
Dichtefunktion p im Bereich
[0,1]x [0,1] und
Verteilungsfunktion F
p( x, y ) = 4 xy
x
⎡ x′ 2 ⎤
x2 y2
F ( x, y ) = ∫ ∫ p( x' , y ') dx′dy′ = ∫ ∫ 4 x′y′ dx′dy′ = 4 ∫ ⎢ ⎥ y′dy′ = 4
= x2 y 2
2 ⎦0
2 2
0 0
0 ⎣
0 0
ƒ p ist
i t eine
i Di
Dichte,
ht d
da F (1,1) = 1
y x
y x
ƒ Gesucht sind nach p verteilte
Samples
y
F ( x, ymax ) = F ( x,1) = x 2
ξ1 = x 2 ⇒ x = ξ1
F (ξ1 , y )
ξ1 y 2 y 2
ξ2 =
= 2 2 =
⇒ y = ξ2
F (ξ1 , ymax ) ξ1 1
1
2
Beispiel: Kreisscheibe
ƒ Gegeben ist eine Kreisscheibe
mit Radius R.
R Gesucht sind
gleichverteilte Samples
innerhalb des Kreises, also mit
Di ht
Dichte
F ( x, y ) =
x
d ' dy
d '
∫ ∫ p( x' , y') dx
123
y min xmin
ϕ r
dA
F (r , ϕ ) = ∫ ∫ p(r ' , ϕ ') r '⋅dr '⋅dϕ '
0 0
r
ϕ
R
1
p (r , ϕ ) =
π ⋅ R2
y
dA = r ⋅ dr ⋅ dϕ
Beispiel: Kreisscheibe
ƒ Berechnung der Verteilungsfunktion
ϕ r
r'
r 2 ⋅ϕ
F (r , ϕ ) = ∫ ∫
⋅dr '⋅dϕ ' =
2
2
π
⋅
R
2
⋅
π
⋅
R
0 0
ƒ 1. Schritt
r 2 ⋅ 2π r 2
ξ1 = F (r , ϕ max ) = F (r , 2π ) =
= 2 ; r = R ξ1
2
R
2π ⋅ R
ƒ 2. Schritt
F (ξ1 , ϕ )
ξ1 ⋅ ϕ 2π ⋅ R 2 ϕ
ξ2 =
=
⋅ 2
=
; ϕ = 2π ⋅ ξ 2
2
F (ξ1 , ϕ max ) 2π ⋅ R ξ1 ⋅ 2π 2π
2
Vergleich: Kreisscheibe
r = R ⋅ ξ1
r = R ξ1
ϕ = 2π ⋅ ξ 2
ϕ = 2π ⋅ ξ 2
Beispiel: Samplen einer Halbkugel
ƒ … gemäß dem Phong-Beleuchtungsmodell:
ƒ Dichte
n +1 n
p(θ , ϕ ) =
cos θ
2π
ƒ Verteilungsfunktion
θ ϕ
F (θ , ϕ ) = ∫ ∫ p(θ ' , ϕ ') sin θ '⋅dθ '⋅dϕ '
ƒ Samples
– (Beweis als Übung)
0 0
1
⎛
θ = arccos⎜ (1 − ξ1 )n +11 ⎞⎟
⎝
⎠
ϕ = 2π ⋅ ξ 2
Beispiel: Phong
n =1
(vollständig diffuse Oberfläche)
n = 10
Beispiele anderer
Samplingfunktionen
(Graphics Gems III)
Zusammenfassung
ƒ Generierung von Samples nach einer Dichte p
ƒ Diskret, stetig, 1D, 2D
ƒ Nächstes Mal
ƒ Berechnung eines Integrals mit Hilfe der Samples
ƒ Rendering Equation Æ Path Tracing
Herunterladen