• Keine Ergebnisse gefunden

Aufgabe 1: Koordinatentransformation 1

N/A
N/A
Protected

Academic year: 2022

Aktie "Aufgabe 1: Koordinatentransformation 1"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

12. December 2012 1

Aufgabe 1: Koordinatentransformation 1

a. Gegeben sind , , und . Gesucht ist die Transformation von einem Weltpunkt in einen Kamerapunkt

. Mit gilt:

b.

Aufgabe 2: Koordinatentransformation 2

Gegeben sind die beiden Transformationen:

und

Transformation lokal in Welt: .

3. Übungsblatt zur Vorlesung CV-Integration (Lösung)

Wintersemester 2012/2013 Prof. Dr. Stefan Müller

AG Computergraphik

iw jw kw tw pw

pc Rwc =  iw jw kw

pc = Rwc T⋅(pwtw) = Rwc TT(–tw)⋅pw pw = Rwcpc+tw = T t( )wRwcpc

M T⋅ ( )–t

xT 0 yT 0 zT 0 0T 1

 

 

 

 

 

 

 

1 0 0 0 1 0 –t 0 0 1 0 0 0 1

 

 

 

 

 

 

xTxTt yTyTt zTzTt 0T 1

 

 

 

 

 

 

 

1 0 0 –xTt 0 1 0 –yTt 0 0 1 –zTt 0 0 0 1

 

 

 

 

 

 

 

xT 0 yT 0 zT 0 0T 1

 

 

 

 

 

 

 

T M( ⋅–t)⋅M

= = = =

S M

sx 0 0 0 sy 0 0 0 sz

 

 

 

 

  z1T

z2T z3T

 

 

 

 

 

sxz1T syz2T szz3T

 

 

 

 

 

 

M S

≠  s1 s2 s3 sx 0 0 0 sy 0 0 0 sz

 

 

 

 

 

⋅  sxs1 sys2 szs3

= = = =

T t( )⋅S

1 0 0 tx 0 1 0 ty 0 0 1 tz 0 0 0 1

 

 

 

 

 

 

 

sx 0 0 0 0 sy 0 0 0 0 sz 0 0 0 0 1

 

 

 

 

 

 

 

sx 0 0 tx 0 sy 0 ty 0 0 sz tz 0 0 0 1

 

 

 

 

 

 

 

= =

S T t⋅ ( )

sx 0 0 0 0 sy 0 0 0 0 sz0 0 0 0 1

 

 

 

 

 

 

  1 0 0 tx

0 1 0 ty 0 0 1 tz 0 0 0 1

 

 

 

 

 

 

 

sx 0 0 sxtx 0 sy 0 syty 0 0 sz sztz 0 0 0 1

 

 

 

 

 

 

 

= =

Rwl =  xwl ywl zwl  Rwc =  xwc ywc zwc 

pw = Rwlpl+twl

M us

te rlö

su ng

(2)

12. December 2012 2

Transformation Welt in Kamera:

In Matrixnotation:

Aufgabe 3: Markertracking

Aus den Punkten A, B und C werden die normierten Achsen , und bestimmt. Der Punkt A bes- chreibt den Ortsvektor des Ursprungs des Weltkoordinatensystems (in Kamerakoordinaten). Die gesuchte Trans- formation erhalten wir durch:

Aufgabe 4: Rotation

Betrachten wir die Rotationsmatrix als Koordinatentransformation, so wird ein Punkt von einem Start-Koordina- tensystem in ein Ziel-Koordinatensystem transformiert mit:

wobei die Spalten der Matrix die s-Achsen (in z-Koordinaten) und die Zeilen die z-Achsen (in s-Koordinaten) definieren.

Aufgabe 5: Intrinsische Parameter

Bei Verwendung von gluPerspective und glViewport ergibt sich ausmultipliziert folgende Matrix, die in Anlehnung an die BV-Notation als K notiert wird. Diese würde die Kamerakoordinaten in die Pixelkoordinaten abbilden, wenn die Homogenisierung erst ganz am Ende erfolgen würde. (Tatsächlich erfolgt sie in OpenGL vor der Viewport-Trans- formation).

pc = Rwc T⋅(pwtwc) pc = Rwc TT(–twc)⋅T t( )wlRwlpl

xc zc yc = zc×xc tcw

pc = T t( )cwRcwpw =  xcyczctcw

ps

pz

α

cos –sinα 0 α

sin cosα 0

0 0 1

 

 

 

 

 

ps

Rzsps RszTps

= = =

ps α

x y

pz

xs ys

xsz cosα α sin

= ysz sinα

α

cos

=

α α

ps

xzs cosα α

sin

α =

α

ps

yzs sinα α

cos

=

yz

xz

Projektion Linearkombination

(3)

12. December 2012 3

mit

Es gibt damit 3 intrinsische Parameter:

• Auflösung B und H des Bildes

• Der volle vertikale Öffnungswinkel der Kamera (in Grad!).

(Voraussetzung ist, dass das aspect ratio bei gluPerspective nicht willkürlich sondern durch festgelegt wurde.)

Aufgabe 6: Rendering-Pipeline

