mirror of
https://github.com/NotXia/unibo-ai-notes.git
synced 2025-12-14 18:51:52 +01:00
Add IPCV2 projective space
This commit is contained in:
1
src/image-processing-and-computer-vision/module2/ainotes.cls
Symbolic link
1
src/image-processing-and-computer-vision/module2/ainotes.cls
Symbolic link
@ -0,0 +1 @@
|
||||
../../ainotes.cls
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 439 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 49 KiB |
13
src/image-processing-and-computer-vision/module2/ipcv2.tex
Normal file
13
src/image-processing-and-computer-vision/module2/ipcv2.tex
Normal file
@ -0,0 +1,13 @@
|
||||
\documentclass[11pt]{ainotes}
|
||||
|
||||
\title{Image Processing and Computer Vision\\(Module 2)}
|
||||
\date{2023 -- 2024}
|
||||
\def\lastupdate{{PLACEHOLDER-LAST-UPDATE}}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\makenotesfront
|
||||
|
||||
\input{./sections/_image_formation.tex}
|
||||
|
||||
\end{document}
|
||||
@ -0,0 +1,253 @@
|
||||
\chapter{Camera calibration}
|
||||
|
||||
\begin{description}
|
||||
\item[World reference frame (WRF)] \marginnote{World reference frame (WRF)}
|
||||
Coordinate system $(X_W, Y_W, Z_W)$ of the real world relative to a reference point (e.g. a corner).
|
||||
|
||||
\item[Camera reference frame (CRF)] \marginnote{Camera reference frame (CRF)}
|
||||
Coordinate system $(X_C, Y_C, Z_C)$ that characterizes a camera.
|
||||
|
||||
\item[Image reference frame (IRF)] \marginnote{Image reference frame}
|
||||
Coordinate system $(U, V)$ of the image.
|
||||
They are obtained as a perspective projection of CRF coordinates as:
|
||||
\[
|
||||
u = \frac{f}{z}x_C
|
||||
\hspace{3em}
|
||||
v = \frac{f}{z}y_C
|
||||
\]
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.8\linewidth]{./img/_formation_system.pdf}
|
||||
\caption{Example of WRF, CRF and IRF}
|
||||
\end{figure}
|
||||
\end{description}
|
||||
|
||||
|
||||
|
||||
\section{Forward imaging model}
|
||||
|
||||
|
||||
\subsection{Image pixelization (CRF to IRF)}
|
||||
\marginnote{Image pixelization}
|
||||
|
||||
The conversion from the camera reference frame to the image reference frame
|
||||
is done in two steps:
|
||||
\begin{descriptionlist}
|
||||
\item[Discetization] \marginnote{Discetization}
|
||||
Given the sizes (in mm) $\Delta u$ and $\Delta v$ of the pixels,
|
||||
it is sufficient to modify the perspective projection to map CRF coordinates into a discrete grid:
|
||||
\[
|
||||
u = \frac{1}{\Delta u}\frac{f}{z_C}x_C
|
||||
\hspace{3em}
|
||||
v = \frac{1}{\Delta v}\frac{f}{z_C}y_C
|
||||
\]
|
||||
|
||||
\item[Origin translation] \marginnote{Origin translation}
|
||||
To avoid negative pixels, the origin of the image has to be translated from the piercing point $c$ to the top-left corner.
|
||||
This is done by adding an offset $(u_0, v_0)$ to the projection (in the new system, $c = (u_0, v_0)$):
|
||||
\[
|
||||
u = \frac{1}{\Delta u}\frac{f}{z_C}x_C + u_0
|
||||
\hspace{3em}
|
||||
v = \frac{1}{\Delta v}\frac{f}{z_C}y_C +v_0
|
||||
\]
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.9\linewidth]{./img/_pixelization.pdf}
|
||||
\caption{Pixelization process}
|
||||
\end{figure}
|
||||
|
||||
\item[Intrinsic parameters] \marginnote{Intrinsic parameters}
|
||||
Parameters needed to convert from CRF to IRF.
|
||||
|
||||
By fixing $f_u = \frac{f}{\Delta u}$ and $f_v = \frac{f}{\Delta v}$, the projection can be rewritten as:
|
||||
\[
|
||||
u = f_u\frac{x_C}{z_C} + u_0
|
||||
\hspace{3em}
|
||||
v = f_v\frac{y_C}{z_C} +v_0
|
||||
\]
|
||||
Therefore, there is a total of 4 parameters: $f_u$, $f_v$, $u_0$ and $v_0$.
|
||||
\end{descriptionlist}
|
||||
|
||||
|
||||
\subsection{Roto-translation (WRF to CRF)}
|
||||
\marginnote{Roto-translation}
|
||||
|
||||
The conversion from the world reference system to the camera reference system
|
||||
is done through a roto-translation wrt the optical center.
|
||||
|
||||
Given:
|
||||
\begin{itemize}
|
||||
\item A WRF point $\vec{M}_W = (x_W, y_W, z_W)$,
|
||||
\item A rotation matrix $\matr{R}$,
|
||||
\item A translation vector $\vec{t}$,
|
||||
\end{itemize}
|
||||
the coordinates $\vec{M}_C$ in CRF corresponding to $\vec{M}_W$ are given by:
|
||||
\[
|
||||
\vec{M}_C = \begin{pmatrix} x_C \\ y_C \\ z_C \end{pmatrix} =
|
||||
\matr{R}\vec{M}_W + \vec{t} =
|
||||
\begin{pmatrix}
|
||||
r_{11} & r_{12} & r_{13} \\
|
||||
r_{21} & r_{22} & r_{23} \\
|
||||
r_{31} & r_{32} & r_{33} \\
|
||||
\end{pmatrix}
|
||||
\begin{pmatrix}
|
||||
x_W \\ y_W \\ z_W
|
||||
\end{pmatrix}
|
||||
+
|
||||
\begin{pmatrix}
|
||||
t_1 \\ t_2 \\ t_3
|
||||
\end{pmatrix}
|
||||
\]
|
||||
|
||||
\begin{remark}
|
||||
The coordinates $\vec{C}_W$ of the optical center $\vec{C}$ are obtained as:
|
||||
\[
|
||||
\nullvec = \matr{R}\vec{C}_W + \vec{t}
|
||||
\iff (\nullvec - \vec{t}) = \matr{R}\vec{C}_W
|
||||
\iff \vec{C}_W = \matr{R}^T (\nullvec - \vec{t})
|
||||
\iff \vec{C}_W = -\matr{R}^T\vec{t}
|
||||
\]
|
||||
\end{remark}
|
||||
|
||||
\begin{description}
|
||||
\item[Extrinsic parameters] \marginnote{Extrinsic parameters}
|
||||
\phantom{}
|
||||
\begin{itemize}
|
||||
\item The rotation matrix $\matr{R}$ has 9 elements of which 3 are independent (i.e. the rotation angles around the axes).
|
||||
\item The translation matrix $\vec{t}$ has 3 elements.
|
||||
\end{itemize}
|
||||
|
||||
Therefore, there is a total of 6 parameters.
|
||||
\end{description}
|
||||
|
||||
|
||||
\begin{remark}
|
||||
It is not possible to combine the intrinsic camera model and the extrinsic roto-translation to
|
||||
create a linear model for the forward imaging model.
|
||||
\[
|
||||
u = f_u \frac{r_{11}x_W + r_{12}y_W + r_{13}z_W + t_1}{r_{31}x_W + r_{32}y_W + r_{33}z_W + t_3} + u_0
|
||||
\hspace{1.5em}
|
||||
v = f_v \frac{r_{21}x_W + r_{22}y_W + r_{23}z_W + t_2}{r_{31}x_W + r_{32}y_W + r_{33}z_W + t_3} + v_0
|
||||
\]
|
||||
\end{remark}
|
||||
|
||||
|
||||
|
||||
\section{Projective space}
|
||||
|
||||
\begin{remark}
|
||||
In the 2D Euclidean plane $\mathbb{R}^2$, parallel lines never intersect and points at infinity cannot be represented.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\begin{subfigure}{0.45\linewidth}
|
||||
\centering
|
||||
\includegraphics[width=0.45\linewidth]{./img/point_infinity_example1.png}
|
||||
\end{subfigure}
|
||||
\begin{subfigure}{0.45\linewidth}
|
||||
\centering
|
||||
\includegraphics[width=0.8\linewidth]{./img/point_infinity_example2.png}
|
||||
\end{subfigure}
|
||||
\caption{Example of point at infinity}
|
||||
\end{figure}
|
||||
\end{remark}
|
||||
|
||||
\begin{remark}
|
||||
Point at infinity is a point in space while the vanishing point is in the image plane.
|
||||
\end{remark}
|
||||
|
||||
\begin{description}
|
||||
\item[Homogeneous coordinates] \marginnote{Homogeneous coordinates}
|
||||
Without loss of generality, consider the 2D Euclidean space $\mathbb{R}^2$.
|
||||
|
||||
Given a coordinate $(u, v)$ in Euclidean space, its homogeneous coordinates have an additional dimension
|
||||
such that:
|
||||
\[ (u, v) \equiv (ku, kv, k) \,\forall k \neq 0 \]
|
||||
In other words, a 2D Euclidean point is represented by an equivalence class of 3D points.
|
||||
|
||||
\item[Projective space] \marginnote{Projective space}
|
||||
Space $\mathbb{P}^n$ associated with the homogeneous coordinates of an Euclidean space $\mathbb{R}^n$.
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.6\linewidth]{./img/_projective_space.pdf}
|
||||
\caption{Example of projective space $\mathbb{P}^2$}
|
||||
\end{figure}
|
||||
|
||||
\begin{remark}
|
||||
$\nullvec$ is not a valid point in $\mathbb{P}^n$.
|
||||
\end{remark}
|
||||
|
||||
\begin{remark}
|
||||
A projective space allows to homogeneously handle both ordinary (image) and ideal (scene) points without introducing additional complexity.
|
||||
\end{remark}
|
||||
|
||||
\item[Point at infinity] \marginnote{Point at infinity}
|
||||
Given the parametric equation of a 2D line defined as:
|
||||
\[
|
||||
\vec{m} = \vec{m}_0 + \lambda \vec{d} =
|
||||
\begin{pmatrix} u_0 \\ v_0 \end{pmatrix} + \lambda \begin{pmatrix} a \\ b \end{pmatrix} =
|
||||
\begin{pmatrix} u_0 + \lambda a \\ v_0 + \lambda b \end{pmatrix}
|
||||
\]
|
||||
It is possible to define a generic point in the projective space along the line $m$ as:
|
||||
\[
|
||||
\tilde{\vec{m}} \equiv
|
||||
\begin{pmatrix} \vec{m} \\ 1 \end{pmatrix} \equiv
|
||||
\begin{pmatrix} u_0 + \lambda a \\ v_0 + \lambda b \\ 1 \end{pmatrix} \equiv
|
||||
\begin{pmatrix} \frac{u_0}{\lambda} + a \\ \frac{v_0}{\lambda} + b \\ \frac{1}{\lambda} \end{pmatrix}
|
||||
\]
|
||||
|
||||
The projective coordinates $\tilde{\vec{m}}_\infty$ of the point at infinity of a line $m$ is given by:
|
||||
\[ \tilde{\vec{m}}_\infty = \lim_{\lambda \rightarrow \infty} \tilde{\vec{m}} \equiv \begin{pmatrix} a \\ b \\ 0 \end{pmatrix} \]
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.6\linewidth]{./img/_projective_point_inifinity.pdf}
|
||||
\caption{Example of infinity point in $\mathbb{P}^2$}
|
||||
\end{figure}
|
||||
|
||||
In 3D, the definition is trivially extended as:
|
||||
\[
|
||||
\tilde{\vec{M}}_\infty =
|
||||
\lim_{\lambda \rightarrow \infty} \begin{pmatrix} \frac{x_0}{\lambda} + a \\ \frac{y_0}{\lambda} + b \\ \frac{z_0}{\lambda} + c \\ \frac{1}{\lambda} \end{pmatrix} \equiv
|
||||
\begin{pmatrix} a \\ b \\ c \\ 0 \end{pmatrix}
|
||||
\]
|
||||
|
||||
\item[Perspective projection] \marginnote{Perspective projection in projective space}
|
||||
Given a point $\vec{M}_C = (x_C, y_C, z_C)$ in the CRF and its corresponding point $\vec{m} = (u, v)$ in the image,
|
||||
the non-linear perspective projection in Euclidean space can be done linearly in the projective space as:
|
||||
\[
|
||||
\begin{split}
|
||||
\tilde{\vec{m}} &\equiv
|
||||
\begin{pmatrix} u \\ v \\ 1 \end{pmatrix} \equiv
|
||||
\begin{pmatrix} f_u\frac{x_C}{z_C} + u_0 \\ f_v\frac{y_C}{z_C} +v_0 \\ 1 \end{pmatrix} \equiv
|
||||
z_C \begin{pmatrix} f_u\frac{x_C}{z_C} + u_0 \\ f_v\frac{y_C}{z_C} +v_0 \\ 1 \end{pmatrix} \\
|
||||
&\equiv \begin{pmatrix} f_u x_C + z_C u_0 \\ f_v y_C + z_C v_0 \\ z_C \end{pmatrix} \equiv
|
||||
\begin{pmatrix} f_u & 0 & u_0 & 0 \\ 0 & f_v & v_0 & 0 \\ 0 & 0 & 1 & 0 \end{pmatrix} \begin{pmatrix} x_C \\ y_C \\ z_C \\ 1 \end{pmatrix} \equiv
|
||||
\matr{P}_\text{int} \tilde{\vec{M}}_C
|
||||
\end{split}
|
||||
\]
|
||||
|
||||
\begin{remark}
|
||||
The equation can be written to take account of the arbitrary scale factor $k$ as:
|
||||
\[ k\tilde{\vec{m}} = \matr{P}_\text{int} \tilde{\vec{M}}_C \]
|
||||
or, if $k$ is omitted, as:
|
||||
\[ \tilde{\vec{m}} \approx \matr{P}_\text{int} \tilde{\vec{M}}_C \]
|
||||
\end{remark}
|
||||
|
||||
\begin{remark}
|
||||
In projective space, we can also project in Euclidean space the point at infinity of parallel 3D lines in CRF with direction $(a, b, c)$:
|
||||
\[
|
||||
\tilde{\vec{m}}_\infty \equiv
|
||||
\matr{P}_\text{int} \begin{pmatrix} a \\ b \\ c \\ 0 \end{pmatrix} \equiv
|
||||
\begin{pmatrix} f_u & 0 & u_0 & 0 \\ 0 & f_v & v_0 & 0 \\ 0 & 0 & 1 & 0 \end{pmatrix} \begin{pmatrix} a \\ b \\ c \\ 0 \end{pmatrix} \equiv
|
||||
\begin{pmatrix} f_u a + c u_0 \\ f_v b + c v_0 \\ c \end{pmatrix} \equiv
|
||||
c\begin{pmatrix} f_u \frac{a}{c} + u_0 \\ f_v \frac{b}{c} + v_0 \\ 1 \end{pmatrix}
|
||||
\]
|
||||
Therefore, the Euclidean coordinates are:
|
||||
\[ \vec{m}_\infty = \begin{pmatrix} f_u \frac{a}{c} + u_0 \\ f_v \frac{b}{c} + v_0 \end{pmatrix} \]
|
||||
|
||||
Note that this is not possible when $c = 0$.
|
||||
\end{remark}
|
||||
\end{description}
|
||||
Reference in New Issue
Block a user