+\begin{figure}[htbp]
+ \centering
+ \includegraphics[width=0.8\linewidth]{figures/exemple-granulometrie.jpg}
+ \caption{Image de résolution 2592~\texttimes~1944 contenant environ 700 érythrocytes, qui a été utilisée pour le calcul de la granulométrie montré aux figures \ref{fig:Granulometry-area}, \ref{fig:Granulometry-morpho-circle} et \ref{fig:Granulometry-morpho-octagon}.}
+ \label{fig:exemple-granulometrie}
+\end{figure}
+
+À partir du rayon moyen trouvé par granulométrie et des caractéristiques des érythrocytes énoncées à la section~\ref{identification-erythrocytes}, les rayons minimum et maximum sont définis comme étant $rayon_{moyen} (1 + 0.23)$ et $rayon_{moyen} (1 - 0.23)$.
+
+
+\subsubsection{Recherche des bords des érythrocytes et calcul du gradient associé}
+
+La construction d'ellipses nécessite la connaissance au préalable des bords des érythrocytes ainsi que du gradient associé. Cela est réalisé à l'aide d'une procédure s'apparentant au filtre de Canny.
+
+Le gradient est défini comme étant deux composantes $g_x$ et $g_y$ en chaque point correspondant aux dérivées partielles par rapport à $x$ et par rapport à $y$ d'une image $f$, comme montré par l'équation~\ref{eq:composantes-gradient}.
+
+{\setlength{\abovedisplayskip}{0pt}
+\begin{flalign} \label{eq:composantes-gradient}
+ \nabla f = \begin{pmatrix}g_x \\ g_y \end{pmatrix} = \begin{pmatrix}\partial f / \partial x \\ \partial f / \partial y \end{pmatrix}
+\end{flalign}
+
+Le filtre de Sobel permet d'obtenir une bonne approximation de ces deux composantes en appliquant deux convolutions avec les deux noyaux montrés à l'équation~\ref{eq:sobel-noyaux}. Une application sur une image réelle est montrée à la figure~\ref{fig:gradient}.
+
+{\setlength{\abovedisplayskip}{0pt}
+\begin{flalign} \label{eq:sobel-noyaux}
+ K_x = \begin{pmatrix}-1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \end{pmatrix}, \quad K_y = K_x^\top = \begin{pmatrix}-1 & -2 & -1 \\ 0 & 0 & 0 \\ 1 & 2 & 1 \end{pmatrix}
+\end{flalign}
+
+La norme euclidienne en chaque point est obtenue par l'équation~\ref{eq:gradient-norme}. La méthode de Otsu est ensuite appliquée afin de calculer un seuil qui sera utilisé pour la définition des bords par hystérèse.
+
+{\setlength{\abovedisplayskip}{0pt}
+\begin{flalign} \label{eq:gradient-norme}
+ M(x, y) = \| \nabla f \| = \sqrt{g_x^2 + g_y^2}
+\end{flalign}
+
+\begin{figure}[htbp]
+ \centering
+ \begin{subfigure}[t]{0.4\textwidth}
+ \includegraphics[width=1\linewidth]{figures/gradient-exemple.jpg}
+ \end{subfigure}
+ ~
+ \begin{subfigure}[t]{0.4\textwidth}
+ \includegraphics[width=1\linewidth,interpolate=false]{figures/gradient-exemple.pdf}
+ \end{subfigure}
+ \caption{Une cellule dont le gradient de la partie jaune est montré à droite sous la forme d'un champ de vecteurs. Les bords sont également représentés.}
+ \label{fig:gradient}
+\end{figure}
+
+Afin de ne garder que les crêtes, un algorithme de suppression des non-maxima est appliqué. Celui-ci est illustré par la figure~\ref{fig:non-maximum-suppression-schema} et va, pour chaque élément de la norme, le comparer à ses voisins en définissant l'orientation de l'arête du bord comme étant la droite perpendiculaire au gradient. Pour chaque côté de l'arête, une interpolation est calculée entre les deux éléments les plus proches de la droite ayant la même direction que la valeur du gradient de l'élément traité et passant par celui-ci. Par exemple, par rapport à la figure~\ref{fig:non-maximum-suppression-schema}, la valeur des voisins du haut est calculée comme étant $\psi = n_1 \cdot (1 - v_x/v_y) + n_2 \cdot v_x/v_y$ et celle des voisins du bas comme étant $\omega = n_4 \cdot (1 - v_x/v_y) + n_3 \cdot v_x/v_y$ où $v_x$ et $v_y$ sont les composantes du gradient au point traité $e$. Si la norme de $e$ est strictement plus grande que les valeurs $\psi$ et $\omega$, alors celui-ci sera défini comme étant un maximum. La figure~\ref{fig:nms} montre la valeur de la norme ainsi que les maxima mis en évidence.
+
+\begin{figure}[htbp]
+ \centering
+ \begin{subfigure}[t]{0.35\textwidth}
+ \includegraphics[width=1\linewidth,interpolate=false]{figures/non-maximum-suppression-schema.pdf}
+ \caption{Les voisins ($n_1$, $n_2$, $n_3$, $n_4$) de $e$ qui vont être utilisés pour déterminer si $e$ est un maximum.}
+ \label{fig:non-maximum-suppression-schema}
+ \end{subfigure}
+ ~
+ \begin{subfigure}[t]{0.35\textwidth}
+ \includegraphics[width=1\linewidth,interpolate=false]{figures/nms.png}
+ \caption{Le résultat de l'application de la suppression des non-maxima. Les maxima sont mis en évidence en blanc et la norme du gradient est montrée avec des niveaux d'intensité de gris.}
+ \label{fig:nms}
+ \end{subfigure}
+ \caption{Suppression des non-maxima.}
+ \label{fig:non-maximum-suppression}
+\end{figure}
+
+Le résultat obtenu par l'étape précédente, la suppression des non-maxima, va prendre en compte tous les bords et ceci indépendamment de la norme du gradient (inclinaison de la pente). Il est nécessaire maintenant de ne retenir que les bords les plus pertinents. Pour ce faire une recherche par hystérèse est appliquée en ne gardant, dans un premier temps, que les éléments dont la norme est supérieure au seuil obtenu précédemment par la méthode de Otsu majoré d'un pourcentage (par exemple 10~\%). Puis, dans un second temps, nous y ajoutons récursivement tous les éléments 8-connexes dont la norme est supérieure au seuil.
+
+Finalement, les zones 8-connexes dont la surface est supérieure à un facteur du rayon moyen sont supprimées afin d'éliminer les bords de faible longueur qui ne correspondent, en général, pas aux bords des érythrocytes.
+
+Le résultat de cette étape est la matrice de vecteurs définissant le gradient, dont les éléments ne faisant pas partie du bord sont mis à zéro (vecteur nul).
+
+%\subsubsection{Recherche des bords des érythrocytes}
+
+\subsubsection{Construction d'ellipses}
+
+Une méthode proche de la méthode RANSAC (\emph{RANdom SAmple Consensus}) est appliquée à la matrice résultant de l'étape précédente. Cela consiste à faire glisser une fenêtre à travers la matrice et à tirer aléatoirement, un certain nombre de fois, trois points éloignés les uns des autres. À l'aide du gradient de deux des trois points, il est éventuellement possible de construire une ellipse unique. Les ellipses ainsi construites sont alors ajoutées à l'ensemble des ellipses. Une fois la matrice entièrement traversée par la fenêtre, un score est attribué à chacune des ellipses en fonction de sa proximité aux autres ellipses. Finalement, les ellipses dont le score est trop faible, ou qui se trouvent trop proches d'une ellipse ayant un score plus élevé, sont supprimées.
+
+La taille de la fenêtre glissante est un carré dont la longueur des côtés correspond à deux fois le rayon maximum (voir section~\ref{granulometrie}). La fenêtre va balayer toute la matrice de gauche à droite et de haut en bas. Un incrément d'un quart sa dimension a été choisi. Pour chaque position un certain nombre de tirages de triplets de points valides parmi les vecteurs non-nuls est effectué. Ce nombre est égal à un coefficient multipliant le nombre courant d'éléments du bord. Celui-ci à été ajusté comme valant 6~\%. Un triplet valide correspond à trois points éloignés les uns des autres d'au moins une fraction du rayon moyen (par exemple la moitié) et avec lesquels il est possible de construire une ellipse dont les deux rayons se trouvent entre le rayon minimum et le rayon maximum.
+
+\begin{figure}[htbp]
+ \centering
+ \begin{subfigure}[t]{0.3\textwidth}
+ \includegraphics[width=1\linewidth]{figures/ellipses/cellule-bords-deformes.jpg}
+ \end{subfigure}
+ ~
+ \begin{subfigure}[t]{0.3\textwidth}
+ \includegraphics[width=1\linewidth]{figures/ellipses/cellule-bords-deformes-bords.png}
+ \end{subfigure}
+ \caption{Une cellule présentant un contour déformé fournit moins de triplets avec lesquels il est possible de construire une ellipse. La résultat de la recherche d'ellipses pour cette cellule est montré au centre de la figure~\ref{fig:exemple-ellipses-4}.}
+ \label{fig:cellule-bords-deformes}
+\end{figure}
+
+La densité de points valides dans la fenêtre à un endroit donné dépend de la qualité des bords. Ainsi, une cellule dont l'aspect s'éloigne d'une ellipse (comme montré à la figure~\ref{fig:cellule-bords-deformes}) produira moins de triplets valides. De ce fait il est nécessaire de fixer une limite du nombre de tirages dans le cas où les 6~\% de triplets valides sont difficiles voire impossibles à atteindre. Cette limite est fixée à 400~\% du nombre de vecteurs non-nuls.
+
+\begin{figure}[htbp]
+ \centering
+ \includegraphics[width=0.5\linewidth]{figures/construction-ellipse.pdf}
+ \caption{Le triplet de point $p_1$, $p_2$ et $p_3$ ainsi que les deux vecteurs du gradient $v_1$ et $v_2$ permettent possiblement la construction d'une ellipse. $d_1$ et $d_2$ sont les droites, tangentes à l'ellipse, perpendiculaires à $v_1$ respectivement $v_2$ et passant par les points associés.}
+ \label{fig:construction-ellipse}
+\end{figure}
+
+À partir de chaque triplet de points et des deux vecteurs du gradient des deux premiers points, une ellipse va tenter d'être construite (comme montrer par la figure~\ref{fig:construction-ellipse}). Tout d'abord il faut s'assurer que les deux vecteurs $v_1$ et $v_2$ pointent bien dans le bon sens, c'est-à-dire vers le centre de l'ellipse. Pour cela il faut vérifier que les sens de rotation de $p_1$ et $p_2$ donnés par $v_1$ et $v_2$ par rapport au pivot $p_0$ soient différents et que l'angle formé entre les deux droites $d_1$ et $d_2$ soit strictement inférieur à $\pi$. La figure~\ref{fig:construction-ellipse-vecteurs-valides} illustre ces différents cas.
+
+\begin{figure}[htbp]
+ \centering
+ \begin{subfigure}[t]{0.3\textwidth}
+ \includegraphics[width=1\linewidth]{figures/ellipses/construction-ellipse-vecteurs-valides-3.pdf}
+ \caption{Triplet invalide : sens contraire des vecteurs par rapport à $p_0$.}
+ \label{fig:construction-ellipse-vecteurs-valides-3}
+ \end{subfigure}
+ ~
+ \begin{subfigure}[t]{0.3\textwidth}
+ \includegraphics[width=1\linewidth]{figures/ellipses/construction-ellipse-vecteurs-valides-2.pdf}
+ \caption{Triplet invalide : $\alpha \geqslant \pi$.}
+ \label{fig:construction-ellipse-vecteurs-valides-2}
+ \end{subfigure}
+ ~
+ \begin{subfigure}[t]{0.3\textwidth}
+ \includegraphics[width=1\linewidth]{figures/ellipses/construction-ellipse-vecteurs-valides-1.pdf}
+ \caption{Triplet valide : $\alpha < \pi$.}
+ \label{fig:construction-ellipse-vecteurs-valides-1}
+ \end{subfigure}
+ \caption{Cas de triplets valides et invalides.}
+ \label{fig:construction-ellipse-vecteurs-valides}
+\end{figure}
+
+Tout d'abord le point $p_0$ est calculé comme montré par les équations~\ref{eq:p0-debut} à~\ref{eq:p0-fin}. Si $m_1 = m_2$ (les droite $d_1$ et $d_2$ sont parallèles), alors $p_0$ est défini comme étant le point à l'infini. Si les conditions de la figure~\ref{fig:construction-ellipse-vecteurs-valides-1} sont respectées, alors une conique est construite à partir des quatre points $p_0$, $p_1$, $p_2$ et $p_3$. Si cette conique est une ellipse valide, alors elle est ajoutée à l'ensemble des ellipses.
+
+{\setlength{\abovedisplayskip}{0pt}
+\begin{flalign}
+ \label{eq:p0-debut}
+ m_1 &= -v_{1_x} / v_{1_y} \\
+ m_2 &= -v_{2_x} / v_{2_y} \\
+ b_1 &= -m_1 p_{1_x} + p_{1_y} \\
+ b_2 &= -m_2 p_{2_x} + p_{2_y} \\
+ d_1(x) &= y = m_1 x + b_1 \\
+ d_2(x) &= y = m_2 x + b_2 \\
+ p_{0_x} &= -(b_1 - b_2) / (m_1 - m_2) \\
+ p_{0_y} &= -(m_2 b_1 - m_1 b_2) / (m_1 - m_2) \label{eq:p0-fin}
+\end{flalign}
+
+La construction d'une ellipse est décrite ci-après. Dans le repère projectif $\{\upsilon_0, \upsilon_1, \upsilon_2, \upsilon_3\}$ lié à la conique, $\upsilon_0 = \begin{pmatrix}1 & p_{0_x} & p_{0_y}\end{pmatrix}, \; \upsilon_1 = \begin{pmatrix}1 & p_{1_x} & p_{1_y}\end{pmatrix}, \; \upsilon_2 = \begin{pmatrix}1 & p_{2_x} & p_{2_y}\end{pmatrix}, \; \upsilon_3 = \begin{pmatrix}1 & p_{3_x} & p_{3_y}\end{pmatrix}$. Si $p_0$ est à l'infini alors $\upsilon_0 = \begin{pmatrix}0 & * & *\end{pmatrix}$. L'équation de la conique est la suivante :
+
+{\setlength{\abovedisplayskip}{0pt}
+\begin{flalign}
+ T^2 &= X Y \\
+ S &= \begin{pmatrix}1 & 0 & 0 \\ 0 & 0 & -1/2 \\ 0 & -1/2 & 0\end{pmatrix}
+\end{flalign}
+
+Changement de repère projectif par la matrice de passage $P$ ($3 \times 3$) :
+
+{\setlength{\abovedisplayskip}{0pt}
+\begin{flalign}
+ P &= \begin{pmatrix}
+ det(\upsilon_3, \upsilon_1, \upsilon_2) \, \upsilon_0 \\
+ det(\upsilon_0, \upsilon_3, \upsilon_2) \, \upsilon_1 \\
+ det(\upsilon_0, \upsilon_1, \upsilon_3) \, \upsilon_2
+ \end{pmatrix}
+\end{flalign}
+
+Matrice de la conique dans le repère projectif de référence :
+
+{\setlength{\abovedisplayskip}{0pt}
+\begin{flalign}
+ \begin{pmatrix} A & B & D \\ B & C & E \\ D & E & F\end{pmatrix} &= P \cdot S^{-1} \cdot P^\top
+\end{flalign}
+
+Le centre est défini comme suit :
+
+{\setlength{\abovedisplayskip}{0pt}
+\begin{flalign}
+ (\alpha, \; \beta) = (B/A, \; D/A)
+\end{flalign}
+
+Les tailles des deux rayons sont données par $1/\sqrt{\lambda}$ et $1/\sqrt{\mu}$ où $\lambda$ et $\mu$ sont les valeurs propres de la matrice $Q$. Les vecteurs propres de $Q$ donnent les directions des deux axes de l'ellipse. La matrice $Q$ est calculée comme suit :
+
+{\setlength{\abovedisplayskip}{0pt}
+\begin{flalign}
+ Ã &= E^2 - C F + (B F - E D) \alpha + (C D - B E) \beta \\
+ Q &= Ã^{-1} \begin{pmatrix}A F - D^2 & B D - A E \\
+ B D - A E & A C - B^2\end{pmatrix}
+\end{flalign}
+
+
+\subsubsection{Calcul du score des ellipses}