feat(ggg): exam solutions for chapter 4
This commit is contained in:
parent
fe3dfc2802
commit
2da4435402
|
@ -6,6 +6,8 @@
|
|||
#set math.mat(delim: "[")
|
||||
#set math.vec(delim: "[")
|
||||
|
||||
#let TODO(args) = text(stroke: red, [TODO: #args])
|
||||
|
||||
#let transpose(t)={
|
||||
let output=t.at(0).zip(..t.slice(1))
|
||||
output
|
||||
|
@ -1192,54 +1194,175 @@ Ebene und die zweier Geraden berechnen?],
|
|||
question: [Was sind homogene Koordinten, Fernpunkte und der
|
||||
Unpunkt?],
|
||||
answer: [
|
||||
|
||||
Ein Punkt $x = vec(x_1, dots.v, x_n) in cal(A)^n$ hat die homogenen
|
||||
Koordinatnvektoren $bb(x) = vec(1, x) xi, xi != 0$, die die Vielfachen des
|
||||
erweiterten Koordinatenvektors von $x$ sind.
|
||||
|
||||
Die Mengen der Vielfachen eines Vektors $v$ ohne den Nullvektor $o$ werden
|
||||
als ein (einziger) Fern- oder uneigentlicher Punkt mit den homogenen
|
||||
Koordinatenvektoren $bb(v) = vec(0, v) phi, phi != 0$ betrachtet. Jedoch
|
||||
zählt der Unpunkt $bb(o) = vec(0, o) phi, phi != 0$ nicht zu den
|
||||
Fernpunkten.
|
||||
|
||||
Vielfache eines homogenen Koordinatenvektors $bb(x)$ stellen denselben Punkt
|
||||
$x$ dar. Wir bezeichnen dies mit $bb(x) ~ bb(y) :<=> bb(x) = bb(y)phi, phi
|
||||
!= 0$, und $bb(x) lt.tri x$
|
||||
])
|
||||
#card(
|
||||
question: [Geben Sie die Gleichungsdarstellung einer Hyperebene in
|
||||
erweiterten Koordinaten an und leiten Sie daraus die
|
||||
homogene Darstellung ab!],
|
||||
answer: [
|
||||
|
||||
Eine Hyperebene $cal(H): u^t x + u_0 = mat(u_0, u^t) vec(1,x) = 0$ hat die
|
||||
homogene Darstellung $bb(u)^t bb(x) = 0$.
|
||||
])
|
||||
#card(
|
||||
question: [Was ist die Fernhyperebene?],
|
||||
answer: [
|
||||
|
||||
])
|
||||
Die projektive Hyperebene $cal(F): [1 0 ... 0] bb(x) = 0$ besteht aus den
|
||||
Fernpunkten des $cal(A)^n$. Sie heißt Fern(hyper)ebene oder im $cal(A)^2$
|
||||
auch Ferngerade.
|
||||
] )
|
||||
== Zentralprojektion
|
||||
#card(
|
||||
question: [Was ist eine Zentralprojektion?],
|
||||
answer: [
|
||||
|
||||
])
|
||||
Bei einer Zentralprojektion sind nicht parallel, sondern gehen alle durch ei
|
||||
nZentrum $a$, das auch Auge genannt wird.
|
||||
|
||||
#cetz.canvas({
|
||||
import cetz.draw: *
|
||||
import cetz.matrix: *
|
||||
|
||||
let transformation = ((1,0.5 * cos(30deg),0),(0,-0.5 * sin(30),1))
|
||||
let d = 1.3
|
||||
let x = (2,2,1)
|
||||
|
||||
circle((0,0), radius: .08)
|
||||
content((), [Auge], padding: .1, anchor: "north")
|
||||
|
||||
line(
|
||||
mul-vec(transformation, (0,0,0)),
|
||||
mul-vec(transformation, (0,0,1)), mark: (end: "stealth"))
|
||||
content((), $z$, anchor: "south")
|
||||
|
||||
line(
|
||||
mul-vec(transformation, (0,0,0)),
|
||||
mul-vec(transformation, (3,0,0)), mark: (end: "stealth"))
|
||||
content((), $x$, anchor: "west")
|
||||
|
||||
line(
|
||||
mul-vec(transformation, (2,0,0)),
|
||||
mul-vec(transformation, (2,3,0)), mark: (end: "stealth"))
|
||||
content((), $y$, anchor: "west")
|
||||
|
||||
line(
|
||||
mul-vec(transformation, (2,2,0)),
|
||||
mul-vec(transformation, x))
|
||||
content((), $bb(x)$, padding: .1, anchor: "west")
|
||||
circle(mul-vec(transformation, x), radius: .08)
|
||||
|
||||
line(
|
||||
mul-vec(transformation, (0,0,0)),
|
||||
mul-vec(transformation, (0,d,0)))
|
||||
content((), $delta$, anchor: "west")
|
||||
|
||||
line(
|
||||
mul-vec(transformation, (0,d,0)),
|
||||
mul-vec(transformation, (1.5,d,0)),
|
||||
mul-vec(transformation, (1.5,d,1)),
|
||||
mul-vec(transformation, (0,d,1)),
|
||||
close: true
|
||||
)
|
||||
|
||||
line(
|
||||
mul-vec(transformation, (0,0,0)),
|
||||
mul-vec(transformation, x))
|
||||
|
||||
let y = mul-vec(((0,0,1,0),(0,d,0,0),(0,0,0,d)),(1,) + x)
|
||||
|
||||
circle(mul-vec(transformation, (y.at(1)/y.at(0),d,y.at(2)/y.at(0))), radius: .08)
|
||||
content((), $bb(y)$, padding: .1, anchor: "north")
|
||||
|
||||
})
|
||||
Wir wählen das Koordinatessystem so, dass der Ursprung im
|
||||
Projektionszentrum, dem Auge $a$ liegt und die Bildebene parallel zur $x
|
||||
z$-Ebene ist. Das Koordinatessystem der Bildebene sei
|
||||
$
|
||||
vec(0, delta, 0), vec(1,0,0), vec(0,0,1)
|
||||
$
|
||||
Dann hat $x = [x y z]^t$ das Bild
|
||||
$
|
||||
y := vec(xi, eta) = vec(x, z) delta / y
|
||||
$
|
||||
])
|
||||
#card(
|
||||
question: [Wie kann sie mit Matrizen beschrieben werden?],
|
||||
answer: [
|
||||
|
||||
In homogenen Koordinten sieht dies so aus:
|
||||
$
|
||||
bb(y) = vec(1, xi, eta) omega = vec(y, x delta, z delta) phi = mat(0, ,
|
||||
1,;0, delta,,;0,,,delta) vec(1,x,y,z) phi = P bb(x)
|
||||
$
|
||||
])
|
||||
#card(
|
||||
question: [Was ist die Fokaldistanz und was ist der Hauptpunkt?],
|
||||
answer: [
|
||||
|
||||
Die Fokaldistanz $delta$ ist der Abstand der Bildebene zur Kamera und
|
||||
kontrolliert die Bildgröße.
|
||||
|
||||
Der Punkt $h$ der Bildebene, wo der Projektionsstrahl/das Auge senkrecht zur
|
||||
Bildebene ist, heißt Hauptpunkt.
|
||||
])
|
||||
== Kamerabewegung
|
||||
#card(
|
||||
question: [Wie stellt sich eine Zentralprojektion in Matrizen dar,
|
||||
wenn das Objekt- und Kamerasystem verschieden sind?],
|
||||
answer: [
|
||||
|
||||
#TODO()[Bild]
|
||||
|
||||
Im Allgemeinen ist das Kamerasystme mit dem Koordinatenvektoren $dash(x) =
|
||||
[xi delta eta]^t$ des Objektsystems bezogen, sondern über eine allgemeine
|
||||
Koordinatentransformation $x = c + [c_1 c_2 c_3] dash(x)$, wobei sich die
|
||||
$c$'s wie $x$ auf das Objektsystem beziehen. Wir fassen die
|
||||
Koordinatentransformation mit Matrizen als $x = c + C dash(x)$ oder kürzer
|
||||
als $bb(x) = mat(1, o^t; c, C) dash(bb(x)) = bb(C) dash(bb(x))$ zusammen.
|
||||
Das zentralperspektivische Bild von $x$ hat somit die homogene Darstellung
|
||||
$bb(y) = bb(T P C)^(-1) bb(x) = bb(A)$, wobei $bb(T)$ zusätzlch eine
|
||||
Translation des Bildsystems beschreibt.
|
||||
|
||||
Weil $C$ orthonormal ist, folgt $bb(C)^(-1) = mat(1, o^t; -C^t c, C^t)$.
|
||||
])
|
||||
== Fluchtpunkte
|
||||
#card(
|
||||
question: [Was versteht man unter Fluchtpunkten, de Spur, Horizont,
|
||||
Verschwindungsebene und Fluchtdreieck?],
|
||||
answer: [
|
||||
|
||||
Eine Gerade
|
||||
$
|
||||
cal(G): x &= p + v lambda
|
||||
bb(x)&= vec(1, p) + vec(0, v) lambda = bb(p) + bb(v) lambda
|
||||
$
|
||||
wird auf die Gerade $cal(G)': bb(A p) + bb(A v) lambda$ abgebildet, wobei
|
||||
$bb(A)$ die Abbildungsmatrix ist. Dabei stellt $bb(A v)$ das Bild des
|
||||
Fernpunkts $f_(cal(G))$ von $cal(G)$ dar. Es ist der Fluchtpunkt von
|
||||
$cal(G)$ bzw. von $cal(G)'$.
|
||||
|
||||
Die Fluchtpunkte (der Geraden) einer Ebene $cal(E)$ bilden deren
|
||||
Fluchtgeraden oder, wenn $cal(E)$ horizontal ist, deren Horizont.
|
||||
|
||||
Der Schnitt einer Ebene $cal(E)$ mit der Bildebene heißt die Spur von
|
||||
$cal(E)$. Sie ist parallel zu Fluchtgeraden von $cal(E)$.
|
||||
|
||||
Die Ebene $cal(V)$ parallel zur Bildebene durch das Auge heißt
|
||||
Verschwindungsebene. Sie wird auf die Ferngerade der Bildebene abgebildet,
|
||||
aber das Auge hat kein Bild.
|
||||
])
|
||||
#card(
|
||||
question: [Wann sind Fluchtpunkte Fernpunkte?],
|
||||
answer: [
|
||||
|
||||
Ist $cal(G)$ parallel zur Bildebene, ist ihr Fluchtpunkt ein Fernpunkt der
|
||||
Bildebene.
|
||||
])
|
||||
#card(
|
||||
question: [Wo schneiden sich Spur und Fluchtgeraden einer Ebene?],
|
||||
|
@ -1251,7 +1374,20 @@ Verschwindungsebene und Fluchtdreieck?],
|
|||
question: [Erklären Sie, was die Spalten und Elemente der Matrix
|
||||
einer Zentralperspektive bedeuten!],
|
||||
answer: [
|
||||
Eine Zentralperspektive hat die Darstellung $bb(y) = bb(A x)$ und
|
||||
ausführlicher
|
||||
$
|
||||
vec(epsilon, y) rho = mat(1 alpha, epsilon_1 alpha_1, epsilon_2 alpha_2,
|
||||
epsilon_3 alpha_3; a alpha, a_1 alpha_1, a_2 alpha_2, a_3 alpha_3) vec(e,
|
||||
x)
|
||||
$
|
||||
wobei $epsilon, epsilon_1, epsilon_2, epsilon_3, e in {0,1}$ und $alpha_i !=
|
||||
0 != alpha$. Dabei wird vorausgesetzt, dass $[1, o]^t$ nicht in der
|
||||
Verschwindungsebene liegt.
|
||||
|
||||
Die Spalten von $bb(A)$ repräsentieren das Bild des Objektsystems, $a$ das
|
||||
Bild des Ursprungs $[1, o]^t$ und $[epsilon_i, a_i]^t$ den Fluchtpunkt
|
||||
$f_i$ der i-Achse.
|
||||
])
|
||||
== Kameradaten
|
||||
#card(
|
||||
|
@ -1259,13 +1395,37 @@ einer Zentralperspektive bedeuten!],
|
|||
Hauptrichtungsvektor, den Hauptpunkt und die
|
||||
Fokaldistanz aus der Matrix einer Zentralperspektive?],
|
||||
answer: [
|
||||
|
||||
Die Verschwindungsebene hat die Gleichung $
|
||||
epsilon rho &= epsilon_1 alpha_1 x + epsilon_2 alpha_2 y + epsilon_3 alpha_3 z + alpha e \
|
||||
&= [alpha epsilon_1 alpha_1, epsilon_2 alpha_2, epsilon_3,
|
||||
alpha_3] vec(e, x, y, z) \
|
||||
&= 0
|
||||
$
|
||||
und den nicht normierten Normalenvektor $n:= [epsilon_1 alpha_1, epsilon_2,
|
||||
alpha_2, epsilon_3 alpha_3]$. Seine Vielfachen $n rho$ mit $rho != 0$ sind
|
||||
die Hauptrichtungsvektoren. Das Auge $c$ wird durch den Lösung von $bb(A c)
|
||||
= bb(o)$ repräsentiert und der Hauptpunkt durch $bb(h) = bb(A) vec(0, n)$,
|
||||
woraus $h = sum a_i lambda_i$ mit $lambda_i = (epsilon_i alpha_i^2)/(n^t n)$
|
||||
folgt.
|
||||
|
||||
Die Fokaldistanz $delta$ lässt sich aus dem Hauptrichtungsvektor $n$ und
|
||||
einem Vektor $v$ im Winkel von 45° zu $n$ ermitteln, da sie dem Abstand von
|
||||
$f lt.tri bb(A v)$ zu $h$ entspricht.
|
||||
])
|
||||
#card(
|
||||
question: [Warum ist der Hauptpunkt der Höhenpunkt des
|
||||
Fluchtdreiecks?],
|
||||
answer: [
|
||||
|
||||
Jede $(3 times 4)$-Matrix $bb(A) = mat(1, alpha_1, alpha_2, alpha_3; a, a_1
|
||||
alpha_1, a_2 alpha_2, a_3 alpha_3)$ vom Rang 3 repräsentiert eine
|
||||
3-Punkt-Perspektive genau dann, wenn $h = sum a_i a_i^2 / (a_1^2 + a_2^2 +
|
||||
a_3^2)$
|
||||
der Höhepunkt des Dreiecks $a_1 a_2 a_3$ ist.
|
||||
|
||||
Diese Bedingung ergibt sich aus Abschnitt 4.6 und sie beinhaltet zwei
|
||||
Bedingungen, nämlich je eine für beide Koordinaten von h. Im Übrigen ist das
|
||||
Fluchtdreieck einer 3-Punkt-Perspektive immer spitzwinklig, da alle $alpha_i
|
||||
> 0$, weswegen der Hauptpunkt im Dreiecksinneren liegt.
|
||||
])
|
||||
== Fluchtpunkte des Systems
|
||||
#card(
|
||||
|
@ -1273,14 +1433,34 @@ Fluchtdreiecks?],
|
|||
erkennen, ob und welche i-Punkt-Perspektive eine Matrix
|
||||
darstellt?],
|
||||
answer: [
|
||||
|
||||
Die Matirx $bb(A) = mat(epsilon_0 alpha, epsilon_1 alpha_1, epsilon_2
|
||||
alpha_2, epsilon_3 alpha_3; a alpha, a_1 alpha_1, a_2 alpha_2, a_3 alpha_3)$
|
||||
(vom Rang 3), repräsentiert eine i-Punkt-Perspektive, wobei $i = epsilon_1 +
|
||||
epsilon_2, epsilon_3$.
|
||||
|
||||
0-Punkt: $epsilon_i = 0$ \
|
||||
1-Punkt: $epsilon_2 = 1, norm(a_1) = norm(a_3), a_1 bot a_3$ \
|
||||
2-Punkt: $epsilon_1 = epsilon_2 = 1, a_3 bot a_2 - a_1, norm(a_3) sqrt(a_1^1
|
||||
+ a_2^2) = abs(alpha_1 alpha_2) norm(a_2 - a_1)$ \
|
||||
3-Punkt: $epsilon_{1,2,3} = 1, h = sum a_i alpha_i^2 / (alpha_1^2 +
|
||||
alpha_2^2 + alpha_3^2)$ der Höhenpunkt des Dreiecks $a_1 a_2 a_3$ ist.
|
||||
])
|
||||
== Urbilder
|
||||
#card(
|
||||
question: [Wie berechnet man das Urbild eines Punkts und einer
|
||||
Geraden unter einer Zentralperspektive?],
|
||||
answer: [
|
||||
|
||||
Möchten wir bei bekannter Matrix $bb(A)$ einer Zentralprojektion zu einem
|
||||
gegbenen Bildpunkt $y$ den Urbildpunkt $x$ bestimmen, haben wir diese drei
|
||||
Gleichungen für vier Unbekannte zu läsen: $bb(A) vec(1, x) omega = vec(1,
|
||||
y)$.
|
||||
|
||||
Eine Gerade $cal(V): bb(v)^t bb(y) = 0$ der Bildebene hat die Ebene $cal(U)
|
||||
: bb(v)^t bb(A) vec(1,x) xi = bb(u)^t vec(1, x) xi = 0$ als Urbild und, wenn
|
||||
wir $xi$ jeweils streichen, erhalten wir über zwei Geraden durch $y$ zwei
|
||||
Gleichungen für die rdei Koordinaten des gesuchten Punkts $x$. Weitere
|
||||
Geraden durch $y$ sind von den ersten beiden abhängig und führen nur zu
|
||||
abhängigen Gleichungen.
|
||||
])
|
||||
|
||||
== Kamerakalibrierung
|
||||
|
@ -1288,7 +1468,15 @@ Geraden unter einer Zentralperspektive?],
|
|||
question: [Wie kann man die Matrix bestimmen, die zu einem
|
||||
zentralperspektivischen Bild gehört?],
|
||||
answer: [
|
||||
|
||||
Die Gleichung $bb(v)^t bb(A) = sum v_i a_(i j) x_j = 0$ ist linear in den 12
|
||||
Matrixelemenden $a_(i j)$. Kennt man sechts Pankte $x$ und ihre Bilder $y$,
|
||||
kann man $bb(A)$ folglich daraus berchenen.
|
||||
|
||||
Da $bb(A)$ homogen ist und zwei Bedingungen genügt, reichen zur Bestimmung
|
||||
von $bb(A)$ sogar nur 4,5 Pankte, d.h. vier Punkte mit je zwei Geraden und
|
||||
ein Punkt mit einer Geraden. Mehr zu kennen hilft aber numerische Fehler
|
||||
entgegenzuwirken. Man bekommt dann überbestimmte Gleichungssysteme, die mit
|
||||
Hilfe der Methode der kleinsten Quadrate gelöst werden.
|
||||
])
|
||||
#card(
|
||||
question: [Wie viele Freiheitsgrade hat man für diese Matrizen und
|
||||
|
|
Loading…
Reference in a new issue