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.mat(delim: "[")
|
||||||
#set math.vec(delim: "[")
|
#set math.vec(delim: "[")
|
||||||
|
|
||||||
|
#let TODO(args) = text(stroke: red, [TODO: #args])
|
||||||
|
|
||||||
#let transpose(t)={
|
#let transpose(t)={
|
||||||
let output=t.at(0).zip(..t.slice(1))
|
let output=t.at(0).zip(..t.slice(1))
|
||||||
output
|
output
|
||||||
|
@ -1192,54 +1194,175 @@ Ebene und die zweier Geraden berechnen?],
|
||||||
question: [Was sind homogene Koordinten, Fernpunkte und der
|
question: [Was sind homogene Koordinten, Fernpunkte und der
|
||||||
Unpunkt?],
|
Unpunkt?],
|
||||||
answer: [
|
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(
|
#card(
|
||||||
question: [Geben Sie die Gleichungsdarstellung einer Hyperebene in
|
question: [Geben Sie die Gleichungsdarstellung einer Hyperebene in
|
||||||
erweiterten Koordinaten an und leiten Sie daraus die
|
erweiterten Koordinaten an und leiten Sie daraus die
|
||||||
homogene Darstellung ab!],
|
homogene Darstellung ab!],
|
||||||
answer: [
|
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(
|
#card(
|
||||||
question: [Was ist die Fernhyperebene?],
|
question: [Was ist die Fernhyperebene?],
|
||||||
answer: [
|
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
|
== Zentralprojektion
|
||||||
#card(
|
#card(
|
||||||
question: [Was ist eine Zentralprojektion?],
|
question: [Was ist eine Zentralprojektion?],
|
||||||
answer: [
|
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(
|
#card(
|
||||||
question: [Wie kann sie mit Matrizen beschrieben werden?],
|
question: [Wie kann sie mit Matrizen beschrieben werden?],
|
||||||
answer: [
|
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(
|
#card(
|
||||||
question: [Was ist die Fokaldistanz und was ist der Hauptpunkt?],
|
question: [Was ist die Fokaldistanz und was ist der Hauptpunkt?],
|
||||||
answer: [
|
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
|
== Kamerabewegung
|
||||||
#card(
|
#card(
|
||||||
question: [Wie stellt sich eine Zentralprojektion in Matrizen dar,
|
question: [Wie stellt sich eine Zentralprojektion in Matrizen dar,
|
||||||
wenn das Objekt- und Kamerasystem verschieden sind?],
|
wenn das Objekt- und Kamerasystem verschieden sind?],
|
||||||
answer: [
|
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
|
== Fluchtpunkte
|
||||||
#card(
|
#card(
|
||||||
question: [Was versteht man unter Fluchtpunkten, de Spur, Horizont,
|
question: [Was versteht man unter Fluchtpunkten, de Spur, Horizont,
|
||||||
Verschwindungsebene und Fluchtdreieck?],
|
Verschwindungsebene und Fluchtdreieck?],
|
||||||
answer: [
|
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(
|
#card(
|
||||||
question: [Wann sind Fluchtpunkte Fernpunkte?],
|
question: [Wann sind Fluchtpunkte Fernpunkte?],
|
||||||
answer: [
|
answer: [
|
||||||
|
Ist $cal(G)$ parallel zur Bildebene, ist ihr Fluchtpunkt ein Fernpunkt der
|
||||||
|
Bildebene.
|
||||||
])
|
])
|
||||||
#card(
|
#card(
|
||||||
question: [Wo schneiden sich Spur und Fluchtgeraden einer Ebene?],
|
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
|
question: [Erklären Sie, was die Spalten und Elemente der Matrix
|
||||||
einer Zentralperspektive bedeuten!],
|
einer Zentralperspektive bedeuten!],
|
||||||
answer: [
|
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
|
== Kameradaten
|
||||||
#card(
|
#card(
|
||||||
|
@ -1259,13 +1395,37 @@ einer Zentralperspektive bedeuten!],
|
||||||
Hauptrichtungsvektor, den Hauptpunkt und die
|
Hauptrichtungsvektor, den Hauptpunkt und die
|
||||||
Fokaldistanz aus der Matrix einer Zentralperspektive?],
|
Fokaldistanz aus der Matrix einer Zentralperspektive?],
|
||||||
answer: [
|
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(
|
#card(
|
||||||
question: [Warum ist der Hauptpunkt der Höhenpunkt des
|
question: [Warum ist der Hauptpunkt der Höhenpunkt des
|
||||||
Fluchtdreiecks?],
|
Fluchtdreiecks?],
|
||||||
answer: [
|
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
|
== Fluchtpunkte des Systems
|
||||||
#card(
|
#card(
|
||||||
|
@ -1273,14 +1433,34 @@ Fluchtdreiecks?],
|
||||||
erkennen, ob und welche i-Punkt-Perspektive eine Matrix
|
erkennen, ob und welche i-Punkt-Perspektive eine Matrix
|
||||||
darstellt?],
|
darstellt?],
|
||||||
answer: [
|
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
|
== Urbilder
|
||||||
#card(
|
#card(
|
||||||
question: [Wie berechnet man das Urbild eines Punkts und einer
|
question: [Wie berechnet man das Urbild eines Punkts und einer
|
||||||
Geraden unter einer Zentralperspektive?],
|
Geraden unter einer Zentralperspektive?],
|
||||||
answer: [
|
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
|
== Kamerakalibrierung
|
||||||
|
@ -1288,7 +1468,15 @@ Geraden unter einer Zentralperspektive?],
|
||||||
question: [Wie kann man die Matrix bestimmen, die zu einem
|
question: [Wie kann man die Matrix bestimmen, die zu einem
|
||||||
zentralperspektivischen Bild gehört?],
|
zentralperspektivischen Bild gehört?],
|
||||||
answer: [
|
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(
|
#card(
|
||||||
question: [Wie viele Freiheitsgrade hat man für diese Matrizen und
|
question: [Wie viele Freiheitsgrade hat man für diese Matrizen und
|
||||||
|
|
Loading…
Reference in a new issue