From 7f7be9bab01105095aba24fdbcdb3956108314a0 Mon Sep 17 00:00:00 2001 From: Souriya Trinh Date: Sun, 13 Apr 2025 22:15:45 +0200 Subject: [PATCH] Add additional information about homogeneous transformations. Add quick formulas for conversions between physical focal length, sensor size, fov and camera intrinsic params. --- .../pinhole_homogeneous_transformation.png | Bin 0 -> 79039 bytes modules/calib3d/include/opencv2/calib3d.hpp | 101 ++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 modules/calib3d/doc/pics/pinhole_homogeneous_transformation.png diff --git a/modules/calib3d/doc/pics/pinhole_homogeneous_transformation.png b/modules/calib3d/doc/pics/pinhole_homogeneous_transformation.png new file mode 100644 index 0000000000000000000000000000000000000000..f98e4ba21746d3a1e3e3ee9674e77044937bbb0b GIT binary patch literal 79039 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�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 literal 0 HcmV?d00001 diff --git a/modules/calib3d/include/opencv2/calib3d.hpp b/modules/calib3d/include/opencv2/calib3d.hpp index 8b87a3cb68..76249112dc 100644 --- a/modules/calib3d/include/opencv2/calib3d.hpp +++ b/modules/calib3d/include/opencv2/calib3d.hpp @@ -383,6 +383,107 @@ R & t \\ 0 & 1 \end{bmatrix} P_{h_0}.\f] + Homogeneous Transformations, Object frame / Camera frame
+Change of basis or computing the 3D coordinates from one frame to another frame can be achieved easily using +the following notation: + +\f[ +\mathbf{X}_c = \hspace{0.2em} +{}^{c}\mathbf{T}_o \hspace{0.2em} \mathbf{X}_o +\f] + +\f[ +\begin{bmatrix} +X_c \\ +Y_c \\ +Z_c \\ +1 +\end{bmatrix} = +\begin{bmatrix} +{}^{c}\mathbf{R}_o & {}^{c}\mathbf{t}_o \\ +0_{1 \times 3} & 1 +\end{bmatrix} +\begin{bmatrix} +X_o \\ +Y_o \\ +Z_o \\ +1 +\end{bmatrix} +\f] + +For a 3D points (\f$ \mathbf{X}_o \f$) expressed in the object frame, the homogeneous transformation matrix +\f$ {}^{c}\mathbf{T}_o \f$ allows computing the corresponding coordinate (\f$ \mathbf{X}_c \f$) in the camera frame. +This transformation matrix is composed of a 3x3 rotation matrix \f$ {}^{c}\mathbf{R}_o \f$ and a 3x1 translation vector +\f$ {}^{c}\mathbf{t}_o \f$. +The 3x1 translation vector \f$ {}^{c}\mathbf{t}_o \f$ is the position of the object frame in the camera frame and the +3x3 rotation matrix \f$ {}^{c}\mathbf{R}_o \f$ the orientation of the object frame in the camera frame. + +With this simple notation, it is easy to chain the transformations. For instance, to compute the 3D coordinates of a point +expressed in the object frame in the world frame can be done with: + +\f[ +\mathbf{X}_w = \hspace{0.2em} +{}^{w}\mathbf{T}_c \hspace{0.2em} {}^{c}\mathbf{T}_o \hspace{0.2em} +\mathbf{X}_o = +{}^{w}\mathbf{T}_o \hspace{0.2em} \mathbf{X}_o +\f] + +Similarly, computing the inverse transformation can be done with: + +\f[ +\mathbf{X}_o = \hspace{0.2em} +{}^{o}\mathbf{T}_c \hspace{0.2em} \mathbf{X}_c = +\left( {}^{c}\mathbf{T}_o \right)^{-1} \hspace{0.2em} \mathbf{X}_c +\f] + +The inverse of an homogeneous transformation matrix is then: + +\f[ +{}^{o}\mathbf{T}_c = \left( {}^{c}\mathbf{T}_o \right)^{-1} = +\begin{bmatrix} +{}^{c}\mathbf{R}^{\top}_o & - \hspace{0.2em} {}^{c}\mathbf{R}^{\top}_o \hspace{0.2em} {}^{c}\mathbf{t}_o \\ +0_{1 \times 3} & 1 +\end{bmatrix} +\f] + +One can note that the inverse of a 3x3 rotation matrix is directly its matrix transpose. + +![Perspective projection, from object to camera frame](pics/pinhole_homogeneous_transformation.png) + +This figure summarizes the whole process. The object pose returned for instance by the @ref solvePnP function +or pose from fiducial marker detection is this \f$ {}^{c}\mathbf{T}_o \f$ transformation. + +The camera intrinsic matrix \f$ \mathbf{K} \f$ allows projecting the 3D point expressed in the camera frame onto the image plane +assuming a perspective projection model (pinhole camera model). Image coordinates extracted from classical image processing functions +assume a (u,v) top-left coordinates frame. + +\note +- for an online video course on this topic, see for instance: + - ["3.3.1. Homogeneous Transformation Matrices", Modern Robotics, Kevin M. Lynch and Frank C. Park](https://modernrobotics.northwestern.edu/nu-gm-book-resource/3-3-1-homogeneous-transformation-matrices/) +- the 3x3 rotation matrix is composed of 9 values but describes a 3 dof transformation +- some additional properties of the 3x3 rotation matrix are: + - \f$ \mathrm{det} \left( \mathbf{R} \right) = 1 \f$ + - \f$ \mathbf{R} \mathbf{R}^{\top} = \mathbf{R}^{\top} \mathbf{R} = \mathrm{I}_{3 \times 3} \f$ + - interpolating rotation can be done using the [Slerp (spherical linear interpolation)](https://en.wikipedia.org/wiki/Slerp) method +- quick conversions between the different rotation formalisms can be done using this [online tool](https://www.andre-gaschler.com/rotationconverter/) + + Intrinsic parameters from camera lens specifications
+When dealing with industrial cameras, the camera intrinsic matrix or more precisely \f$ \left(f_x, f_y \right) \f$ +can be deduced, approximated from the camera specifications: + +\f[ +f_x = \frac{f_{\text{mm}}}{\text{pixel_size_in_mm}} = \frac{f_{\text{mm}}}{\text{sensor_size_in_mm} / \text{nb_pixels}} +\f] + +In a same way, the physical focal length can be deduced from the angular field of view: + +\f[ +f_{\text{mm}} = \frac{\text{sensor_size_in_mm}}{2 \times \tan{\frac{\text{fov}}{2}}} +\f] + +This latter conversion can be useful when using a rendering software to mimic a physical camera device. + + Additional references, notes
@note - Many functions in this module take a camera intrinsic matrix as an input parameter. Although all functions assume the same structure of this parameter, they may name it differently. The