# Calibration de caméra

En traitement d'image, l'opération de calibration de caméra revient à modéliser le processus de formation des images, c'est-à-dire trouver la relation entre les coordonnées spatiales d'un point de l'espace avec le point associé dans l'image prise par la caméra. Le terme calibration est un anglicisme dont l'équivalent français est étalonnage. On note aussi que le terme calibrage est couramment utilisé.

## Modélisation

Plusieurs modèles décrivant le processus de formation des images existent. Le plus simple est le modèle du sténopé ou modèle pin-hole dans la littérature anglo-saxonne. Ce dernier est couramment utilisé en traitement d'image.

### Notations

Il convient de préciser les repères orthonormés nécessaires pour modéliser le fonctionnement de la caméra :
Les repères associés sont :
* $(R_{O},{\vec {X_{O}}},{\vec {Y_{O}}},{\vec {Z_{O}}})$ : qui est le repère associé à l'espace de travail. $O$ est l'origine de ce repère ;
* $(R_{C},{\vec {X_{C}}},{\vec {Y_{C}}},{\vec {Z_{C}}})$ : qui est le repère associé à la caméra. $C$ est le centre optique de la caméra ;
* $(R_{i},{\vec {u}},{\vec {v}})$ : qui est le repère associé à l'image visualisée.
Un plan supplémentaire n'a pas été représenté ici qui est dans le repère associé à la caméra. C'est le plan image qui est à une distance $f$ de $C$ suivant la direction donnée par ${\vec {Z_{C}}}$. $f$ est la distance focale de la caméra.

### Le modèle du sténopé

