feat(ggg): exam solutions for chapter 4

This commit is contained in:
Orangerot 2025-06-23 00:28:09 +02:00
parent fe3dfc2802
commit 2da4435402

View file

@ -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