(14) Sampling Motivation: Sampling Motivation

Werbung
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
Herunterladen