a. Als Beispiel verwenden wir das einfache Kameramodell (symmetrisches Frustum). Vereinfacht lautet die Render- ing-Pipeline dann:

Variante 1: Erst perspektivische Division, dann Viewport:

,

Variante 2: Perspektivische Division am Schluß:

b. Gegeben sind die Koordinaten eines Pixels in (diskreten) Bildschirmkoordinaten x, y und sein Tiefenwert z.

. Weiterhin sind die Matrizen zur Viewporttransformation , Projektion und die Viewmatrix bekannt.

Die Abbildung von Welt erreichen wir durch , wobei in der letzten Aufgabe gezeigt wurde, dass es egal ist, wo die perspektivische Division durchgeführt wird.

Die Weltkoordinate für einen Pixelpunkte berechnet sich daher mit der inversen Abbildung:

K

F H ---2 0 B

2--- 0 F H

---2 H ----2

0 0 1

= F θ

2--- cot

=

θ

B H

p

B --- 02 B

---2 0 H

----2 H ----2 0 0 1

 

 

 

 

 

 

 

H

---- FB⋅ 0 0

0 F 0

0 0 –1

 

 

 

 

 

 

iT jT kT

 

 

 

 

 

pwtw

( )

⋅ ⋅ ⋅

=

pm x, H F

---B io(pwtw) ko(pwtw) ---

⋅ –

=

pm y, F jo(pwtw) ko(pwtw) ---

⋅ –

=

pp x, B ---2 H F

---2 io(pwtw) ko(pwtw) ---

⋅ –

=

pm y, H ----2 H F

---2 jo(pwtw) ko(pwtw) ---

⋅ –

=

p

B 2--- 0 B

2--- 0 H

----2 H ----2 0 0 1

 

 

 

 

 

 

  H F

--- iB ⋅ o(pwtw) F j⋅ o(pwtw)

ko(pwtw)

 – 

 

 

 

 

 

 

H F

--- i2 ⋅ o(pwtw) B

--- k2 ⋅ o(pwtw) –

H F

--- j2 ⋅ o(pwtw) H

---- k2 ⋅ o(pwtw) –

ko(pwtw)

 – 

 

 

 

 

 

 

 

= =

pp x, B ---2 H F

---2 io(pwtw) ko(pwtw) ---

⋅ –

=

pm y, H ----2 H F

---2 jo(pwtw) ko(pwtw) ---

⋅ –

=

pp = (x y z 1, , , )T MViewport P

V

pp = MViewport⋅ ⋅ ⋅P V pw

(4)

12. December 2012 4

mit anschließender Division durch die homogene Koordinate.

Anmerkung: die rekonstruierten Kamerakoordinaten orientieren sich an der schlechten Diskretisierung der Tiefen- werte im Tiefenpuffer. Wichtig ist auch, dass nicht die Inverse der ModelView-Matrix von OpenGL verwendet wird (sonst erhält man die lokalen Koordinaten), sondern nur die View-Matrix.

Aufgabe 7: Quaternionen

Und damit:

pw = V1P1MViewport1pp

c s n, ⋅

( )⋅(0 p, )⋅(c,–sn) = s n p( o ),cp+s n( ×p)

(– )⋅(c,–sn) =

sc n( op)

– +(cp+s n( ×p))osn,–s n( op)⋅(–sn)+c cp( +s n( ×p))+(cp+s n( ×p))×(–sn)

( ) =

sc n( op)

– +sc n( op)+s2(n×p)on,s2(nop)⋅n+c2p+sc n( ×p)+sc n( ×p)+s2n×(n×p)

( ) =

0 c, 2p+s2(n po )⋅n+2sc n( ×p)+s2n×(n×p)

( ) =

0,(1–s2)p+2sc n( ×p)+s2[(nop)⋅n+n×(n×p)]

( ) =

0 p, +2sc n( ×p)+s2[(n po )⋅np+n×(n×p)]

( ) =

0 p, +2sc n( ×p)+2s2n×(n×p)

( )

p' = p+2sc n( ×p)+2s2n×(n×p)

p+sinϕ⋅(n×p)+(1–cosϕ)⋅n×(n×p)

=

p+sinϕ⋅(n×p)+(1–cosϕ)⋅((pon)⋅np)

= p no

( )⋅n+cosϕ⋅(p–(pon)⋅n)+sinϕ⋅(n×p)

=

Referenzen

ÄHNLICHE DOKUMENTE

Epure Sommersemester 2018. Grundlagen der Mathematik

Welches lineare Gleichungssystem (in Matrixschreibweise) erhalten

Was erwarten Sie f¨ ur eine lokale

Rechne folgende Aufgabe: Rechne folgende Aufgabe:..

Ein Schuldner muss in 8 Monaten 5000 Euro und nach weiteren 3 Monaten (also von heute an in 11 Monaten) 6000 Euro zur¨ uckzahlen?. Wie groß ist die Gesamt- schuld am heutigen Tah,

Technische Universität Chemnitz Stochastik Fakultät für

Lehrstuhl Theoretische Informatik Carl Philipp Reh. Funktionales Programmieren

Lehrstuhl Theoretische Informatik Markus Lohrey.. Grundlagen der Theoretischen Informatik