+À partir du rayon moyen trouvé par granulométrie et des caractéristique 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éfinit comme étant deux composantes $g_x$ et $g_y$ en chaque point correspondant aux dérivés partielles en $x$ et en $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 par 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 obtenu 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]{img/gradient-exemple.jpg}
+ \end{subfigure}
+ ~
+ \begin{subfigure}[t]{0.4\textwidth}
+ \includegraphics[width=1\linewidth,interpolate=false]{img/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 le 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 tangente perpendiculaire au gradient. Pour chaque coté de l'arête, une interpolation est calculée entre les deux éléments les plus proche de la droite ayant la même direction que le gradient et passant par l'élément traité. Par exemple, par rapport à la figure~\ref{fig:non-maximum-suppression-schema}, la valeur des voisins du haut est calculée comme étant $\tau = n_1 \cdot (1 - v_x/v_y) + n_2 \cdot v_x/v_y$ et celle des voisins du bas comme étant $\upsilon = 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 $\tau$ et $\upsilon$ alors celui-ci sera définit comme étant un maxima. La figure~\ref{fig:nms} montre la valeur de la norme ainsi que les maximas mis en évidence.
+
+\begin{figure}[htbp]
+ \centering
+ \begin{subfigure}[t]{0.35\textwidth}
+ \includegraphics[width=1\linewidth,interpolate=false]{img/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éterminé si $e$ est un maxima}
+ \label{fig:non-maximum-suppression-schema}
+ \end{subfigure}
+ ~
+ \begin{subfigure}[t]{0.35\textwidth}
+ \includegraphics[width=1\linewidth,interpolate=false]{img/nms.png}
+ \caption{Le résultat de l'application de la suppression des non-maxima. Les maximas sont mis en évidence en blanc et la norme du gradient est montré 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 garder que les bords les plus pertinent, 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.
+
+%\subsubsection{Recherche des bords des érythrocytes}
+
+\subsubsection{Construction d'ellipses}
+
+L'étape précédente nous fournit une matrice de vecteurs définissant le gradient. Les éléments dont le vecteur est non-nul constituent les bords des érythrocytes.
+
+Une méthode proche de la méthode RANSAC~\ref{} (\emph{RANdom SAmple Consensus}) est appliquée qui 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 point 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 trouve trop proche 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 cotés correspond au 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 de sa dimension a été choisi. Pour chaque position un certain nombre de tirage de triplet de points non-égaux parmi les vecteurs non-nuls est effectué, ce nombre est égal à un coefficient multipliant le nombre courant d'élément du bord. Celui ci à été ajusté comme valant 1.
+
+\begin{figure}[htbp]
+ \centering
+ \includegraphics[width=0.6\linewidth]{img/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.}
+ \label{fig:construction-ellipse}
+\end{figure}
+
+À partir de chaque triplet de point et des deux vecteurs du gradient au 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
+
+\begin{figure}[htbp]
+ \centering
+ \begin{subfigure}[t]{0.4\textwidth}
+ \includegraphics[width=1\linewidth]{figures/ellipses/example-1-green-filtered.jpg}
+ \caption{}
+ \label{}
+ \end{subfigure}
+ ~
+ \begin{subfigure}[t]{0.4\textwidth}
+ \includegraphics[width=1\linewidth]{figures/ellipses/example-2-edges.png}
+ \caption{}
+ \label{}
+ \end{subfigure}
+ ~
+ \begin{subfigure}[t]{0.4\textwidth}
+ \includegraphics[width=1\linewidth]{figures/ellipses/example-3-all-ellipses.jpg}
+ \caption{}
+ \label{}
+ \end{subfigure}
+ ~
+ \begin{subfigure}[t]{0.4\textwidth}
+ \includegraphics[width=1\linewidth]{figures/ellipses/example-4-ellipses.jpg}
+ \caption{}
+ \label{}
+ \end{subfigure}
+ \caption{}
+ \label{}
+\end{figure}