Appelé aussi modèle pin-hole dans la littérature anglo-saxonne, il s'agit d'une modélisation simple et linéaire du processus de formation des images au sein d'une caméra. Ce modèle suppose que le système optique de la caméra, c'est-à-dire sa lentille respecte les conditions de Gauss. Si l'on utilise la notation matricielle des coordonnées homogènes, il est possible de décrire de manière simple ce processus. Il suffit d'exprimer les relations de passage du repère monde au repère caméra, d'exprimer la projection du repère caméra dans le plan image et d'appliquer la transformation affine qui conduit aux coordonnées de l'image. La relation est la suivante pour un point $M$ de coordonnées $(X,Y,Z,1)$ dans l'espace (repère monde) et dont l'image est de coordonnées $(su,sv,s)$ dans le plan image :
$\left({\begin{matrix}su\\sv\\s\\\end{matrix}}\right)=\left[{\begin{matrix}k_{u}&s_{uv}&c_{u}\\0&k_{v}&c_{v}\\0&0&1\end{matrix}}\right]\left[{\begin{matrix}f&0&0&0\\0&f&0&0\\0&0&1&0\\\end{matrix}}\right]\left[{\begin{matrix}&&&t_{x}\\&R_{3\times 3}&&t_{y}\\&&&t_{z}\\0&0&0&1\end{matrix}}\right]\left({\begin{matrix}X\\Y\\Z\\1\\\end{matrix}}\right)$
Les paramètres employés dans ce modèle sont usuellement divisés en deux catégories : les paramètres intrinsèques qui sont internes à la caméra, et les paramètres extrinsèques qui peuvent varier suivant la position de la caméra dans l'espace de travail. Parmi les paramètres intrinsèques, on compte :
* $f$ : la distance focale ;
* $k_{u}{\mbox{ et }}k_{v}$ : les facteurs d'agrandissement de l'image ;
* $c_{u}{\mbox{ et }}c_{v}$ : les coordonnées de la projection du centre optique de la caméra sur le plan image ;
* $s_{uv}$ : qui traduit la non-orthogonalité potentielle des lignes et des colonnes de cellules électroniques photosensibles qui composent le capteur de la caméra. La plupart du temps, ce paramètre est négligé et prend donc une valeur nulle.
Les paramètres extrinsèques sont :
* $R_{3\times 3}$ : qui est la matrice de rotation permettant de passer du repère lié à l'espace de travail au repère lié à la caméra ;
* $t_{x},t_{y}{\mbox{ et }}t_{z}$ : qui sont les composantes du vecteur de translation permettant de passer du repère lié à l'espace de travail au repère lié à la caméra.
Au total, cela fait 12 paramètres à estimer (la matrice de rotation R contient 9 éléments, mais la relation qui la définit comme matrice de rotation R R$^T$ = 1 réduit le nombre d'éléments indépendants à 3 : les 3 angles polaires).
Étalonner la caméra consiste à déterminer la valeur numérique des paramètres de ce modèle. Il est toutefois possible de les regrouper de manière différente, suivant la forme sous laquelle ce modèle doit ensuite être exploité. Ceci conduit à différentes variantes possibles du modèle.

#### Variantes du modèle du sténopé

Certaines variantes du modèle du sténopé regroupent les paramètres intrinsèques de la manière suivante :
$\left[{\begin{matrix}f_{x}&S_{uv}&c_{u}&0\\0&f_{y}&c_{v}&0\\0&0&1&0\end{matrix}}\right]=\left[{\begin{matrix}k_{u}&s_{uv}&c_{u}\\0&k_{v}&c_{v}\\0&0&1\end{matrix}}\right]\left[{\begin{matrix}f&0&0&0\\0&f&0&0\\0&0&1&0\\\end{matrix}}\right]$
Sachant que l'expression $f.s_{uv}$ est souvent considérée comme étant nulle, on obtient un nouveau jeu simplifié de paramètres intrinsèques :
* $f_{x}{\mbox{ et }}f_{y}$ qui correspondent à la distance focale exprimée en largeurs et en hauteurs de pixels (ces derniers ne sont pas nécessairement carrés, mais en tous cas souvent rectangulaires) ;
* $c_{u}{\mbox{ et }}c_{v}$ : les coordonnées de la projection du centre optique de la caméra sur le plan image.
Cette variante contient 11 paramètres à estimer. Elle présente l'avantage de séparer en deux matrices les paramètres intrinsèques et extrinsèques et donc d'isoler ces derniers qui changent de valeur à chaque fois que la caméra est déplacée dans l'espace de travail.
Une autre variante consiste à n'utiliser qu'une matrice globale de paramètres à estimer :
$\left[{\begin{matrix}m_{11}&m_{12}&m_{13}&m_{14}\\m_{21}&m_{22}&m_{23}&m_{24}\\m_{31}&m_{32}&m_{33}&m_{34}\end{matrix}}\right]=\left[{\begin{matrix}k_{u}&s_{uv}&c_{u}\\0&k_{v}&c_{v}\\0&0&1\end{matrix}}\right]\left[{\begin{matrix}f&0&0&0\\0&f&0&0\\0&0&1&0\\\end{matrix}}\right]\left[{\begin{matrix}&&&t_{x}\\&R_{3\times 3}&&t_{y}\\&&&t_{z}\\0&0&0&1\end{matrix}}\right]$
Cette dernière ne présente que 12 paramètres à estimer (11 dans le cas s$_{uv}$ = 0) mais il est nécessaire de les réestimer à chaque fois que la caméra est déplacée.
Toutefois, dans le cas des objectifs grand-angle, les conditions optiques de Gauss ne sont plus respectées, ce qui induit des déformations optiques dans l'image finale dont il faut alors tenir compte.

### Distorsions optiques

Les lentilles des caméras, par leur symétrie sphérique, provoquent une distorsion, c'est-à-dire une déformation de l'image réelle. On décompose la distorsion en une composante radiale et une composante tangentielle. La première est due à l'asymétrie des lentilles, la deuxième au mauvais alignement des lentilles. Il est possible de corriger l'image captée si l'on possède les paramètres liés à la caméra (les paramètres intrinsèques), on peut alors reformer l'image par interpolation des pixels ayant subi préalablement un déplacement inverse à celui de la distorsion.

## Logiciels d'étalonnage

* HYSCAS : logiciel cross-plateforme d'étalonnage stéréo hybride.
* Bouguet : boîte à outils d'étalonnage caméra mono, stéréo perspective et fisheye.
* Mei : boîte à outils d'étalonnage de caméra mono fisheye et omnidirectionnelle.
* Scaramuzza : boîte à outils d'étalonnage de caméra mono omnidirectionnelle.
* camera-calib : application de la librairie MRPT (Mobile Robot Programming Toolkit)