Supposons que nous avons $m$ paires de points corrects. Alors la probabilité de prendre $k$ paires de points corrects est $(m / n)^k$. On veut que la probabilité de $N_{iter}$ itérations de RANSAC donnent que des sous-ensembles contenant une mauvaise paire de points soit inférieur à $\beta=1\%$ :
$m$ est inconnu mais on connaît une borne inférieur qui est le plus grand nombre de paires de points expliqué par un modèle obtenu jusque là. A chaque fois qu'on trouve un meilleur modèle on peut alors recalculer $m$.
\ No newline at end of file
$m$ est inconnu mais on connaît une borne inférieur qui est le plus grand nombre de paires de points expliqué par un modèle obtenu jusque là. A chaque fois qu'on trouve un meilleur modèle on peut alors recalculer $m$.
\sect{Rectification épipôlaire}
\paragraph{}
Il est commode d'avoir les lignes épipôlaires parallèles et à la même ordonné dans les deux images. La conséquence est que les épipôles sont les points à l'infini horizontalement.
$$ e = e' =\pmat{1\\0\\0}$$
On peut toujours se retrouver dans cette situation en appliquant une rotation virtuelle à la caméra qui résulte en une homographie.
Commençons par reprendre les formules binoculaire pour observer un point de l'espace $X$ avec des caméras de matrices de projections $P$ et $P'$. Les coordonnées homogènes de l'images de $X$ par les deux caméras sont notées $x$ et $x'$ :
L'objectif de la triangulation est à partir des deux images $x$ et $x'$, de retrouver le point dans l'espace $X$. Cela est faisable en calculant une SVD pour trouver le noyau d'une matrice :
$$ X \in\ker\pmat{[x]_\times P \\[x']_\times P'}$$
\paragraph{}
En se plaçant dans le repère de la seconde caméra et en notant $R$ la matrice de rotation du repère de la seconde caméra au repère de la première caméra et $T$ la translation entre les deux caméras. On peut réécrire les équations précédentes avec :
$$\lambda x = K(RX + T)\qquad\lambda' x' = K' X $$
On pose alors le vecteur $Y =\pmat{X^\trans&1&\lambda&\lambda'}^\trans$ qui vérifie le système suivant :
$$\pmat{KR & KT &-x &0\\ K' &0&0&-x'} Y =0$$
On retrouve alors $X$ à l'aide de la SVD de la matrice de droite qui nous donne le noyau.
\paragraph{Récupération de $R$ et $T$}
Supposons que nous connaissons les matrices de calibration $K$ et $K'$ en plus de la matrice essentielle $E$ (obtenable à partir de la matrice fondamentale $F$ grâce à $K$ et $K'$). On essaye alors de retrouver $R$ et $T$. On sait que $E =\left[ T \right]_\times R$.
$$ E^\trans E y = R^\trans[T]_\times^\trans[T]_\times R y =- R^\trans[T]_\times\left([T]_\times(R y)\right)=- R^\trans\left((T^\trans(R y)) T -(T^\trans T)(Ry)\right)$$
Ce qui donne :
$$ E^\trans E = R^\trans\left( T T^\trans-\| T \|_2^2 I_3\right) R =- x x^\trans+\| T \|_2^2 I_3\qquad\text{Avec } x = R^\trans T $$
On observe alors que $E^\trans E x =0$ et que pour $y$ orthogonal à $x$, $E^\trans E y =\| T \|_2^2 y$. Ainsi $E^\trans E$ est une matrice ortho-diagonalisable de valeur propres $\| T \|_2^2$ et $0$ et de rang 2. Ainsi les valeurs propres de $E$ sont $\sigma_1=\sigma_2=\| T \|_2=\sigma$ et $\sigma_3=0$. La SVD de $E$ donne :
$$ E = U \pmat{\sigma\\&\sigma\\&&0} V^\trans=\sigma U \pmat{0&-1&0\\1&0&0\\0&0&0} U^\trans U \pmat{0&1&0\\-1&0&0\\0&0&1} V^\trans=\left[ T \right]_\times R $$
On identifie alors :
$$\left[ T \right]_\times=\pm\sigma U \pmat{0&-1&0\\1&0&0\\0&0&0} U^\trans\qquad R =\pm U \pmat{0&1&0\\-1&0&0\\0&0&1} V^\trans$$
Ce qui donne 4 solutions possibles :
$$\left\{\begin{array}{lll}
T &=&\pm\sigma U [e_3]_\times U^\trans\\[1mm]
R &=&\pm U R_z \left(\pm\frac{\pi}{2}\right) V^\trans